日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CF835E-The penguin‘s game【交互】

發布時間:2023/12/3 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CF835E-The penguin‘s game【交互】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

正題

題目鏈接:https://www.luogu.com.cn/problem/CF835E


題目大意

長度為nnn的序列中有兩個yyy其他都是xxx,給出n,x,yn,x,yn,x,y。你每次可以詢問一個下標集合的數字異或和,要求在191919次以內找到這兩個yyy的位置。
1≤n≤1000,1≤x,y≤109,x≠y1\leq n\leq 1000,1\leq x,y\leq 10^9,x\neq y1n1000,1x,y109,x?=y


解題思路

考慮詢問一個集合我們會得到的答案情況,如果集合大小為奇數則為yyy或者xxx依次表示yyy分別在一個集合內或者都在某個集合中,而偶數則是xxoryx\ xor\ yx?xor?y或者000

現在變為了我們可以詢問一個集合回答兩個yyy都在一個集合內或外或者一個在內一個在外。

考慮到兩個數字的下標肯定有一個二進制位不同,我們可以枚舉這個位然后詢問這個位是111的元素。這樣我們總能找到一個集合使得一個yyy在內,一個yyy在外。

如果在這個兩個集合里面暴力問的話算上前面的次數大概是3log?n3\log n3logn的,考慮優化。

發現對于前面的詢問,我們可以得到兩個集合下標的異或值,所以如果我們問出一個位置再異或出另一個就好了。

因為是191919次所以我們考慮找比較小的那個集合的值就好了。


code

#include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int N=1100; int n,x,y,cnt,p[N],ansa,ansb; void Ask(int l,int r){if(l==r){ansa=p[l];return;}int mid=(l+r)>>1,ans,flag=0;printf("? %d",mid-l+1);for(int i=l;i<=mid;i++)printf(" %d",p[i]);putchar('\n');fflush(stdout);scanf("%d",&ans);if((mid-l+1)&1)flag=(ans==y);else flag=(ans==(x^y));if(flag)Ask(l,mid);else Ask(mid+1,r);return; } void Find(int z){cnt=0;for(int i=1;i<=n;i++)if((i/z)&1)p[++cnt]=i;if(cnt>(n/2)){cnt=0;for(int i=1;i<=n;i++)if(!((i/z)&1))p[++cnt]=i;}Ask(1,cnt); } int main() {scanf("%d%d%d",&n,&x,&y);bool has=0;for(int z=1;z<=n;z<<=1){int L=0,ans,flag=0;putchar('?');for(int i=1;i<=n;i++)if((i/z)&1)L++;printf(" %d",L);for(int i=1;i<=n;i++)if((i/z)&1)printf(" %d",i); putchar('\n');fflush(stdout);scanf("%d",&ans);if(L&1)flag=(ans==y);else flag=(ans==(x^y));if(flag&&!has)Find(z),has=1;ansb^=z*flag;}ansb^=ansa;if(ansa>ansb)swap(ansa,ansb);printf("! %d %d\n",ansa,ansb);fflush(stdout);return 0; }

總結

以上是生活随笔為你收集整理的CF835E-The penguin‘s game【交互】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。