给你一个初始的运行内存,每个硬盘有运行内存和运行完后可以获得的内存,也就是运行完一个你可以运行的内存后你会获得一些内存,比如初始内存为 10,一个硬盘的运行内存为10,可获得内存为20,运行完后你就变成30的内存,你只能运行运行内存小于你当前的值的硬盘。
题解结构体排序,把运行内存小的放在前面然后依次运行累加即可。
#includeusing namespace std; typedef unsigned long long ll; const int N = 1e5 + 10; ll a[N],b[N],st[105]; struct node { int a, b; }v[105]; bool cmp(node x, node y) { return x.a < y.a; } void solve() { int n,k; cin >> n>>k; for (int i = 1; i <= n; i++)cin >>v[i].a; for (int i = 1; i <= n; i++)cin >> v[i].b; sort(v + 1, v + 1 + n, cmp); int res = k; for(int i=1;i<=n;i++) { if (k >= v[i].a)k += v[i].b; } cout << k << endl; } int main() { int t; cin >> t; while (t--)solve(); }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)