Jin Ge Jin Qu hao UVA

来源:互联网 发布:mac装完win10没有wifi 编辑:程序博客网 时间:2024/05/22 05:28

对于每个曲子,按照时间来进行动态规划,对于不同的曲子,都是从结束时间的前一秒开始进行倒计时,然后必要的时候更新某个时刻所唱曲子的数量。具体实现见如下代码:

#include<iostream>#include<vector>#include<string>#include<set>#include<stack>#include<queue>#include<map>#include<algorithm>#include<cmath>#include<iomanip>#include<cstring>#include<sstream>#include<cstdio>#include<deque>using namespace std;int T,n,t;int time_table[100000];int main(){cin >> T;int Case = 1;while (T--){int ans = 0;memset(time_table, 0, sizeof(time_table));cin >> n >> t;t--;vector<int> arr;for (int i = 0; i < n; i++){int a;cin >> a;arr.push_back(a);}for (int i = 0; i < n; i++){for (int j = t; j >= arr[i]; j--){if (time_table[j-arr[i]] || j == arr[i]){time_table[j] = max(time_table[j],time_table[j-arr[i]]+1);ans = max(ans,time_table[j]);}}}int exist;for (exist = t; time_table[exist] != ans; exist--);cout << "Case " << Case++ << ": "<<ans+1<<" ";if (!ans) cout << "678" << endl;else cout << exist + 678 << endl;}return 0;}