【模拟】XMU 1054 Hacker
题目链接:
http://acm.xmu.edu.cn/JudgeOnline/problem.php?id=1054
题目大意:
多组数据,n=0结束。给定n(n<=1 000 000)和n个ip(*.*.*.*)求出现次数超过一半的ip是多少(数据保证有)。
题目思路:
【模拟】
暴力模拟能A。
暴力排序能A。
排序:
1 // 2 //by coolxxx 3 // 4 #include<iostream> 5 #include<algorithm> 6 #include<string> 7 #include<iomanip> 8 #include<memory.h> 9 #include<time.h> 10 #include<stdio.h> 11 #include<stdlib.h> 12 #include<string.h> 13 //#include<stdbool.h> 14 #include<math.h> 15 #define min(a,b) ((a)<(b)?(a):(b)) 16 #define max(a,b) ((a)>(b)?(a):(b)) 17 #define abs(a) ((a)>0?(a):(-(a))) 18 #define lowbit(a) (a&(-a)) 19 #define sqr(a) ((a)*(a)) 20 #define swap(a,b) ((a)^=(b),(b)^=(a),(a)^=(b)) 21 #define eps (1e-8) 22 #define J 10000000 23 #define MAX 0x7f7f7f7f 24 #define PI 3.1415926535897 25 #define N 1000004 26 using namespace std; 27 typedef long long LL; 28 int cas,cass; 29 int n,m,lll,ans; 30 struct xxx 31 { 32 int s1,s2,s3,s4; 33 }a[N]; 34 bool cmp(xxx aa,xxx bb) 35 { 36 if(aa.s1!=bb.s1)return aa.s1<bb.s1; 37 if(aa.s2!=bb.s2)return aa.s2<bb.s2; 38 if(aa.s3!=bb.s3)return aa.s3<bb.s3; 39 return aa.s4<bb.s4; 40 } 41 int main() 42 { 43 #ifndef ONLINE_JUDGE 44 // freopen("1.txt","r",stdin); 45 // freopen("2.txt","w",stdout); 46 #endif 47 int i,j,k; 48 // for(scanf("%d",&cas);cas;cas--) 49 // for(scanf("%d",&cas),cass=1;cass<=cas;cass++) 50 // while(~scanf("%s",s)) 51 while(~scanf("%d",&n) && n) 52 { 53 printf("Case %d:\n",++cas); 54 for(i=1;i<=n;i++) 55 scanf("%d.%d.%d.%d",&a[i].s1,&a[i].s2,&a[i].s3,&a[i].s4); 56 sort(a+1,a+1+n,cmp); 57 printf("%d.%d.%d.%d\n",a[(n+1)/2].s1,a[(n+1)/2].s2,a[(n+1)/2].s3,a[(n+1)/2].s4); 58 } 59 return 0; 60 } 61 /* 62 // 63 64 // 65 */
模拟:
1 // 2 //by coolxxx 3 // 4 #include<iostream> 5 #include<algorithm> 6 #include<string> 7 #include<iomanip> 8 #include<memory.h> 9 #include<time.h> 10 #include<stdio.h> 11 #include<stdlib.h> 12 #include<string.h> 13 //#include<stdbool.h> 14 #include<math.h> 15 #define min(a,b) ((a)<(b)?(a):(b)) 16 #define max(a,b) ((a)>(b)?(a):(b)) 17 #define abs(a) ((a)>0?(a):(-(a))) 18 #define lowbit(a) (a&(-a)) 19 #define sqr(a) ((a)*(a)) 20 #define swap(a,b) ((a)^=(b),(b)^=(a),(a)^=(b)) 21 #define eps (1e-8) 22 #define J 10000000 23 #define MAX 0x7f7f7f7f 24 #define PI 3.1415926535897 25 #define N 256 26 using namespace std; 27 typedef long long LL; 28 int cas,cass; 29 int n,m,lll,ans; 30 int u[4][N]; 31 int a,b,c,d,aa,bb,cc,dd; 32 int main() 33 { 34 #ifndef ONLINE_JUDGE 35 // freopen("1.txt","r",stdin); 36 // freopen("2.txt","w",stdout); 37 #endif 38 int i,j,k; 39 // for(scanf("%d",&cas);cas;cas--) 40 // for(scanf("%d",&cas),cass=1;cass<=cas;cass++) 41 // while(~scanf("%s",s)) 42 while(~scanf("%d",&n) && n) 43 { 44 printf("Case %d:\n",++cas); 45 memset(u,0,sizeof(u)); 46 aa=bb=cc=dd=0; 47 for(i=1;i<=n;i++) 48 { 49 scanf("%d.%d.%d.%d",&a,&b,&c,&d); 50 u[0][a]++;u[1][b]++;u[2][c]++;u[3][d]++; 51 if(u[0][a]>n/2)aa=a; 52 if(u[1][b]>n/2)bb=b; 53 if(u[2][c]>n/2)cc=c; 54 if(u[3][d]>n/2)dd=d; 55 } 56 printf("%d.%d.%d.%d\n",aa,bb,cc,dd); 57 } 58 return 0; 59 } 60 /* 61 // 62 63 // 64 */