好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

CF#269DIV2A,B,C,D_html/css_WEB-ITnose

A

http://codeforces.com/contest/471/problem/A

解题思路:给你6个数,问是否有至少4个数都相等,没有的话 输出“Alien”,有的话再看剩下的两个数,如果相等就 输出"

Elephant",否则 
输出"
Bear"; 

#include  #include  #include  #include  #include #include  #include  #include  #include  #include  #include  #include  #include  #include  #include  #define Maxn 100005#define Maxm 1000005#define lowbit(x) x&(-x)#define lson l,m,rt 
B

http://codeforces.com/contest/471/problem/B 

解题思路:给你一个序列,问是否有三种不同的方法使它们按非减序排序,显然只有有2个相等的元素集合数大于等于2时或者有3个相等的元素的集合时才有解,有解的时候集合内排序一下,我写的很繁,导致后面的题目没写,整场就跪了 

#include  #include  #include  #include  #include #include  #include  #include  #include  #include  #include  #include  #include  #include  #include  #define Maxn 100005#define Maxm 1000005#define lowbit(x) x&(-x)#define lson l,m,rt 2)			{				flag=true;				break;			}			if(m[i]==2)				cnt++;		}		if(flag||cnt>=2)		{			puts("YES");			sort(arr+1,arr+1+n);			if(flag)			{				for(i=1;i 2)						break;				}				int a=arr[i].id;				int b=arr[i+1].id;				int c=arr[i+2].id;				//cout i+2)					{						printf("%d%c",arr[j].id,j==n?'\n':' ');					}					else if(i==n-2)					{						printf("%d %d %d\n",b,a,c);						j+=2;					}					else					{						printf("%d %d %d ",b,a,c);						j+=2;					}				}				for(j=1;j i+2)					{						printf("%d%c",arr[j].id,j==n?'\n':' ');					}					else if(i==n-2)					{						printf("%d %d %d\n",c,b,a);						j+=2;					}					else					{						printf("%d %d %d ",c,b,a);						j+=2;					}				}			}			else			{				int f1,f2;				for(i=1;i f2+1))						printf("%d%c",arr[i].id,i==n?'\n':' ');					else if(i>=f1&&i =f2&&i f1+1)&&(i f2+1))						printf("%d%c",arr[i].id,i==n?'\n':' ');					else if(i>=f1&&i =f2&&i f1+1)&&(i f2+1))						printf("%d%c",arr[i].id,i==n?'\n':' ');					else if(i>=f1&&i =f2&&i 
C

http://codeforces.com/contest/471/problem/C 

解题思路:首先二分出n个棍子最多可以搭几层,然后从1开始枚举,注意到每一层的数目都是一个公差为3的等差数列,判断一下这一层能否满足n的需求即可

#include  #include  #include  #include  #include #include  #include  #include  #include  #include  #include  #include  #include  #include  #include  #define Maxn 100005#define Maxm 1000005#define lowbit(x) x&(-x)#define lson l,m,rt =l)		{			LL m=(l+r)>>1;			if(cal(m) 
D

 http://codeforces.com/problemset/problem/471/D  

 解题思路:做出两个数列的相邻两项的差分数列,KMP判断短的差分数列在长的差分数列中出现几次即可,特判n=1和w=1的情况  

  
#include  #include  #include  #include  #include #include  #include  #include  #include  #include  #include  #include  #include  #include  #include  #define Maxn 100005#define Maxm 1000005#define lowbit(x) x&(-x)#define lson l,m,rt =1)				ca[i-1]=a[i]-a[i-1];		}		for(int i=0;i =1)				cb[i-1]=b[i]-b[i-1];		}		if(m==1||n==1)		{			printf("%d\n",max(m,n));			continue;		}		printf("%d\n",m>=n?kmp(ca,cb,m-1,n-1):kmp(cb,ca,n-1,m-1));	}	return 0;} 


查看更多关于CF#269DIV2A,B,C,D_html/css_WEB-ITnose的详细内容...

  阅读:36次