6
15
2016
0

【比赛】Codeforces Round #357 (Div. 2)

感悟:

1、不要让自己只习惯于做一类题目,就算题目出的风格让自己感到很恶心,最终成绩只要是由实力决定的,就一定要信任自己,全力以赴。

2、态度的调整要靠自己。自怜的情绪不能让你获得更多理解,频繁而急躁的尝试有时不如沉下心来想想自己当前的情况,以后的路怎么走最好。

3、对自己适度宽容,不苛求自己每次都要发挥出100%,而在平时增强实力。某一时刻感到被困住怎么都走不出去,也许只是因为..天气不太好~

4、不要给自己施加过多的消极情绪,有时压力可以促进做事效率,但考试的时候不需要,放平心态就好。

眼镜摔坏还掉Rating,真是给会考攒人品。

A. A Good Contest

题目难度只剩下英文阅读和在半夜保持清醒= =

#include<bits/stdc++.h>
#define F(i,s,t) for(int i=(s);i<=(t);i++) 
using namespace std;
int n,ans;
char name[12];
int main()
{
	scanf("%d",&n);ans=0;
	F(i,1,n){
		int x,y;
		scanf("%s%d%d",name,&x,&y);
		if(x>=2400&&y>x) ans++; 
	}
	puts(ans?"YES":"NO");
	return 0;
}

B. Economy Game

给定n,求是否存在满足a × 1 234 567 + b × 123 456 + c × 1 234 = 的数对(a,b,c)。(1<n<=10^9)

我是治脏。

线性结果给定,求m元数对暴力只需O(n^(m-1))。

int main() {
	int n;
	while(~scanf("%d", &n)) {
		const int X = 1234567, Y = 123456, Z = 1234;
		bool ans = false;
		for(int a = 0; a * X <= n; ++ a) {
			int m = n - a * X;
			for(int b = 0; b * Y <= m; ++ b) {
				if((m - b * Y) % Z == 0) {
					ans = true;
				}
			}
		}
		puts(ans ? "YES" : "NO");
	}
	return 0;
}

C. Heap Operations

有一个小根堆,资瓷三种操作:

1.插入一个数

2.移除最小的数

3.输出最小的数

执行一些操作,记录了其中的n次

要完善它的操作,使满足操作说明。要求总的操作次数最小。

操作次数<=10^6

很好的模拟题。vector存储、首字母十分方便!

#include<bits/stdc++.h>
#define F(i,s,t) for(int i=(s);i<=(t);i++) 
#define fir first
#define sec second
using namespace std;
priority_queue<int,vector<int>,greater<int> > q;
vector<pair<char,int> > ans;//保存操作首字母即可 
int n,x;
char s[10];
int main()
{
	n=read();
	while(n--){
		scanf("%s",s);
		if(s[0]!='r') x=read();
		
		if(s[0]=='i'){
			q.push(x);
			ans.push_back(make_pair(s[0],x));
		}
		else if(s[0]=='r'){
			if(q.empty()){
				q.push(1);
				ans.push_back(make_pair('i',1));
			}
			q.pop();
			ans.push_back(make_pair('r',0));//remove后没有值
		}
		else if(s[0]=='g'){//getMin 不取出 
			while(!q.empty()){//!!!
				int t=q.top();
				if(t==x){
					ans.push_back(make_pair('g',x));
					break;
				}
				else if(t<x){
					q.pop();
					ans.push_back(make_pair('r',t));
				}
				else if(t>x){
					q.push(x);
					ans.push_back(make_pair('i',x));
				}
			}
			if(q.empty()){
				q.push(x);
				ans.push_back(make_pair('i',x));
				ans.push_back(make_pair('g',x));
			}
		}
	}
	printf("%d\n",ans.size());
	F(i,0,ans.size()-1){
		if(ans[i].fir=='i') printf("insert");
		if(ans[i].fir=='r') printf("removeMin");
		if(ans[i].fir=='g') printf("getMin");
			
		if(ans[i].fir!='r') printf(" %d",ans[i].sec);
		printf("\n");
	}
	return 0;
}

有些细节还可简化/操作可合并

#include<bits/stdc++.h>
using namespace std;

priority_queue < int , vector < int > , greater < int > > Q;
vector<pair<char,int> >ans;
char s[444];
int main()
{
    int n;scanf("%d",&n);
    for(int i=0;i<n;i++)
    {
        int p;
        scanf("%s",s);
        if(s[0]!='r')cin>>p;
        if(s[0]=='i')
        {
            Q.push(p);
            ans.push_back(make_pair(s[0],p));
        }
        else if(s[0]=='r')
        {
            if(Q.empty())
            {
                Q.push(1);
                ans.push_back(make_pair('i',1));
            }
            Q.pop();
            ans.push_back(make_pair('r',0));
        }
        else if(s[0]=='g')
        {
            while(!Q.empty())
            {
                int t = Q.top();
                if(t<p)
                {
                    Q.pop();
                    ans.push_back(make_pair('r',0));
                }
                else break;
            }
            if(Q.empty()||Q.top()>p)
            {
                Q.push(p);
                ans.push_back(make_pair('i',p));
            }
            ans.push_back(make_pair('g',p));
        }
    }
    cout<<ans.size()<<endl;
    for(int i=0;i<ans.size();i++)
    {
        if(ans[i].first=='r')printf("removeMin ");
        if(ans[i].first=='i')printf("insert ");
        if(ans[i].first=='g')printf("getMin ");
        if(ans[i].first!='r')printf("%d",ans[i].second);
        printf("\n");
    }
}

 

Category: 比赛 | Tags: 技巧 枚举 模拟 STL | Read Count: 664

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter

Host by is-Programmer.com | Power by Chito 1.3.3 beta | Theme: Aeros 2.0 by TheBuckmaker.com