AcWing 第15场周赛
#include
#include
#include
#include
#include
using namespace std;
int n,k;
int t;
int main(){
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
cin>>t;
while(t--){
srand((unsigned int)(time(0)));
int l,r,nl,nr;cin>>l>>r>>nl>>nr;
int a=rand()%r+l,b=rand()%nr+nl;
while(1){
a=rand()%r+l;
b=rand()%nr+nl;
if(a!=b && b<=nr && b>=nl && a>=l && a<=r) break;
}
cout<
看懂题意,模拟就行了
排序时按照编号大小排序,因为给定的l是非降序的,所以只需要根据编号排序
从头开始枚举,每次做四件事
1.如果这个同学的时间超了就跳过后续三件事
2.如果这个同学的入队时间大于上个人打饭时间,时间就调整为当前入队时间
3.记录这个同学的打饭时间
4.时间+1(因为打饭需要一分钟
#include
#include
#include
#include
using namespace std;
int n;
int t;const int maxn=1e3+10;
struct node{
int p,l,r;
}e[maxn];
bool cmp(node a,node b){
return a.p>t;
while(t--){
cin>>n;memset(ans,0,sizeof(ans));
for(int i=1;i<=n;++i) cin>>e[i].l>>e[i].r,e[i].p=i;
sort(e+1,e+1+n,cmp);
int head=1;
for(int i=1;i<=n;++i){
node a=e[i];
if(head>a.r) continue;
if(head
原文:https://www.cnblogs.com/guiyou/p/15201328.html