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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

CF535C Tavas and Karafs 二分 + 结论

發布時間:2023/12/4 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CF535C Tavas and Karafs 二分 + 结论 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

傳送門

題意:

定義第iii個數是a+(i?1)?ba+(i-1)*ba+(i?1)?b,先有qqq個詢問,每次詢問給你l,t,ml,t,ml,t,m代表你可以操作ttt次,每次可以將最多mmm個數減111,每次都需要回答從lll開始, 最遠到第幾個數,能在執行完這些操作之后[l,r][l,r][l,r]內的數被減成000

1≤a,b≤1e6,1≤q≤1e5,1≤l,t,m≤1e61\le a,b\le 1e6,1\le q\le 1e5,1\le l,t,m\le 1e61a,b1e6,1q1e5,1l,t,m1e6

思路:

顯然可以二分rrr的位置,讓后考慮怎么檢查答案。

這里有個結論,判斷這個區間是否能都被減到000需要滿足以下兩個條件:

  • [l,r][l,r][l,r]內數的和≤t?m\le t*mt?m
  • rrr位置的數需要≤t\le tt
  • 第二個顯然,第一個背過就行。。

    關于第一個的證明,lclclc有一個類似的題,貼個個鏈接:

    鏈接

    這個題的模型就是有mmm個電池,每個電池都有容量cic_ici?,有nnn個電腦,每個電腦每分鐘都需使用某個電池的一個電量,問能使所有電腦都正常運行的最長時間是多少。

    這個題就是二分最長時間,設sum=∑min(ci,mid)sum=\sum min(c_i,mid)sum=min(ci?,mid),那么電腦能運行midmidmid分鐘的充要條件就是mid?n≤summid*n\le summid?nsum

    #include<bits/stdc++.h> #define X first #define Y second #define L (u<<1) #define R (u<<1|1) #define Mid (tr[u].l+tr[u].r>>1) #define pb push_back using namespace std;const int N=1000010,INF=0x3f3f3f3f,mod=1e9+7; typedef long long LL;LL a,b,n;LL get(LL l,LL r) {LL n=r-l+1;LL st=a+(l-1)*b;LL ed=a+(r-1)*b;return n*(st+ed)/2; }void solve() {cin>>a>>b>>n;while(n--) {LL l,t,m;scanf("%lld%lld%lld",&l,&t,&m);LL ls=l,rs=1e9,ans=-1;while(ls<=rs) {LL mid=ls+rs>>1;if(get(l,mid)<=t*m&&a+(mid-1)*b<=t) ans=mid,ls=mid+1;else rs=mid-1;}printf("%lld\n",ans);} }int main() {int _=1;while(_--) {solve();}return 0; }

    總結

    以上是生活随笔為你收集整理的CF535C Tavas and Karafs 二分 + 结论的全部內容,希望文章能夠幫你解決所遇到的問題。

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