1001 排序模拟
#include <iostream> #include "stdio.h" #include "stdlib.h" #include "string.h" #include "math.h" #include "algorithm" #include <queue> using namespace std; #define modulo 1000000007 int a[10001]; int main(void) { int n,temp,maxn; while(scanf("%d",&n)!=EOF) { maxn=0; memset(a,0,sizeof a); for(int i=0;i<n;i++) { scanf("%d",&temp); a[temp]++; if(a[temp]>a[maxn]) maxn=temp; } if(a[maxn]>(n/2)) printf("%d\n",maxn); else printf("-1\n"); } }
1002
题意:给出一些整点点 判断这些点中是否可以构成正三角,正四边,正五边形,正六边形 输出答案的总数
被题解秀智商了 整点不可能构造出正三角 正五边 正六边 因此暴力直接判断构成正四边形的个数即可!
#include <iostream> #include "stdio.h" #include "stdlib.h" #include "string.h" #include "math.h" #include "algorithm" #include <queue> using namespace std; #define modulo 1000000007 double len[6]; struct node{ double x,y; }p[21]; int sgn(double a,double b) { if(a-b>=-1e-8&&a-b<=1e-8) return 0; else return 1; } double dis(node a,node b) { return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)); } bool judge(node a,node b,node c,node d) { int leap=0; double temp; len[0]=dis(a,b); len[1]=dis(a,c); len[2]=dis(a,d); len[3]=dis(b,c); len[4]=dis(c,d); len[5]=dis(b,d); for(int i=0;i<6;i++) if(len[i]==len[0]) leap++; else temp=len[i]; for(int i=0;i<6;i++) if(len[i]==temp) leap++; if(leap==6) { if(temp<len[0]) swap(temp,len[0]); if(!sgn(len[0]*len[0]*2,temp*temp)) return true; } return false; } int main() { int n,pos,ans; while(scanf("%d",&n)!=EOF) { pos=0;ans=0; for(int i=0;i<n;i++) { scanf("%lf%lf",&p[pos].x,&p[pos].y); pos++; } for(int i=0;i<pos-3;i++) for(int j=i+1;j<pos-2;j++) for(int k=j+1;k<pos-1;k++) for(int l=k+1;l<pos;l++) if(judge(p[i],p[j],p[k],p[l])) ans++; printf("%d\n",ans); } }
1003 简单DP
#include <iostream> #include "stdio.h" #include "stdlib.h" #include "string.h" #include "math.h" #include "algorithm" #include <queue> using namespace std; #define modulo 1000000007 long long int a[100]; int main(void) { int n; a[1]=1;a[2]=2;a[3]=3; for(int i=4;i<=60;i++) a[i]=a[i-1]+a[i-3]+1; while(scanf("%d",&n)!=EOF) { printf("%lld\n",a[n]); } }