AcWing 第15场周赛

区间选数

#include<cstdio>
#include<cstring>
#include<iostream>
#include<ctime>
#include<cstdlib>

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<<a<<" "<<b<<‘\n‘; 
    }return 0;
} 

食堂排队

看懂题意,模拟就行了

排序时按照编号大小排序,因为给定的l是非降序的,所以只需要根据编号排序

从头开始枚举,每次做四件事
1.如果这个同学的时间超了就跳过后续三件事
2.如果这个同学的入队时间大于上个人打饭时间,时间就调整为当前入队时间
3.记录这个同学的打饭时间
4.时间+1(因为打饭需要一分钟

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>

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<b.p;
}
int ans[maxn];
int main(){
	cin>>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<a.l) head=a.l;
			ans[a.p]=head;
			++head;
		}
		for(int i=1;i<=n;++i) cout<<ans[i]<<" ";  cout<<endl; 
	}
} 

AcWing 第15场周赛

上一篇:C#开发微信公众平台-就这么简单(附Demo)


下一篇:Linux网络编程-3-socket编程api