CSP-20170902

公共钥匙盒满分题解

#include<iostream>
#include<algorithm>
using namespace std;
struct Key{
	int name;
	int begin;
	int time;
	int flag=0; //0表示未借出 
};
bool EndCmp(Key first,Key second){
    if(first.begin+first.time==second.begin+second.time){ 
		return first.name<second.name;
		}//同一时间还,序号小的钥匙先还入
    else 
		return first.begin+first.time<second.begin+second.time;
}
int main(){
	int n,k;
	int first=10000000;
	int last=-1;
	cin>>n>>k;
	Key key[k];
	int num[n];
	for(int i=0;i<n;i++){
		num[i]=i+1;
	}
	for(int i=0;i<k;i++){
		cin>>key[i].name>>key[i].begin>>key[i].time;
		if(key[i].begin<first){
			first=key[i].begin;
		}
		if(key[i].begin+key[i].time>last){
			last=key[i].begin+key[i].time;
		}
	}
	sort(key,key+k,EndCmp);
	for(int i=first;i<=last;i++){
		for(int j=0;j<k;j++){
			if(key[j].begin+key[j].time==i && key[j].flag==1){
				for(int z=0;z<n;z++){
					if(num[z]==0){
						num[z]=key[j].name;
						key[j].flag=0;
						break;
					}
				}
			}
			if(key[j].begin==i && key[j].flag==0){
				for(int z=0;z<n;z++){
					if(num[z]==key[j].name){
						num[z]=0;
						key[j].flag=1;
						break;
					}
				}
			}
		}
	}
	for(int i=0;i<n;i++){
		cout<<num[i]<<" ";
	}
	return 0;
}

标题

#include<iostream>
#include<string.h>
using namespace std;
struct node{
	int x;
	int y;
};
int main(){
	int n; //A树 
	long long l;//A图大小   0---L
	int s;//B图大小 		0---s
	cin>>n>>l>>s;
	int B[s+1][s+1];
	node Ain[n];
	for(int i=0;i<n;i++){
		cin>>Ain[i].x>>Ain[i].y;
	}
	for(int i=0;i<s+1;i++){
		for(int j=0;j<s+1;j++){
			cin>>B[i][j];
		}
	}
	int sum=0;
	for(int i=0;i<n;i++){
		bool flag=true;
		if(Ain[i].x+s>l || Ain[i].y+s>l){
			flag=false;
		}
		if(flag){
			for(int j=1;j<s+1;j++){
				for(int z=1;z<s+1;j++){
					if()	
			}
		}
	}
		
	}
}
#include<iostream>
#include<set>
#include<utility>
using namespace std;
int main(){
	set<pair<int,int>> s;
	pair<int,int> p1=make_pair(1,1);
	s.insert(p1);
	pair<int,int> p2=make_pair(1,2);
	s.insert(p2);
	pair<int,int> p3=make_pair(1,3);
	s.insert(p3);
	pair<int,int> p4=make_pair(1,4);
	s.insert(p4);
	for(auto it:s){
		cout<<it.first<<endl;
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值