Codeforces Round #276 (Div. 2) 解题报告_html/css_WEB-ITnose

WBOY
Freigeben: 2016-06-24 11:54:36
Original
977 Leute haben es durchsucht

题目地址:http://codeforces.com/contest/485

A题:Factory

按照过程模拟,并判断是否出现循环,如果出现循环,说明肯定不可能,直接跳出。

代码如下:

#include <iostream>#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;int _hash[100001];int main(){    int a, m, i, flag=0;    memset(_hash,0,sizeof(_hash));    scanf("%d%d",&a,&m);    a=a%m;    _hash[a]=1;    while(1)    {        a=a*2%m;        if(a==0)        {            flag=1;            break;        }        if(_hash[a])        {            break;        }        _hash[a]=1;    }    if(!flag) puts("No");    else        puts("Yes");    return 0;}</algorithm></string.h></stdio.h></iostream>
Nach dem Login kopieren

B题:Valuable Resources

直接找行与列的最大值和最小值,不多说

代码如下:

#include <iostream>#include <cstdio>#include <string>#include <cstring>#include <stdlib.h>#include <math.h>#include <ctype.h>#include <queue>#include <map>#include <set>#include <algorithm>using namespace std;#define LL __int64const LL INF=1e11;int main(){    LL n, x, y, max1, max2, min1, min2, s;    while(scanf("%I64d",&n)!=EOF)    {        max1=-INF;        max2=-INF;        min1=INF;        min2=INF;        while(n--)        {            scanf("%I64d%I64d",&x,&y);            max1=max(max1,x);            max2=max(max2,y);            min1=min(min1,x);            min2=min(min2,y);        }        s=max(max1-min1,max2-min2);        s*=s;        printf("%I64d\n",s);    }    return 0;}</algorithm></set></map></queue></ctype.h></math.h></stdlib.h></cstring></string></cstdio></iostream>
Nach dem Login kopieren

C题:Bits

贪心

从小的开始,不断从低位开始加1,直到大于较大数为止。

代码如下:

#include <iostream>#include <cstdio>#include <string>#include <cstring>#include <stdlib.h>#include <math.h>#include <ctype.h>#include <queue>#include <map>#include <set>#include <algorithm>using namespace std;#define LL __int64const LL INF=1e11;int s[1000];int main(){    int n, len, max1;    LL x, y, z1, z, i;    scanf("%d",&n);    while(n--)    {        scanf("%I64d%I64d",&x,&y);        z1=x;        len=0;        memset(s,0,sizeof(s));        while(z1)        {            s[len++]=z1%2;            z1/=2;        }        z=x;        for(i=0;iy)                {                    printf("%I64d\n",z);                    break;                }                z=x;            }        }    }    return 0;}</algorithm></set></map></queue></ctype.h></math.h></stdlib.h></cstring></string></cstdio></iostream>
Nach dem Login kopieren

D题:Maximum Value

对于x来说,在k*x~(k+1)*x这段范围内,余数最大的肯定是最接近(k+1)*x的数,所以可以预处理出来所有最接近当前数的数,然后分别枚举每个数的倍数,并不断更新即可。

代码如下:

#include <iostream>#include <cstdio>#include <string>#include <cstring>#include <stdlib.h>#include <math.h>#include <ctype.h>#include <queue>#include <map>#include <set>#include <algorithm>using namespace std;#define LL __int64const int INF=0x3f3f3f3f;int _hash[2100000], dp[2100000], a[2100000];int main(){    int n, i, j, x, min1, ans, max1;    while(scanf("%d",&n)!=EOF)    {        memset(_hash,0,sizeof(_hash));        min1=INF;        max1=-1;        for(i=0; i<n i scanf _hash min1="min(min1,x);" max1="max(max1,x);" for if dp else ans="0;" j continue break printf return>  <br>  <br>  <p></p> </n></algorithm></set></map></queue></ctype.h></math.h></stdlib.h></cstring></string></cstdio></iostream>
Nach dem Login kopieren
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!