CF1629A题解补发
此篇初发于洛谷,在这里进行补发
同步发于CSDN
题目大意略
这个题主要方法就是用结构体存储 $a$ 和 $b$ ,按 $a$ 从小到大排序,然后用循环将 ${a}_i$ 依次与 $k$ 比较,若 $k \ge {a}_i $ 则增加 $ {b}_i $ ,若 $k < {a}_i$ 则退出循环。
小提示:这里如果自己写 cmp函数时,如果用 sort则等于时不能返回 true否则会卡RE 建议如果要等于时返回 true用 table_sort。
完整代码如下:
//A. Download More RAM #include<iostream> #include<algorithm> using namespace std; struct ram { int a,b; }r[101]; bool cmp(ram a,ram b) { if(a.a <= b.a) { return true; } return false; } int main() { long t,n,k,i,j; cin >> t; while(t--) { cin >> n >> k; for(i = 0;i<n;i++) { cin >> r[i].a; } for(i = 0;i<n;i++) { cin >> r[i].b; } stable_sort(r,r+n,cmp); j=k; for(i = 0;i<n;i++) { if(r[i].a <= j) { j += r[i].b; } else{ break; } } cout << j << endl; } return 0; }
浙公网安备 33010602011771号