NOIp 11.11/12

最后一场比较正式的NOIp模拟赛,写一发小总结。题目没什么好说的,大部分很简单,先贴一下代码。

1111 T1

//string
//by Cydiater
//2016.11.11
#include <iostream>
#include <cstring>
#include <iomanip>
#include <queue>
#include <map>
#include <ctime>
#include <cmath>
#include <cstdlib>
#include <cstdio>
#include <algorithm>
#include <bitset>
#include <set>
#include <string>
using namespace std;
#define ll long long
#define up(i,j,n)		for(int i=j;i<=n;i++)
#define down(i,j,n)		for(int i=j;i>=n;i--)
#define cmax(a,b)		a=max(a,b)
#define cmin(a,b)		a=min(a,b)
#define FILE "string"
const int MAXN=2e5+5;
const int oo=0x3f3f3f3f;
char q[MAXN];
int head,tail;
namespace solution{
	void slove(){
		char ch;head=1;tail=0;
		while(scanf("%c",&ch)!=EOF){
			bool flag=1;
			while(tail>=head&&ch==q[tail]){tail--;flag=0;}
			if(flag)q[++tail]=ch;
		}
		up(i,head,tail)if(q[i]!=‘\n‘&&q[i]!=‘\r‘)printf("%c",q[i]);
		puts("");
	}
}
int main(){
	freopen(FILE".in","r",stdin);
	freopen(FILE".out","w",stdout);
	using namespace solution;
	slove();
	return 0;
}

1111 T2

//plus
//by Cydiater
//2016.11.11
#include <iostream>
#include <iomanip>
#include <queue>
#include <map>
#include <ctime>
#include <cstdlib>
#include <cstring>
#include <string>
#include <algorithm>
#include <bitset>
#include <set>
#include <cmath>
#include <cstdio>
using namespace std;
#define ll long long
#define up(i,j,n)		for(int i=j;i<=n;i++)
#define down(i,j,n)		for(int i=j;i>=n;i--)
#define cmax(a,b)		a=max(a,b)
#define cmin(a,b)		a=min(a,b)
#define FILE "plus"
const int MAXN=1e6+5;
const int oo=0x3f3f3f3f;
inline int read(){
	char ch=getchar();int x=0,f=1;
	while(ch>‘9‘||ch<‘0‘){if(ch==‘-‘)f=-1;ch=getchar();}
	while(ch>=‘0‘&&ch<=‘9‘){x=x*10+ch-‘0‘;ch=getchar();}
	return x*f;
}
int Z,ans[MAXN],flag=-1,len=oo,test[MAXN],t[MAXN],top=0,head,tol;
namespace solution{//1 X first 0 Y first -1 none
	int gcd(int a,int b){return b==0?a:gcd(b,a%b);}
	void init(){
		Z=read();
	}
	void updata(int x,int y){
		top=0;
		while(x!=1&&y!=1){
			if(x>y){
				head=1;t[++top]=x/y;
				x%=y;
			}else{
				head=0;t[++top]=y/x;
				y%=x;
			}
		}
		if(x==1&&y>1){t[++top]=y-x;head=0;}
		else if(y==1&&x>1){t[++top]=x-y;head=1;}
		if(head==0&&flag==1)return;
		if(flag==-1||(head==1&&flag==0)){
			flag=head;tol=top;
			up(i,1,top)ans[i]=t[i];
		}else{
			int now=1,opt=flag;
			up(i,0,top-1){
				if((t[top-i]>ans[tol-i]&&opt==1)||(t[top-i]<ans[tol-i]&&opt==0)){
					flag=head;tol=top;
					up(i,1,top)ans[i]=t[i];
					return;
				}else if((t[top-i]<ans[tol-i]&&opt==1)||(t[top-i]>ans[tol-i]&&opt==0))return;
				opt^=1;
			}
		}
	}
	int get(int x,int y){
		int tmp=0;
		if(x<y)swap(x,y);
		while(y!=0){
			tmp+=x/y;
			x%=y;
			if(x<y)swap(x,y);
		}
		return tmp;
	}
	void slove(){
		memset(test,10,sizeof(test));
		up(i,1,Z)if(gcd(i,Z)==1)cmin(len,(test[i]=get(Z,i)-1));
		up(i,1,Z)if(test[i]==len)updata(Z,i);
	}
	void output(){
		down(i,tol,1){
			up(j,1,ans[i])
				if(flag)	printf("X");
				else 		printf("Y");
			flag^=1;
		}
		puts("");
	}
}
int main(){
	freopen(FILE".in","r",stdin);
	freopen(FILE".out","w",stdout);
	using namespace solution;
	init();
	slove();
	output();
	return 0;
}

