P9556 [SDCPC2023] Orders题解
RedStoneShark · · 题解
蒟蒻的第一篇题解
拿到这题,我的想法就是模拟+贪心,用一个变量存储已经做过的订单,显而易见,我们应该先做截止日期较前的订单,那么怎么算该天剩余多少货呢?我们要开一个变量,记录已完成的货物数,设截止日期为
件(
AC code
#include<iostream>
#include<algorithm>
#define int long long
using namespace std;
struct dingdan{//每一个订单的信息
int a,b;
};
int T;
bool cmp(dingdan x,dingdan y){
return x.a<y.a;
}//根据截止日期排序
dingdan x[101];
void slove(){
int n,k,tun=0;//tun代表已经做完的件数
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>x[i].a>>x[i].b;
}
sort(x+1,x+1+n,cmp);
for(int i=1;i<=n;i++){
int tmp=x[i].a*k-tun;//计算还剩多少件
if(x[i].b<=tmp){//判断是否能做
tun+=x[i].b;
}
else{
cout<<"No"<<endl;
return;
}
}
cout<<"Yes"<<endl;
}
signed main(){
cin>>T;
while(T--){
slove();
}
}