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

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