1111 T3(80分,100分太毒瘤不改了)

//aiur
//by Cydiater
//2016.11.11
#include <iostream>
#include <queue>
#include <map>
#include <ctime>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <cstdlib>
#include <cstdio>
#include <iomanip>
#include <string>
#include <bitset>
#include <set>
using namespace std;
#define ll long long
#define up(i,j,n)		for(int i=j;i<=n;i++)
#define down(i,j,n)		for(int i=j;i>=n;i--)
#define cmax(a,b)		a=max(a,b)
#define cmin(a,b)		a=min(a,b)
#define FILE "aiur"
const int MAXN=2e6+5;
const int oo=0x3f3f3f3f;
inline int read(){
	char ch=getchar();int x=0,f=1;
	while(ch>‘9‘||ch<‘0‘){if(ch==‘-‘)f=-1;ch=getchar();}
	while(ch>=‘0‘&&ch<=‘9‘){x=x*10+ch-‘0‘;ch=getchar();}
	return x*f;
}
int N,ty;
ll ans=0,f[MAXN];
struct XY{int x,y;}xy[MAXN];
priority_queue<int,vector<int>,greater<int> >num1,num2;//small
priority_queue<int>num3,num4;//big
namespace solution1{
/*
f[i]=f[i-1]+abs(xi-xj)+abs(yi-yj)
f[i]=f[i-1]+max(xi-xj,xj-xi)+max(yi-yj,yj-yi)
////////////////////////////////////////////
f[i]=f[i-1]+(xi+yi)-(xj+yj) (1)
f[i]=f[i-1]+(xi-yi)-(xj-yj) (2)
f[i]=f[i-1]-(xi-yi)+(xj-yj) (3)
f[i]=f[i-1]-(xi+yi)+(xj+yj) (4)

sort by -(xj+yj) -(xj-yj) (xj-yj) (xj+yj)

slove me in O(NlogN) 40 part
*/
	void init(){
		up(i,1,N){
			int x=read(),y=read();
			xy[i]=(XY){x,y};
		}
	}
	void push(int id){
		int sum=xy[id].x+xy[id].y,delta=xy[id].x-xy[id].y;
		num1.push(sum);num2.push(delta);
		num3.push(delta);num4.push(sum);
	}
	void slove(){
		push(1);
		up(i,2,N){
			ll tmp=0,n1=num1.top(),n2=num2.top(),n3=num3.top(),n4=num4.top(),x=xy[i].x,y=xy[i].y;
			tmp=max(x+y-n1,max(x-y-n2,max(y-x+n3,n4-x-y)));
			ans+=tmp;
			push(i);
		}
		cout<<ans<<endl;
	}
}
namespace solution2{
	void init(){
		up(i,0,N-1){
			int x=read(),y=read();
			xy[i]=(XY){x,y};
		}
	}
	int get(int sta,int id){
		int tmp=0;
		up(i,0,N-1)if(((1<<i)&sta)==(1<<i))cmax(tmp,abs(xy[id].x-xy[i].x)+abs(xy[id].y-xy[i].y));
		return tmp;
	}
	void slove(){
		memset(f,10,sizeof(f));
		f[0]=0;
		up(i,1,(1<<N)-1){
			up(j,0,N-1)if((i&(1<<j))){
				int sta=i^(1<<j);
				cmin(f[i],f[sta]+get(sta,j));
			}
		}
		cout<<f[(1<<N)-1]<<endl;
	}
}
int main(){
	freopen(FILE".in","r",stdin);
	freopen(FILE".out","w",stdout);
	N=read();ty=read();
	if(ty==1){
		using namespace solution1;
		init();
		slove();
	}else {
		using namespace solution2;
		init();
		slove();
	}
	return 0;
}

1112 T1

