ccf 201706-1 打酱油 201706-2 公共钥匙盒 c++ ac

目录

 

一、201706-1 打酱油

AC代码

二、201706-2 公共钥匙盒

思路:

 

AC代码


一、201706-1 打酱油

AC代码

#include <bits/stdc++.h>
using namespace std;
int main()
{
	int n;
	int sum=0;
	int p;
	
	cin>>n;
	p=n/10;
	sum=p;
	while(p>2)
	{
		if(p/5)
		{
			sum+=2*(p/5);
			p-=p/5*5;
		}
		else if(p/3)
		{
			sum+=p/3;
			p-=p/3*3;
		}
	}
	cout<<sum;
	
	
	return 0;
}

二、201706-2 公共钥匙盒

思路:

因为钥匙借还时间不冲突,所以可以把开始时间和结束时间分开存储。对借的时间从小到大排序,还的时间也排序,对钥匙的标记判断钥匙是否借还。

对于同一把钥匙还钥匙的时间肯定比借钥匙的时间晚,所以判断结束的条件就是还完最后一把钥匙。

按照时间顺序对借还的钥匙一起排序,进行操作,操作如下:

当借钥匙的的时候查找一下钥匙的位置,然后把那个位置置空

当还钥匙的时候,从左向右找空位置,找到了就放回去。

 

 

AC代码

 

#include <bits/stdc++.h>

using namespace std;

struct DATA
{
	int w;
	int s;
};
struct DATA1
{
	int w;
	int c;
};
bool cmp(DATA a,DATA b) 
{
	return a.s<b.s||(a.s==b.s&&a.w<b.w);
}
bool cmp1(DATA1 a,DATA1 b) 
{
	return a.c<b.c||(a.c==b.c&&a.w<b.w);
}

int main()
{
	
	int n,k;
	int w,s,c;
	vector<DATA> sta(0);
	vector<DATA1> sta1(0);
	DATA data;
	DATA1 data1;
	int a[1005]={0};//表示钥匙的位置, 0代表没有
	
	cin>>n>>k;
	for(int i=0;i<n;i++)
	{
		a[i]=i+1;//初始化钥匙的位置 
	}
	for(int i=0;i<k;i++)
	{
		cin>>w>>s>>c;
		data.w=w;
		data.s=s;
		data1.w=w;
		data1.c=c+s;
		sta.push_back(data);
		sta1.push_back(data1);
		
	}
	sort(sta.begin(),sta.end(),cmp);
	sort(sta1.begin(),sta1.end(),cmp1);
	vector<DATA>::iterator it=sta.begin();
	vector<DATA1>::iterator it1=sta1.begin();	
	while(it1!=sta1.end())
	{
		if(it==sta.end())
		{			
			for(int i=0;i<n;i++)
			{
				if(a[i]==0)//送回钥匙 
				{
					a[i]=it1->w;
					it1++; //继续下个那要是 
					break; 
				}
			}
		}
		else if(it->s  <  it1->c)  //判断拿走的时间  早于  送还的时间 
		{
			for(int i=0;i<n;i++)
			{
				if(a[i]==it->w)
				{
					a[i]=0;//把钥匙拿走 
					it++; //继续下个那要是 
					break;
				}
			}
		 } 
		 else if(it->s >= it1->c)//判断拿走的时间  等于  送还的时间 
		 {
		 	for(int i=0;i<n;i++)
			{
				if(a[i]==0)//先送回钥匙 
				{
					a[i]=it1->w;//吧钥匙拿走 
					it1++; //继续下个那要是 
					break; 
				}
			}
		 }
	 } 
	 for(int i=0;i<n;i++)
	 {
	 	cout<<a[i]<<" ";
	 }
	
	return 0;
}

3

4

5

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章