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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

[UVALive 3971] Assemble

發布時間:2024/1/17 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [UVALive 3971] Assemble 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

圖片加載可能有點慢,請跳過題面先看題解,謝謝



又是道一眼題。。。
這道題最惡心的地方不是輸入么。。。

直接二分一個 \(quality\) ,在每種配件里去找品質大于等于 \(quality\) 的價格最小的配件,將價格加起來,如果大于 \(b\),則不合法
真是愉快的一天。。。
切了一天的水題。。。
$
$

//made by Hero_of_Someone #include<iostream> #include<cstdio> #include<cstdlib> #include<vector> #include<map> #define inf (1<<30) #define il inline #define RG register using namespace std; il int gi(){ RG int x=0,q=1; RG char ch=getchar(); while( ( ch<'0' || ch>'9' ) && ch!='-' ) ch=getchar();if( ch=='-' ) q=-1,ch=getchar(); while(ch>='0' && ch<='9') x=x*10+ch-48,ch=getchar(); return q*x; }int T,n,b,cnt,Max; map<string,int>ma; il int idx(string s){if(!ma.count(s)) ma[s]=++cnt;return ma[s]; } struct com{int c,q;}; vector<com>vec[1010];il void init(){n=gi(),b=gi(),cnt=0,Max=0;for(RG int i=1;i<=n;i++) vec[i].clear();for(RG int i=1;i<=n;i++){RG char a[25],b[25]; scanf("%s%s",a,b);RG int c=gi(),q=gi(); Max=max(Max,q);vec[idx(a)].push_back((com){c,q});} }il bool ck(int x){RG int sum=0;for(RG int i=1;i<=cnt;i++){RG int len=vec[i].size(),Min=inf;for(RG int j=0;j<len;j++)if(vec[i][j].q>=x) Min=min(Min,vec[i][j].c);sum+=Min; if(sum>b) return 0;}return 1; }il void work(){RG int l=0,r=Max,ans=0;while(l<=r){RG int mid=(l+r)>>1;if(ck(mid)) ans=mid,l=mid+1;else r=mid-1;}printf("%d\n",ans); }int main(){ T=gi(); while(T--){ init(); work(); } return 0; }

轉載于:https://www.cnblogs.com/Hero-of-someone/p/7653037.html

總結

以上是生活随笔為你收集整理的[UVALive 3971] Assemble的全部內容,希望文章能夠幫你解決所遇到的問題。

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