- 23
- 0
- 约1.03万字
- 约 28页
- 2017-05-06 发布于贵州
- 举报
2011年北京市海淀区信息学竞赛中学组解题报告
2011年北京市海淀区信息学竞赛中学组解题报告
NB2011初中组解题报告
NB2011初中组 T1 斯诺克 snooker
此题是模拟,基本按题目说的写就好。
需要注意的几点是:
1.打错的球不影响任何状态改变
2.打完15个红球之后特判
3.给对手加分时判断球分是否小于4
4.注意两人切换时除了击球次数重新算 其他状态均不变
代码: /gmtWn
var
i,rnum,q:longint;
n,s:array[1..2] of longint;
procedure deal(x:longint);
var
i,a:longint;
begin
for i:=1 to n[x] do
begin
read(a);
if a=0 then
inc(s[3-x],4)
else
if rnum15 then
begin
if odd(i) then
begin
if a1 then
begin
if a4 then
inc(s[3-x],4)
else
inc(s[3-x],a);
end
else
begin
inc(s[x],1);
inc(rnum);
end;
end
else
begin
if a=1 then
inc(s[3-x],4)
else
inc(s[x],a);
end;
end
else
begin
if q=-1 then
begin
inc(s[x],a);
q:=1;
end
else
begin
if a=q+1 then
begin
inc(s[x],a);
q:=a;
end
else
if a4 then
inc(s[3-x],4)
else
inc(s[3-x],a);
end;
end;
end;
end;
begin
assign(input,#39;snooker.in#39;);reset(input);
assign(output,#39;snooker.out#39;);rewrite(output);
read(n[1],n[2]);
s[1]:=0;s[2]:=0;
rnum:=0;q:=-1;
deal(1);deal(2);
writeln(s[1],#39; #39;,s[2]);
close(input);close(output);
end.
题解:
此题显然是排序+统计
首先观察“牛人”的定义:对于人A,如果其它n-1个人中,没有人的智力值和能力值都比A高,则我们称A为“牛人”。
我们很容易得到一个等价的定义是:对于人A,在如果智力值比A高的人中没有一个体力值比A高,那么A为“牛人”。
于是我们得到如下一个算法:
首先对所有人的智力值排序
然后按智力值从大到小考虑每个人 将他的体力值(记为t)与已考虑过的人(即智力值大于此人的人)的体力值的最大值(记为max)比较,若t=max 那么说明这个人是“牛人” 否则这个人不是。
不难发现这个处理过程是O(n)的 加上排序的复杂度O(n log n) 所以整个算法的时间复杂度是O(n log n)
有个细节要注意 就是智力值相同的情况下的判断。一种方法是每次考虑所有智力值一样的一组人 不过这样实现起来比较麻烦。另一种方法是对于数据按需要进行双关键字排序(第一关键字从小到大 第二关键字从大到小 然后从n向1统计),然后直接统计。
Code: /rlri0
var
a:array[1..100000,1..2] of int64;
i,n,ans:longint;
max:int64;
procedure fs(s,e:longint);
var
m,k,j:longint;
ms:array[1..2] of int64;
begin
m:=(s+e) shr 1;k:=s;j:=e;
ms:=a[m];a[m]:=a[k];
while kj do
begin
while
(kj)and((a[j,1]ms[1])or((a[j,1]=ms[1])and(a[j,2]ms[2]))) do dec(j); if kj then begin a[k]:=a[j];inc(k);end;
while
(kj)and((a[k,1]ms[1])or((a[k,1]=ms[1])and(a[k,2]ms[2]))) do inc(k); if kj then begin a[j]:=a[k];dec(j);end;
end;
a[k]:=ms;
if sk-1 then fs(s,k-1);
if j+1e then fs(j+1,e);
end;
begin
assign(input,#39;niuren.in#39;);reset(input);
assign(output,#39;niuren.out#39;);rewr
原创力文档

文档评论(0)