
不无聊的一道题,可以试试,明天做f题
Problem - E - Codeforceshttps://codeforces.com/gym/102219/problem/E题目:您住所的主厅向当地社区和公众开放。 由于它是建立在公众捐赠的基础上的,因此使用它是免费的。 每个周末,尤其是公共假期,最多可预订 50 次,用于不同持续时间的多个活动。 您已被居民指派制定一项选择活动的计划,以最大限度地利用每个周末的分配时间,并尽可能缩短未使用的时间。 程序应该找到最能填满分配时间的事件,并按照预订列表中出现的相同顺序打印它。
思路,用前一种状态更新,用队列存状态的下标,当下标排列小于遍历的情况时,更新状态。
mle了一次,数据需加强,看起来体积不超过1e5
ac代码
#includeusing namespace std; const int N=1e5+1; queue l[N]; queue ll; int a[1006]; int main(){ int s,n; while(cin>>s){ memset(a,0,sizeof(a)); for(int i=1;i<=s;i++){ while(!l[i].empty()){ l[i].pop(); } } if(!s)return 0; cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; for(int j=s-a[i];j>=0;j--){ if(l[j+a[i]].empty()&&j==0){ //cout<=l[j+a[i]].back())continue; } // cout<=0;i--){ if(!l[i].empty()){ while(!l[i].empty()){ cout<
孩子又要上课了,作业好多555555