懶癌 解題報告

2022-04-29 20:54:09 字數 1278 閱讀 6811

先考慮-1的情況,如果乙個人知道了自己是特殊的位置,但是\(b>c\),那麼就無法判斷了

其次,我們考慮一開始有乙個不合法的\(a\)的集合,也就是沒有特殊位置的集合\(f_0\)

如果在時間\(1\),某乙個人的視角下剛好和這個特殊位置重合了(就是除他自己的顏色),那麼它就可以報出這個不合法的情況,遊戲結束。

如果在時間\(1\)沒有發現**,所有人可以得到新的資訊:沒有人剛好重合。那麼此時可以擴充套件不合法的集合,改變其中的\(f_0\)中任何乙個\(a\)的乙個位置,在此時仍是不合法的。

以此類推,每個時間過去獲得資訊並擴充套件不合法的集合。

現在給了你乙個\(a\),需要求出它出現的最小時間。

考慮乙個不合法集合是什麼樣子的

\[a_i+b_i\le a_\le a_i+c_i

\]那麼可以通過改變最少的\(a\)來達到這個不合法集合(因為每個時間可以變動乙個位置)

把條件變一下,令\(b_i,c_i\)代表字首和(向右移動一位)

那麼可以變成對無序二元組\((i,j)\)有

\[a_i-b_i\le a_j-b_j\\

a_i-c_i\ge a_j-c_j

\]可以投影到二維平面做最長不上公升子串行

code:

#include #include #include #define ll long long

const int n=1e5+10;

template void read(t &x)

int n,cnt;

ll a[n],b[n],c[n],bee[n];

struct koito_yuu

koito_yuu(ll a,ll b)

bool friend operator

}yuu[n];

int main()

for(int i=2;i<=n;i++) b[i]+=b[i-1],c[i]+=c[i-1];

for(int i=1;i<=n;i++) yuu[i]=koito_yuu(a[i]-b[i],a[i]-c[i]);

std::sort(yuu+1,yuu+1+n);

for(int i=1;i<=n;i++)

printf("%d\n",n-cnt);

return 0;

}

2019.3.31

I 懶癌患者大四狗

哈哈.開了個部落格,都快一星期了才想起來翹個班寫一寫,實在是慚愧。想來這個部落格也不是寫給別人看的 當然有幫到別人自然是好事 所以正式開始寫前胡言亂語隨意扯淡幾句,算是給自己乙個交代。開部落格的原因純粹是因為以後想走技術,然而記憶力太差 就是懶得記 想把自己每次學習的想法和觀點以影象文字形式記下來,...

懶癌晚期患者的自白書

主播 朱峰 姝琦 張珺 張樂 姝琦 後期 朱峰 這是乙個新的話題系列,我們想通過這個系列,跟大家介紹下生活中不太常見或常用,但卻可以大大提高生活品質 節省家務勞動精力的小東西 小電器。第一期節目我們給大家介紹下客廳裡面可能會用到的一些東西,尤其是,姝琦同學最近又養了乙隻貓,兩隻貓的房間,如何及時清掃...

懶癌治療儀 寫在前面

新年初始的時候,給自己定了很多計畫,一年快過去了,大部分都沒有實現 謝謝鄙視!懶癌 prd so 1 doc prd shouye inlist 我也不知道到了哪個階段,反正一直在積極的 然並卵!嘗試過使用各種各樣的方 和軟體工具,然並卵!簡單介紹一些失敗的原因 其實是藉口!1,使用過各種gtd方法...