NOIP2011瑞士轮

如题所述

  我觉得应该先快排, 加代码:
  type re=record
  s:longint;
  w:longint;
  num:longint;
  end;
  var n,n1,r,q,i,j,x,y,p,c:longint;
  t:re;
  f:array[0..1,0..1000000]of re;
  procedure qsort(l,r:longint);
  var i,j:longint;
  w:re;
  begin
  i:=l;
  j:=r;
  w:=f[1,(l+r)div 2];
  while(i<=j)do
  begin
  while( (f[1,i].s>w.s) or ((f[1,i].s=w.s) and (f[1,i].num<w.num) ) )do
  inc(i);
  while( (f[1,j].s<w.s) or ((f[1,j].s=w.s) and (f[1,j].num>w.num) ) )do
  dec(j);
  if i<=j then begin
  t:=f[1,i];
  f[1,i]:=f[1,j];
  f[1,j]:=t;
  inc(i);
  dec(j);
  end;
  end;
  if i<r then
  qsort(i,r);
  if j>l then
  qsort(l,j);
  end;
  begin
  readln(n,r,q);
  n1:=n;
  n:=n*2;
  for i:=1 to n do read(f[1,i].s);
  for i:=1 to n do
  begin
  read(f[1,i].w);
  f[1,i].num:=i;
  end;
  c:=1;
  qsort(1,n);
  for p:=1 to r do
  begin
  for i:=1 to n1 do
  begin
  if f[c,i*2-1].w<f[c,i*2].w then
  begin
  inc(f[c,i*2].s);
  t:=f[c,i*2-1];
  f[c,i*2-1]:=f[c,i*2];
  f[c,i*2]:=t;
  end
  else
  inc(f[c,i*2-1].s);
  end;
  x:=1;
  y:=2;
  for i:=1 to n do
  begin
  if (x<n)and((f[c,x].s>f[c,y].s) or
  ((f[c,x].s=f[c,y].s)and(f[c,x].num<f[c,y].num))) then
  begin
  f[1-c,i]:=f[c,x];
  inc(x,2);
  end
  else
  begin
  f[1-c,i]:=f[c,y];
  inc(y,2);
  end;
  end;
  c:=1-c;
  end;
  writeln(f[c,q].num);
  end.
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-02-04
归并排序。
胜的分一组是有序的,败的分一组也是有序的。
归并O(n)。

参考资料:http://zhidao.baidu.com/question/352975637.html

NOIP2011普及组复赛第二题瑞士轮C语言解答,急啊
NOIP2011普及组复赛第三题才是瑞士轮,这类题目耗费时间,提供C语言参考,转换C语言相对容易。使用头文件,定义变量N、R、Q,以及计数器Count1、Count2。创建玩家结构体数组p[200005]、p1[100002]、p2[100002]。定义cmp函数用于比较玩家s属性,当s相同时比较num。设置变量t1、t2为0。输入N、R、Q,初...

NOIP2011 第三题 瑞士轮怎么做?
先快排,接着比赛,比赛同时分成失败组和胜利组,2组有序,归并排序,继续比赛再归并就OK了

NOIP2011瑞士轮
我觉得应该先快排, 加代码:type re=record s:longint;w:longint;num:longint;end;var n,n1,r,q,i,j,x,y,p,c:longint;t:re;f:array[0..1,0..1000000]of re;procedure qsort(l,r:longint);var i,j:longint;w:re;begin i:=l;j:=r;w:=f[1,(l+r)div 2];while(i<=...

NOIP2011年普及组试题哪里有
全国信息学奥林匹克联赛(NOIP2011)复赛 普及组 (请选手务必仔细阅读本页内容) 一.题目概况中文题目名称 数字反转 统计单词数 瑞士轮 表达式的值英文题目与子目录名 reverse stat swiss exp 可执行文件名 reverse stat swiss exp 输入文件名 reverse.in stat.in swiss.in exp.in 输出文件名 reverse.out stat.o...

相似回答
大家正在搜