//array
//by Cydiater
//2016.11.12
#include <iostream>
#include <iomanip>
#include <queue>
#include <map>
#include <ctime>
#include <cmath>
#include <cstring>
#include <string>
#include <algorithm>
#include <cstdlib>
#include <cstdio>
#include <bitset>
#include <set>
using namespace std;
#define ll long long
#define up(i,j,n)		for(int i=j;i<=n;i++)
#define down(i,j,n)		for(int i=j;i>=n;i--)
#define cmax(a,b)		a=max(a,b)
#define cmin(a,b)		a=min(a,b)
#define Auto(i,node)	for(int i=LINK[node];i;i=e[i].next)
#define FILE "array"
const int MAXN=1e5+5;
const int oo=0x3f3f3f3f;
inline int read(){
	char ch=getchar();int x=0,f=1;
	while(ch>‘9‘||ch<‘0‘){if(ch==‘-‘)f=-1;ch=getchar();}
	while(ch>=‘0‘&&ch<=‘9‘){x=x*10+ch-‘0‘;ch=getchar();}
	return x*f;
}
int N,LINK[MAXN],len=0,lable[MAXN],id[MAXN],num,node=0,cnt=0,fa[MAXN];
struct edge{
	int y,next;
}e[MAXN<<1];
char opt[5];
namespace solution{
	inline void insert(int x,int y){e[++len].next=LINK[x];LINK[x]=len;e[len].y=y;}
	void slove(){
		N=read();
		memset(fa,0,sizeof(fa));
		memset(LINK,0,sizeof(LINK));
		memset(lable,0,sizeof(lable));
		lable[0]=-1;
		up(j,1,N){
			scanf("%s",opt+1);
			id[j]=node;
			if(opt[1]==‘a‘){
				num=read();bool flag=1;
				Auto(i,node)if(lable[e[i].y]==num){
					flag=0;node=e[i].y;
				}
				if(flag){
					insert(node,++cnt);
					lable[cnt]=num;
					fa[cnt]=node;node=cnt;
				}
			}else if(opt[1]==‘s‘)node=fa[node];
			else{
				num=read();
				node=id[num];
			}
			printf("%d\n",lable[node]);
		}
	}
}
int main(){
	freopen(FILE".in","r",stdin);
	freopen(FILE".out","w",stdout);
	using namespace solution;
	slove();
	return 0;
}

1112 T2

//blossom
//by Cydiater
//2016.11.12
#include <iostream>
#include <cstdlib>
#include <iomanip>
#include <algorithm>
#include <cstdio>
#include <cmath>
#include <ctime>
#include <cstring>
#include <string>
#include <map>
#include <queue>
#include <bitset>
#include <set>
using namespace std;
#define ll long long
#define up(i,j,n)		for(ll i=j;i<=n;i++)
#define down(i,j,n)		for(ll i=j;i>=n;i--)
#define cmax(a,b)		a=max(a,b)
#define cmin(a,b)		a=min(a,b)
#define FILE "blossom"
inline int read(){
	char ch=getchar();int x=0,f=1;
	while(ch>‘9‘||ch<‘0‘){if(ch==‘-‘)f=-1;ch=getchar();}
	while(ch>=‘0‘&&ch<=‘9‘){x=x*10+ch-‘0‘;ch=getchar();}
	return x*f;
}
ll N,M,lim1,lim2,ans=0;
namespace solution{
	int gcd(int a,int b){return b==0?a:gcd(b,a%b);}
	void init(){
		N=read();M=read();lim1=read();lim2=read();
	}
	void slove(){
		if(lim1<=1)ans+=(N*(M+1)+(N+1)*M);
		up(i,1,N)up(j,1,M)if(gcd(i,j)==1){
			if(i*i+j*j>=lim1*lim1&&i*i+j*j<=lim2*lim2)ans+=(N-i+1)*(M-j+1)*2;
		}
		cout<<ans<<endl;
	}
}
int main(){
	freopen(FILE".in","r",stdin);
	freopen(FILE".out","w",stdout);
	using namespace solution;
	init();
	slove();
	return 0;
}

1112 T3

