暑假练习记录(三):2016 CCPC Final

一,The Third Cup is Free

水题,排序,,,,

#include 
#include 
using namespace std;
const int maxn=1e5+5;
int a[maxn];
int main(){
	int t,cas=1;scanf("%d",&t);
	while(t--){
		int n,all=0;scanf("%d",&n);
		for(int i=0;i=0;i-=3){
			ans+=a[i-2];
		}
		printf("Case #%d: %d\n",cas++,all-ans);
	}
	return 0;
}

二,Wash

优先队列洗衣服,先洗,以衣服为线从左到右做时间轴,每次存储当前所有洗衣机下一次再用的时间,优先找当前时间下时间距离最近的空闲洗衣机,然后最后一件衣服先烘干然后最大加最小,取个最小值

#include 
#include 
#include 
#include 
using namespace std;
typedef long long ll;
const int maxn=1e6+5;
struct node{
	ll x,y;
	friend bool operator<(node a1,node b1)
    {
        return a1.x>b1.x;//小值优先级高
    }
}pa;
priority_queueq1,q2;
ll a[maxn];
int main(){
	int t,cas=1;
	scanf("%d",&t);
	while(t--){
		memset(a,0,sizeof a);
		while(!q1.empty())q1.pop();
		while(!q2.empty())q2.pop();
		int l,n,m;
		scanf("%d%d%d",&l,&n,&m);
		for(int i=0;i=0;i--){
			pa=q2.top();
			q2.pop();
			//dry the last washing clothes
			ans=max(ans,pa.x+a[i]);
			pa.x+=pa.y;
			q2.push(pa);
		}
		printf("Case #%d: %lld\n",cas++,ans);
	}
	return 0;
}

三,Mr.Panda and Survey

等待补题,,,,,,,

四,Problem Buyer

贪心,优先队列,总之很难想就是了,从易到难存储需要问题难度,区间排序,对每个点,找合适的区间存入优先队列中,不断维护优先队列,最后结果即是n - (int) q.size() +1;

#include 
#include 
#include 
#include 
using namespace std;
typedef long long ll;
const int maxn=1e5+5;
struct node{
	int a,b;
	bool operator<(const node &x)const
	{
		if(a!=x.a)return ax.b;
	}
}p[maxn];
priority_queue,greater > q;
int c[maxn];
int main(){
	int t;scanf("%d",&t);
	for(int cnt=1;cnt<=t;cnt++){
		int n,m;
		scanf("%d%d",&n,&m);
		for(int i=0;i=c[i]){
					q.push(p[pos].b);
				}
				pos++;
			}
			while(!q.empty()&&q.top()

五,Periodical Cicadas

等待补题,,,,,,,

六,Pandaland

(等待补题,,,,,,,)

暴力最短路,即枚举各条边删掉,然后每次用Dijkstra寻找该边端点的最小路,加上该边权值,即为以e.from和e.to为端点形成的最小圈权值,取最小值即可,,,,(果然,我就是个菜鸡,小声.jpg)

 

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define inf 2147483647
using namespace std;
typedef long long ll;
typedef pair P;

struct edge{
	int from,to,cost;
};
vector G[4005];
vector ed;
ll d[4005],res;
void dijkstra(int s,int dis){
	priority_queue,greater

>que; fill(d,d+4005,inf); d[s]=0; que.push(P(0,s)); while(!que.empty()){ P p=que.top(); que.pop(); int v=p.second; if(d[v]+dis>=res)break; if(d[v]d[v]+e.cost){ d[e.to]=d[v]+e.cost; que.push(P(d[e.to],e.to)); } } } } map m; int main(){ int t;scanf("%d",&t); for(int cas=1;cas<=t;cas++){ for(int i=0;i<4005;i++){ G[i].clear(); } ed.clear(); m.clear(); int num,cnt=0; scanf("%d",&num); for(int i=0;i=inf)res=0; printf("Case #%d: %lld\n",cas,res); } return 0; }

 

七,Engineer Assignment

等待补题,,,,,,,

八,Mr. Panda and Crystal

等待补题,,,,,,,

九,Worried School

大模拟,找到忧虑的学校在5个sites的位置pos_x,和国外排名pos_y,wa了n发,结果是pos_x与g忘记判大小了;

#include 
#include 
#include 
#include  
#include 
using namespace std;
vector a;
string s[6][30],st[30];
int main(){
	int t,cas=1;
	cin>>t;
	while(t--){
		int g;
		string str;
		cin>>g;cin>>str;
		for(int i=0;i<5;i++){
			for(int j=0;j<20;j++){
				cin>>s[i][j];
			}
		}
		for(int i=0;i<20;i++){
			cin>>st[i];
		}
		a.clear();
		bool fla=0;
		for(int i=0;i<20;i++){
			for(int j=0;j<5;j++){
				if(str==s[j][i]){
					fla=1;break;
				}
				a.push_back(s[j][i]);
				
			}
			if(fla)break;
		}
		sort(a.begin(),a.end());
		a.erase(unique( a.begin(), a.end() ), a.end());
		int posx=a.size();
		for(int i=0;i<20;i++){
			if(str==st[i])break;
			a.push_back(st[i]);
		}
		sort(a.begin(),a.end());
		a.erase(unique( a.begin(), a.end() ), a.end());
		int mx=a.size();
		printf("Case #%d: ",cas++);
		if(a.size()>=g){
			if(posx>=g)printf("0\n");
			else printf("%d\n",g-posx);
		}else printf("ADVANCED!\n");
	}	
	return 0;
}

十,Lazors

等待补题,,,,,,,

十一,Daylight Saving Time

打表,日历,记得pst,pdt,neither,both区别,和3月时候是第二个星期日

#include 
using namespace std;
struct node{
	int y,m,d,h,mi,s;
	bool operator<(const node &b)const
	{
		if(y!=b.y)return y

 打的死惨死惨的,呜呜呜,睡觉睡觉,,,

 

你可能感兴趣的:(hdu,算法,ccpc)