Heim  >  Artikel  >  Web-Frontend  >  Codeforces Round #262 (Div. 2)-A,B,C,D_html/css_WEB-ITnose

Codeforces Round #262 (Div. 2)-A,B,C,D_html/css_WEB-ITnose

WBOY
WBOYOriginal
2016-06-24 11:59:18940Durchsuche

A. Vasya and Socks

水题就不用多说了,直接暴力枚举就完事了。

#include <iostream>#include<stdio.h>#include<stdlib.h>#include<time.h>#include<vector>#include<algorithm>#include<string.h>using namespace std;#define LL __int64int main(){    int n,k;    while(~scanf("%d%d",&n,&k))    {        int m=n;        int ans=n;        int yu=0;        while(m)        {            m=m+yu;            yu=m%k;            m=m/k;            ans+=m;        }        cout  <br> B. Little Dima and Equation  <p></p>  <p>也不用说,水题一个,直接枚举s(x),然后得到x,然后根据x推出s(x)是不是合适。</p>  <p>当时把81写成了72,不由的十分悲伤,sad.</p>  <p></p>  <pre name="code" class="sycode">#include <iostream>#include<stdio.h>#include<stdlib.h>#include<time.h>#include<vector>#include<algorithm>#include<string.h>using namespace std;#define LL __int64#define INF 1000000000vector<int>vec;LL pows(LL x,LL y){    LL ans=1;    while(y--)ans=ans*x;    return ans;}int dus(LL x){    int ans=0;    while(x)    {        ans=ans+x%10;        x=x/10;    }    return ans;}int main(){    int n,k;    int a,b,c;    while(~scanf("%d%d%d",&a,&b,&c))    {        LL ans=0;        vec.clear();        for(int i=1;i=INF)break;            if(ans  <br> C. Present  <p></p>  <p>二分+贪心。也是一种水题的表现形式。。。。</p>  <p>二分一下结果,贪心看当前结果能不能达到。</p>  <p></p>  <pre name="code" class="sycode">#include <iostream>#include<stdio.h>#include<stdlib.h>#include<time.h>#include<vector>#include<algorithm>#include<string.h>using namespace std;#define LL __int64#define INF 1000000000#define maxn 220000LL a[maxn];LL b[maxn];LL flag[maxn];LL n,w;LL qiu(LL x){    memset(flag,0,sizeof(flag));    for(LL i=1;im)r=mid;            else l=mid+1;            mid=(l+r)/2;        }        mid--;        cout  <br> D. Little Victor and Set  <p></p>  <p>写这个题的时候要多悲剧有多悲剧,竟然在我认为最不可能错的地方写错了。</p>  <p>我很悲伤.</p>  <p>n=r-l+1;</p>  <p>若n  </p>
<p>若k  </p>
<p>当k=1时,很明显取l。</p>  <p>当k=2时,很明显取两个相邻的,并且只有末位不同的数,他们的异或结果为1.</p>  <p>当k=3时,第一个数取l,然后假如结果为0,算出剩下两个数的最小值。如果两个数最大的</p>  <p>不大于r,那我们就取这三个数,否则取两个数使得结果为1.</p>  <p>当k>=4时:</p>  <p>对于下面两个数交替处:</p>  <p>..........0111110                  k-2</p>  <p>..........0111111                  k-1</p>  <p>..........1000000                  k</p>  <p>..........1000001                  k+1</p>  <p>很明显我们可以看出来k-2,k-1,k,k+1的异或值为0。</p>  <p>因为n>20,我们一定能找出这种k。</p>  <p></p>  <pre name="code" class="sycode">#include <iostream>#include<stdio.h>#include<stdlib.h>#include<time.h>#include<vector>#include<algorithm>#include<string.h>using namespace std;#define LL __int64#define INF 1000000000#define maxn 220000void dos1(LL l,LL r,LL k){    LL n=r-l+1;    LL st=((LL)1)k)continue;        if(res>ans)        {            res=ans;            rst=i;        }    }    len=0;    for(LL i=0; i<n i if cout for len-- else dos2 l r ks>=0; i--)    {        if((l&(((LL)1)>i);            n=(n=l&&k+1r)return dos2(l,k-1,ks);        }    }    return 0;}void dos3(LL l,LL r,LL k){    if(k==1)    {        cout=0; i--)    {        if(l&(((LL)1)  <br>  <br>  <p></p>  <p><br> </p>  <p><br> </p>  <p><br> </p>  <p><br> </p>  <p><br> </p>  <p><br> </p>  <p><br> </p>  <p><br> </p> </n></string.h></algorithm></vector></time.h></stdlib.h></stdio.h></iostream>
Stellungnahme:
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