//chen
//by Cydiater
//2016.11.12
#include <iostream>
#include <cstring>
#include <string>
#include <cstdio>
#include <cstdlib>
#include <iomanip>
#include <algorithm>
#include <queue>
#include <map>
#include <bitset>
#include <set>
#include <cmath>
#include <ctime>
using namespace std;
#define ll long long
#define up(i,j,n)		for(int i=j;i<=n;i++)
#define down(i,j,n)		for(int i=j;i>=n;i--)
#define cmax(a,b)		a=max(a,b)
#define cmin(a,b)		a=min(a,b)
#define FILE "chen"
const int MAXN=1e6+5;
const int oo=0x3f3f3f3f;
inline int read(){
	char ch=getchar();int x=0,f=1;
	while(ch>‘9‘||ch<‘0‘){if(ch==‘-‘)f=-1;ch=getchar();}
	while(ch>=‘0‘&&ch<=‘9‘){x=x*10+ch-‘0‘;ch=getchar();}
	return x*f;
}
ll N,num[MAXN],a[MAXN],pos,L,R,v,K[MAXN],top=0,Num[MAXN];
ll Y=0;
struct tree{
	int delta,v,maxx;
}t[MAXN<<2];
namespace solution{
	inline void downit(int root){
		int delta=t[root].delta;t[root].delta=0;
		if(delta==0)		return;
		t[root<<1].delta+=delta;t[root<<1|1].delta+=delta;
		t[root<<1].v+=delta;t[root<<1|1].v+=delta;
		t[root<<1].maxx+=delta;t[root<<1|1].maxx+=delta;
	}
	inline void reload(int root){
		t[root].v=min(t[root<<1].v,t[root<<1|1].v);
		t[root].maxx=max(t[root<<1].maxx,t[root<<1|1].maxx);
	}
	inline int Get(int x){
		int leftt=1,rightt=top,mid;
		while(leftt+1<rightt){
			mid=(leftt+rightt)>>1;
			if(num[mid]>x)	rightt=mid;
			else            leftt=mid;
		}
		if(num[leftt]==x)return leftt;
		return rightt;
	}
	void init(){
		N=read();
		up(i,1,N)num[i]=a[i]=read();
		sort(num+1,num+N+1);
		up(i,1,N)if(num[i]!=num[i-1])Num[++top]=num[i];
		memcpy(num,Num,sizeof(num));
		up(i,1,N)a[i]=Get(a[i]);
	}
	int get(int leftt,int rightt,int root){
		if(leftt!=rightt)downit(root);
		if(t[root].maxx==0)				return leftt;
		if(t[root].v==0&&leftt==rightt)	return leftt;
		if(t[root].v>0)					return oo;
		int mid=(leftt+rightt)>>1;
		return min(get(leftt,mid,root<<1),get(mid+1,rightt,root<<1|1));
	}
	void updata(int leftt,int rightt,int root){
		if(leftt!=rightt)downit(root);
		if(leftt>R||rightt<L)		return;
		if(leftt>=L&&rightt<=R){
			t[root].delta+=v;
			t[root].v+=v;
			t[root].maxx+=v;
			return;
		}
		int mid=(leftt+rightt)>>1;
		updata(leftt,mid,root<<1);
		updata(mid+1,rightt,root<<1|1);
		reload(root);
	}
	void res(int leftt,int rightt,int root){
		if(leftt==rightt){
			K[leftt]=t[root].v;
			return;
		}
		downit(root);
		int mid=(leftt+rightt)>>1;
		res(leftt,mid,root<<1);
		res(mid+1,rightt,root<<1|1);
		reload(root);
	}
	void slove(){
		up(i,1,N){
			pos=get(1,N,1);
			L=1;R=a[i];v=1;
			updata(1,N,1);
			if(a[i]+1<=pos-1){
				L=a[i]+1;R=pos-1;v=-1;
				updata(1,N,1);
			}
			Y+=num[a[i]];
		}
		pos=get(1,N,1);
		res(1,N,1);
		up(i,1,pos)Y-=K[i]*(num[i]-num[i-1]);
		cout<<Y<<endl;
	}
}
int main(){
	freopen(FILE".in","r",stdin);
	freopen(FILE".out","w",stdout);
	using namespace solution;
	init();
	slove();
	return 0;
}

这次两场发挥都比较稳定,没有什么严重的失误。也是现在意识到了对拍真的很强大。以往的观念里可能只是T3需要拍一拍,T1和T2不需要拍。这两场的T1和T2都选择先写暴力再搞正解,然后扔那里拍再去搞下一题。其实拍T1的意义并不大,但是拍了后心态就会稳很多,能明白自己多少分是已经稳了。搞下一题的时候心态也就不会那么慌。

高一的时候NOIp和省选都挂的很惨,每次都是抱憾而归。闵神讲他高一过度注重理论而轻实践导致高一走了弯路。我觉得我是过度重实践了,一定层次的竞赛考的一定不是你敲过什么。不停的学新东西固然没什么错,稳扎稳打的结果可能也没有那么出彩,但是这就是最后一次机会了,稳了两天的前两题,就是成功。

时间: 2024-12-13 22:57:08

NOIp 11.11/12的相关文章

2019.11.11~2019.11.12考试总结

这两天又考了两次试,现总结一下这两次的情况. 11.11场 开场先读题,T1感觉有点大,T2感觉不可做,T3没有思路.确定按顺序做题.先开T1,仿佛是个2-sat,先写了一会儿,发现浪费算法,然后发现T1是个模拟,不如直接写if分类讨论,1.5h左右写完并调完此题.然后开T2,3.4操作一眼打标记,不知道怎么维护1.2操作,只能打一个线段树,没过样例,查了一下错,发现没判边界,补了上去,就过样例了,重新看了一遍代码,感觉问题不大,就开T3了,时间只剩40min.T3开始读错题了,写了一个暴力发现

