第七周学习笔记

思路:

得益于几星期前琢磨的sort的cmp用法,做这题的时候也用到了贪心思想,整一个结构体数组,先按半径从大到小进行排序。数组v初始都为0表示都可以种在一起,这里的v[i]=0的含义是第i棵可以跟上一棵树种在一起,不能则设v[i]=1。所以首先默认先种下半径最大的那棵树,再往下寻找跟他不相交的树,如果相交则该树的数组v值为1,后面再根据数组v(值为0)的条件种下第二棵,再相对这种下的第二棵树寻找与他不相交的(ps:此时的不相交真正的含义为与第一第二棵都不能相交).....后面以此类推,便可求出最大种植面积。

源代码:
#include
#include
#include
using namespace std;
struct tree{
    int x,y,r;
}a[1000];
bool cmp(tree a,tree b){
    return a.r>b.r;
}
double dist(int x1,int y1,int x2,int y2){
    return sqrt((x1-x2)*(x1-x2)-(y1-y2)*(y1-y2));
}
int main(){
    int n,v[1000];
    double d;
    cin>>n;
    for(int i=0;i>a[i].x>>a[i].y>>a[i].r;
        v[i]=0;//默认都可以种在一起 
    }
    sort(a,a+n,cmp);
    int s=0;
    for(int i=0;i
分析:

原本想这个用回溯那太简单了。。。可是我不会。。。后来听说会超时就彻底放弃了。后面复盘的时候对这题还是不甘心,虽然作业是抄的但是也终于是明白了这里为什么可以用dp做。
设两个数组a,b,数组a表示单数项,b数组代表双数项,均为动态数组。初始设a数组里的数据均是1,表示第一列取到的1,2,3,4的可能都是1,b数组先不管默认都为0。然后利用数组a开始计算第二项的可能性,因为“偶数项都比前一项小”,所以从n开始累加sum,且数组b最大项只能取到n-1,初始默认sum=a[n](为当前b[n-1]的所有可能性),则在给出的测试用例n=4情况下,b[3]=a[4]=1(当第二项为3时,前一项可能性一定只有只有1个为4),而b[2]则是有两个则为a[3]+a[4] (sum=a[4]-->sum+=a[3]).....以此类推可得出第二项的数组b,相同的方法利用数组b计算新单数项的数组a(3).....直到算完最后一项的所有可能性,判断输入的m的奇偶性,再相应地对数组a或者数组b中的数据进行逐一累加,得出来的总数即为所求摆动序列所有可能性的个数。

源代码:
#include
using namespace std;
int m, n;
int main() {
    long long ans = 0;
    cin >> m >> n;
    long long a[1001], b[1001];
    memset(a, 0, sizeof(a));
    memset(b, 0, sizeof(b));
    for(int i = 1; i <= n; i++) a[i] = 1;
    a[1] = 0;
    for(int i = 2; i <= m; i++) {
        if(i%2) {
            long long sum = b[1];
            for(int j = 2; j <= n; j++) {
                a[j] = sum % 10000;
                sum = (sum + b[j]) % 10000;
            }
        } else {
            long long sum = a[n];
            for(int j = n - 1; j >= 1; j--) {
                b[j] = sum % 10000;
                sum = (sum + a[j]) % 10000;
            }
        }
    }
    if(m%2) {
        for(int i = 1; i <= n; i++)
            ans = (ans + a[i]) % 10000;
    } 
    else {
        for(int i = 1; i <= n; i++)
            ans = (ans + b[i]) % 10000;
    }
    cout<

你可能感兴趣的:(第七周学习笔记)