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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

codeforces 732/D 二分

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

給出考試時間和考試需要準(zhǔn)備的時間,問最早考完所有科目的時間?

二分答案 NlogN

二分抄神犇的寫法 感覺挺舒服的嘻嘻嘻

1 #include<bits/stdc++.h> 2 using namespace std; 3 const int MAXN=1e5+5; 4 int N,M,d[MAXN],w[MAXN],cnt[MAXN]; 5 void read(int &x){ 6 x=0; 7 register char c=getchar(); 8 while(c<48||c>57) 9 c=getchar(); 10 for(;c>=48&&c<=57;c=getchar()) 11 x=(x<<1)+(x<<3)+c-48; 12 } 13 bool check(int x) 14 { 15 memset(cnt,0,sizeof(cnt)); 16 int ans = 0,val = 0; 17 for (int i=x; i>=1; i--) 18 if (d[i]&&++cnt[d[i]]==1&&w[d[i]]<i-M+ans+1) 19 { 20 ans++; 21 val+=w[d[i]]; 22 } 23 return ans == M && val+M<=x; 24 } 25 int main() 26 { 27 read(N),read(M); 28 for (int i=1; i<=N; i++) 29 read(d[i]); 30 for (int i=1; i<=M; i++) 31 read(w[i]); 32 int first = 0; 33 int last = N; 34 int mid; 35 int best = -1; 36 while (first <= last) 37 { 38 mid = (first + last)/2; 39 if (check(mid)) 40 { 41 last = mid-1; 42 best = mid; 43 } 44 else 45 { 46 first = mid+1; 47 } 48 } 49 printf("%d\n",best); 50 return 0; 51 } View Code

?

轉(zhuǎn)載于:https://www.cnblogs.com/Geek-xiyang/p/6050490.html

總結(jié)

以上是生活随笔為你收集整理的codeforces 732/D 二分的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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