Atitit jquery &#160;1.4--v1.11 &#160;v1.12 &#160;v2.0 &#160;3.0 的新特性

Atitit jquery  1.4--v1.11  v1.12  v2.0  3.0 的新特性 1.1. Jquery1.12  jQuery 2.2 和 1.12 新版本发布 - OPEN资讯.html   2016.11 1.1.1. jQuery.htmlPrefilter()1 1.2. 2016.7  jq3.0 新特性1 1.3. Jq3.1新特性 jQuery 3.1.1 发布了,该版本包括一些 BUG 修复和改进.3 1.1. Jquery1.12  jQuery 2.2 和

eclipse 配置 C++ 11 -- ubuntu 12.04

安装g++ 4.8 sudo apt-get install python-software-properties sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt-get update sudo apt-get install g++-4.8 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 50 最后看看 g++ 的版本号,看是否安装

4.10/4.11/4.12 lvm讲解 4.13 磁盘故障小案例

4.10/4.11/4.12 lvm讲解 4.13 磁盘故障小案例 4.10/4.11/4.12 lvm讲解 lvm讲解 4.10 lvm讲解上 安装下lvm 如果忘记了 lvm包 pvdisplay 查看 4.11 lvm 中 查看物理卷 除了pvdisplay命令还有一个 pvs命令也可以直观查看当前的物理卷 有了物理卷之后再来创建卷组 先用俩个物理卷创建一个卷组 vgcreate vg1 /dev/sdb1 /dev/sdb2 可以查看下卷组vgdiskplay 或者 vgs vgremo

20141112,微软11月12日发布14个安全补丁

大家好,我们是微软大中华区安全支持团队. 微软于北京时间2014年11月12日发布了14个新的安全公告,其中4个为严重等级,8个为重要等级,共修复Microsoft Windows. Internet Explorer (IE). Office. .NET Framework, Internet Information Services (IIS).Remote Desktop Protocol (RDP). Active Directory Federation Services (ADFS)

TeamWork#3,Week5,Scrum Meeting 11.6, 11.7, 11.11, 11.12

11.6:到目前为止基本已完成相关知识的学习,各方面工作都开始进行,一开始进行比较慢. 11.7:项目遇到困难,需要补充相关知识,进度慢了下来. 11.11:各方面工作进展比较顺利,没有什么大问题. 11.12:爬虫程序出现问题,没有考虑到网站信息更新导致的爬虫程序可变性,下一步要更换爬虫结构.同时进行UI设计和改善.

2014年11月12~11月14日,杨学明老师《软件测试管理》内训在北京某银行软件中心成功举办!

2014年11月12~11月14日,北京天气呈现少有的APEC蓝,著名研发管理专家杨学明老师为某银行提供了三天的内训服务,此次培训由两部分组成,第一部分是<软件测试管理高级实务>.第二部分是<软件测试需求分析和测试设计>,三天的培训非常紧张,包括老师讲解,案例演练,专题研讨,过程衔接非常紧密,课堂气氛也比较轻松,来自该银行核心系统和网银两个事业部的同事参加了此次培训,包括开发,需求,测试和维护人员等,课程结束后,举行了考试,大家对三天的学习进行回顾和总结,并准备把这两天学习到知识结

11.10/11.11/11.12 安装PHP511.13安装PHP7

- 11.10/11.11/11.12 安装PHP5 - 11.13 安装PHP7 - 扩展 - php中mysql,mysqli,mysqlnd,pdo到底是什么 - http://blog.csdn.net/u013785951/article/details/60876816 - 查看编译参数 http://ask.apelearn.com/question/1295 # 11.10安装PHP5 上 -  PHP官网www.php.net -  当前主流版本为5.6/7.1  1.   c

阅读&lt;构建之法&gt;第三10、11、12章并提出问题

<构建之法>第10.11.12章 第10章: 问题:对我们了解了用户的需求后,但是我们想法和做出来的软件会和用户的需求有偏差,比如风格.界面的修饰等等,那么我们程序猿怎样才能让自己的想法更加靠近用户的想法呢?是设身处境么? 第11章: 问题:我们现在这个阶段是在做四则运算APP,如果按照这章的步骤走下去,每天都要进行进度更新,和每日会议还有每日构建的,会不会不太符合我们现在的处境?毕竟我们的所有时间不能只为一门课程服务,还要大量的时间花在其他的课程上呢. 第12章: 问题:在实际的项目中,我们