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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

CF1063C Dwarves, Hats and Extrasensory Abilities

發(fā)布時間:2023/12/3 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CF1063C Dwarves, Hats and Extrasensory Abilities 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

CF1063C Dwarves, Hats and Extrasensory Abilities

題意:

首先題目會給出 n ,表示要輸入多少點。 然后你輸出n 個點的坐標,每輸出一個點會告訴你這個點的顏色是黑色或者白色。 最后你需要輸出兩個點的坐標代表一條直線,這條直線能夠?qū)⒛銊倓偨o出的點分成兩份,一份全都是黑色的點,另一份全都是白色的點。

所有的點不能重疊,所有點不能和最后輸出的直線重疊,每個點的黑白是隨機給出的,你需要保證你輸出的數(shù)據(jù)有解并輸出解。

題解:

基本上交互都跟二分有關系
我一開始一點頭緒都沒有,但我們可以這樣想,我們可以在一條線上選黑白點,然后不斷詢問中點位置的顏色,不斷二分距離范圍。
就比如如果(0,0)是白色,下一次就問(1e9/2,0),如果是黑色,就問(1e9/2/2,0)是什么顏色,這樣二分找,可以將黑白分隔開,最后答案就是最后兩個黑白快的中點
log2(1e9)=29.897353,n最大30,有可能會被卡?我提交后還真是,在59這個點瘋狂被卡,我猜應該是二分到最后剛好用完沒地方了,導致最后答案與某個黑白塊重疊,這咋整?
我突然想到一個方法,我們最后的答案想的是二分最后一下,得到一個整數(shù)解,但題目要求你輸出的是直線,而這個直線與黑白所在直線的交點不用是整數(shù)點,所以我們可以輸出最后一個白塊下方的點,最后一個黑塊上方的點,這樣的直線也正好平分黑白點,而且不會占用整數(shù)點

代碼:

#include <bits/stdc++.h> #include <unordered_map> #define debug(a, b) printf("%s = %d\n", a, b); using namespace std; typedef long long ll; typedef unsigned long long ull; typedef pair<int, int> PII; clock_t startTime, endTime; //Fe~Jozky const ll INF_ll= 1e18; const int INF_int= 0x3f3f3f3f; void read(){}; template <typename _Tp, typename... _Tps> void read(_Tp& x, _Tps&... Ar) {x= 0;char c= getchar();bool flag= 0;while (c < '0' || c > '9')flag|= (c == '-'), c= getchar();while (c >= '0' && c <= '9')x= (x << 3) + (x << 1) + (c ^ 48), c= getchar();if (flag)x= -x;read(Ar...); } template <typename T> inline void write(T x) {if (x < 0) {x= ~(x - 1);putchar('-');}if (x > 9)write(x / 10);putchar(x % 10 + '0'); } void rd_test() { #ifdef ONLINE_JUDGE #elsestartTime = clock ();freopen("data.in", "r", stdin); #endif } void Time_test() { #ifdef ONLINE_JUDGE #elseendTime= clock();printf("\nRun Time:%lfs\n", (double)(endTime - startTime) / CLOCKS_PER_SEC); #endif } map<int,int>mp; int main() {rd_test();int n;cin>>n;int l=0,r=1e9;printf("0 1\n");mp[0]=1;fflush(stdout);int lf=-1,f=-1,rf=-1;string s;cin>>s;if(s=="black")lf=0;else lf=1;for(int i=1;i<n;i++){int mid=l+r+1>>1;printf("%d 1\n",mid);fflush(stdout);mp[mid]=1;cin>>s;if(s=="black")f=0;else f=1;if(f==lf)l=mid;else if(f==rf)r=mid;else if(rf==-1){rf=f;r=mid;}}printf("%d %d %d %d\n",l,0,r,2);//Time_test(); }

總結(jié)

以上是生活随笔為你收集整理的CF1063C Dwarves, Hats and Extrasensory Abilities的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。