使用逆向思维,歌曲不超过1000,不妨我们设置一个1001大小的数组,每次有人喜欢唱歌a[i]++。 之后遍历数组,初始化需要的歌曲时间spendTime为0,如果a[i]==0,则continue;若可以整除x,则spendTime+=(a[i]/x);若不可整除,则spendTime+=(a[i]/x+1);最后,把计算得到的spendTime和y作比较,如果spendTime>y,输出NO,否则输出YES。完整代码
#includeusing namespace std; int main(){ int t,i,j,k,n,x,y,m,s,sum; int a[1001]; cin>>t; for(i=0;i >n>>x>>y; for(j=0;j >m; for(k=0;k >s; a[s]++; } } sum=0; for(j=0;j<1001;j++){ if(a[j]==0) continue; if(a[j]%x==0) sum+=(a[j]/x); else sum+=(a[j]/x+1); } if(sum>y) cout<<"NO"< 运行结果



