codeforces_240_div1解题报告

来源:互联网 发布:淘宝店铺类目是什么 编辑:程序博客网 时间:2024/06/04 19:51

第一次做div1的题,然后感觉被虐了。。。

A:简单题,构造一个数列就行

#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#include<iostream>#include<algorithm>#include<queue>#include<stack>#include<vector>#include<map>#include<set>#include<deque>#include<bitset>#define ll __int64#define inf (1<<30)#pragma comment(linker, "/STACK:102400000,102400000")using namespace std;int main(){    int i,j,k;    int n,m,t;    while(scanf("%d%d",&n,&k)!=EOF)    {        if(k<n/2) {printf("-1\n");continue;}        if(n==1&&k!=0) {printf("-1\n");continue;}        if(n/2>=1)            printf("%d %d",k-(n/2-1),(k-(n/2-1))*2);        int now=300000000;        for(i=2;i<=n/2;i++)        {            printf(" %d %d",now,now+1);            now+=2;        }        if(n%2==1)        {            if(n/2>=1)            printf(" %d",now);            else printf("%d",now);        }        printf("\n");    }}


B:DP,比较水的DP,2000*2000应该不会超时的
#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#include<iostream>#include<algorithm>#include<queue>#include<stack>#include<vector>#include<map>#include<set>#include<deque>#include<bitset>#define ll __int64#define inf (1<<30)#define MOD 1000000007#pragma comment(linker, "/STACK:102400000,102400000")using namespace std;ll dp[2005][2005];vector<int>V[2005];void init(int n){    int i,j;    for(i=0;i<=n;i++)    {        V[i].clear();    }    for(i=1;i<=n;i++)    {        for(j=1;j<=i;j++)        {            if(i%j==0)            {                V[i].push_back(j);            }        }    }}int main(){    int i,j,k;    int n,m,t;    while(scanf("%d%d",&n,&k)!=EOF)    {        init(n);        memset(dp,0,sizeof(dp));        for(i=1;i<=n;i++)        {            dp[1][i]=1;        }        for(i=2;i<=k;i++)        {            for(j=1;j<=n;j++)            {                ll sum=0;                for(m=0;m<V[j].size();m++)                {                    sum+=dp[i-1][V[j][m]];                    sum%=MOD;                }                dp[i][j]=sum%MOD;            }        }        ll all=0;        for(i=1;i<=n;i++)        {            all+=dp[k][i];            all%=MOD;        }        printf("%I64d\n",all);    }}


0 0
原创粉丝点击