山东省第七届ACM省赛 Swiss-system tournament
来源:互联网 发布:java正则表达式是什么 编辑:程序博客网 时间:2024/05/22 12:52
用并归排序
改别人的代码,自己的数组越界boom,怎么都找不到bug,气死了,求大神改正
#include <bits/stdc++.h>using namespace std;const int Max = 100100;struct node{ int sore; int ali; int Id; bool operator < (const node &a)const { return sore == a.sore ? Id<a.Id : sore > a.sore; }}a[Max*2],b[Max],c[Max];void Solve(int n){ int num1 = 0,num2 = 0; for(int i = 0;i<n;i+=2) { if(a[i].ali > a[i+1].ali) { b[num1]= a[i]; b[num1].sore++; num1++; c[num2++] = a[i+1]; } else { b[num1]= a[i+1]; b[num1].sore++; num1++; c[num2++] = a[i]; } } n=n/2; int i = 0 ,j = 0,k=0; for(i=0; i<n*2; i++) { if(b[j].sore>c[k].sore) { a[i]=b[j++]; } else if(b[j].sore==c[k].sore&&b[j].Id<c[k].Id) { a[i]=b[j++]; } else a[i]=c[k++]; if(j>=n||k>=n)break; } if(j>=n) for(i=i+1; i<n*2; i++) a[i]=c[k++]; else for(i=i+1; i<n*2; i++) a[i]=b[j++];}int main(){ int T; int n,m,k; scanf("%d",&T); while(T--) { scanf("%d %d %d",&n,&m,&k); n = 2*n; for(int i = 0;i<n;i++) { scanf("%d",&a[i].sore); a[i].Id = i+1; } for(int i = 0;i<n;i++) scanf("%d",&a[i].ali); sort(a,a+n); while(m--) { Solve(n); } printf("%d\n",a[k-1].Id); } return 0;}自己的
#include <bits/stdc++.h>using namespace std;const int Max = 1000100;struct node{ int x,y,i;}a[Max*2],b[Max],c[Max],t1;bool cmp(node a,node b){ if(a.x!=b.x)return a.x>b.x; else return a.i<b.i;}int main(){ int t; scanf("%d",&t); while(t--) { int n,r,q; scanf("%d%d%d",&n,&r,&q); for(int i=1; i<=2*n; i++) { scanf("%d",&a[i].x); a[i].i=i; } for(int i=1; i<=2*n; i++) scanf("%d",&a[i].y); sort(a+1,a+n*2+1,cmp); int i,num1,num2; num1=num2=0; while(r--) { for(i=1; i<=2*n; i+=2) { if(a[i].y>a[i+1].y) { a[i].x++; b[++num1]=a[i]; c[++num2]=a[i+1]; } else { a[i+1].x++; b[++num1]=a[i+1]; c[++num2]=a[i]; } } int j,k; j=k=1; for(i=1; i<=n*2; i++) { if(b[j].x>c[k].x) { a[i]=b[j++]; } else if(b[j].x==c[k].x&&b[j].i<c[k].i) { a[i]=b[j++]; } else a[i]=c[k++]; if(j>n||k>n)break; } if(j>n) for(i=i+1; i<=n*2; i++) a[i]=c[k++]; else for(i=i+1; i<=n*2; i++) a[i]=b[j++]; } printf("%d\n",a[q].i); } return 0;}/***************************************************User name: 但求心安Result: Runtime ErrorTake time: 0msTake Memory: 0KBSubmit time: 2017-04-20 17:23:54****************************************************/
0 0
- 山东省第七届ACM省赛 Swiss-system tournament
- 第七届ACM山东省赛-D Swiss-system tournament
- 第七届 山东省ACM Swiss-system tournament(归并思想)
- 第七届ACM山东省赛-D Swiss-system tournament
- 山东省acm省赛 D题Swiss-system tournetment
- SDUT 3563 Swiss-system tournament【思维+模拟】
- 山东省第七届ACM省赛------Julyed
- 山东省第七届ACM省赛------Fibonacci
- 山东省第七届ACM省赛------Triple Nim
- 山东省第七届ACM省赛------Reversed Words
- 山东省第七届ACM省赛------Memory Leak
- 山东省第七届ACM省赛 Triple Nim
- 第七届山东省ACM省赛 A Julyed
- 第七届山东省ACM省赛 B Fibonacci
- 第七届山东省ACM省赛 C Proxy
- Hrbust 2311(Swiss-system tournament)归并排序
- 山东省第七届ACM省赛------The Binding of Isaac
- 2016山东省第七届acm省赛 G题Triple Nim
- js之事件冒泡和事件捕获详细介绍
- 浅谈Java中的Set、List、Map的区别
- getResource中文或有空格路径处理
- Mac使用ssh无密码登录Ubuntu
- css一些笔记
- 山东省第七届ACM省赛 Swiss-system tournament
- maven-bundle-plugin
- Bit操作整理
- i2c 编程接口
- 摄像头相关
- 解决ssh无法连接服务器问题,ssh上传和下载文件详解
- android开机动画启动流程
- hdu2899 (三分/二分/模拟退火)
- easyui datagrid 的简单实现