Codeforces Round #441 (Div. 2, by Moscow Team Olympiad)

来源:互联网 发布:linux 更改umask 编辑:程序博客网 时间:2024/05/16 07:18

哈哈,又崩了,还是别熬夜了吧,困到不行,到最后脑子不起作用,水题都被写成很复杂的题了

本来就是一个水题,枚举100个值,判断一下就过了,结果我写了个9层dfs,而且还写wa了,估计不写wa估计也是个TLE

写题之前一定要三思,很多时候题目本没有想想中的那么麻烦

但是,为什么一开始的dfs不是TLE而是WA呢?

果然又是等号问题,还是写题习惯啊

最后,审题也错了,升序,这个也会WA啊,天哪,熬夜伤身啊

从今天起,尽量准时睡觉,早睡早起,加油

其实说真的,这次开头是真好,rank3,然而终究是抵挡不过疲劳的


然而并没有什么卵用,还是太弱了

A. Trip For Meal

思路:就是个简单三数比大小,先比两数,再比第三数

#include <iostream>#include <cstdio>#include <algorithm>#include <vector>#include <cstring>#include <map>#include <cmath>#include <string>#include <queue>#include <stack>using namespace std;const int maxn = 1e5+10;int main(){    int n,a,b,c;    while(scanf("%d%d%d%d",&n,&a,&b,&c)!=EOF)    {        int min1 = min(a,b);        int min2 = min(min1,c);        if(n==1)        {            printf("0\n");        }        else        {            int sum = (n-2) * min2 + min1;            printf("%d\n",sum);        }    }    return 0;}


B. Divisiblity of Differences

思路:按模数分组,输出组内元素大于特定值的组内任意特定个数

#include <iostream>#include <cstdio>#include <algorithm>#include <vector>#include <cstring>#include <map>#include <cmath>#include <string>#include <queue>#include <stack>using namespace std;const int maxn = 1e5+10;int a[maxn];vector<int> mo[maxn];int main(){    int n,k,m;    while(scanf("%d%d%d",&n,&k,&m)!=EOF)    {        for(int i=0;i<m;i++)        {            mo[i].clear();        }        for(int i=0;i<n;i++)        {            scanf("%d",&a[i]);            mo[a[i]%m].push_back(a[i]);        }        int se;        for(se=0;se<m;se++)        {            if((int)(mo[se].size())>=k)            {                break;            }        }        if(se == m)        {            printf("No\n");        }        else        {            printf("Yes\n");            for(int i=0;i<(k-1);i++)            {                printf("%d ",mo[se][i]);            }            printf("%d\n",mo[se][k-1]);        }    }    return 0;}

C. Classroom Watch

思路:统一100个数的模拟,降序排列

#include <iostream>#include <cstdio>#include <algorithm>#include <vector>#include <cstring>#include <map>#include <cmath>#include <string>#include <queue>#include <stack>using namespace std;const int maxn = 1e5+10;int n;vector <int> resu;/*int sum,n;void countsum(int pos,int le,int tempsum){    if(sum>0)    {        return ;    }    //cout << pos << endl;    if(pos == 0)    {        int re = le - tempsum * 10;        if(re>0&&re<20&&re%2==0)        {            sum++;            //cout << 1 << endl << tempsum*10 + re/2 << endl;            printf("1\n%d\n",tempsum*10 + re/2);            //resu.push_back(tempsum*10 + re/2);        }        return ;    }    for(int i=9;i>=0;i--)    {        countsum(pos-1,le-i,tempsum*10+i);    }}*/int countnum(int k){    int re = k;    while(k)    {        re += k%10;        k /= 10;    }    return re;}int main(){    /*for(n=1;n<100;n++)    {*/    while(scanf("%d",&n)!=EOF)    {/*        if(n<10)        {            if(n%2==0)            {                printf("1\n%d\n",n/2);                //cout << n/2 << endl;            }            else            {                printf("0\n");            }        }        else        {            //resu.clear();            sum = 0;            int len = 0;            int temp = n;            int maxre;            while(temp)            {                len++;                maxre = temp % 10;                temp /= 10;            }            //cout << len;            //cout << maxre << endl;            for(int i=maxre;i>=0;i--)            {                if(sum>0)                {                    break;                }                countsum(len-2,n-i,i);            }            //printf("%d\n",sum);            if(sum==0)            {                printf("%d\n",0);            }*/            /*for(int i=0;i<sum;i++)            {                printf("%d\n",resu[i]);            }*/    //    }        resu.clear();        int p = n;        //int t = 0;        int sum = 0;        while(p>0&&p>(n-100))        {            //t++;            if(n==countnum(p))            {                sum++;                resu.push_back(p);            }            p--;        }        printf("%d\n",sum);        for(int i=0;i<sum;i++)        {            printf("%d\n",resu[sum-i-1]);        }    }    return 0;}
d题思路也是水题呢。但不想看了,累
不多说了,晚安吧

文章地址:http://blog.csdn.net/owen_q/article/details/78254386

阅读全文
1 0
原创粉丝点击