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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

UVALive 4254 Processor(二分)

發布時間:2024/8/26 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 UVALive 4254 Processor(二分) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

很容易想到二分,問題在與判斷一個解的可行性。貪心,時間點最多兩萬,可以模擬每個時間點,將事件按開始時間排序,

每次優先選已經開始了的且結束時間最早的任務來做,如果某個任務在deadline之前還沒有結束說明當前解不可行。

R的上界不太好估計,(遠遠達不到總和,但是比maxw大,因為任務在時間上有重疊),稍微取大點。

#include<bits/stdc++.h> using namespace std; const int maxn = 1e4+5; struct Job {int r,d,w;bool operator < (const Job &rh) const {return d > rh.d;//return r < rh.r || ( r == rh.r && d < rh.d); }void IN(){scanf("%d%d%d",&r,&d,&w);} }J[maxn];bool cmp(const Job&a, const Job&b) { return a.r < b.r; } const int maxd = 2e4; int n; bool ok(int m) {priority_queue<Job> q;for(int i = 2,j = 0; i <= maxd; i++){while(j < n && J[j].r < i) q.push(J[j++]);int W = m;while(W>0 && q.size()){Job cur = q.top(); q.pop();if(cur.w <= W){W-=cur.w;}else {if(cur.d <= i ) return false;cur.w -= W;q.push(cur);W = 0;}}if(j == n && q.empty()) return true;}return false; }int main() {//freopen("in.txt","r",stdin);int T; scanf("%d",&T);while(T--){scanf("%d",&n);for(int i = 0; i < n; i++) J[i].IN();sort(J,J+n,cmp);int L = 1, R = 1e4,M;for(; L<R ; ok(M)?R=M:L=M+1 ) M = (L+R)>>1;printf("%d\n",L);}return 0; }

?

轉載于:https://www.cnblogs.com/jerryRey/p/4809980.html

總結

以上是生活随笔為你收集整理的UVALive 4254 Processor(二分)的全部內容,希望文章能夠幫你解決所遇到的問題。

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