poj2886
2024-08-26 06:48:31
反素数范围不大,可以直接打表得
然后就是模拟移动的过程
我们可以用线段树优化,具体明天再说吧
const op:array[..] of longint=(,,,,,,,,,,,,,,
,,,,,,,,
,,,,,,,
,,,,,);
fac:array[..] of longint=(,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,
,,,,);
var tree:array[..] of longint;
a:array[..] of longint;
nam:array[..] of string[];
p,k,i,w,h,n,m:longint;
ch:char; procedure build(i,l,r:longint);
var m:longint;
begin
if l=r then
tree[i]:=
else begin
m:=(l+r) shr ;
build(i*,l,m);
build(i*+,m+,r);
tree[i]:=tree[i*]+tree[i*+];
end;
end; procedure work(i,l,r:longint);
var m:longint;
begin
if l=r then
tree[i]:=
else begin
m:=(l+r) shr ;
if k<=m then work(i*,l,m)
else work(i*+,m+,r);
tree[i]:=tree[i*]+tree[i*+]
end;
end; function sum(i,l,r:longint):longint;
var m:longint;
begin
if (<=l) and (k>=r) then
exit(tree[i])
else begin
m:=(l+r) shr ;
sum:=;
if m>= then sum:=sum+sum(i*,l,m);
if k>m then sum:=sum+sum(i*+,m+,r);
end;
end; function ask(i,l,r:longint):longint;
var m:longint;
begin
if l=r then exit(l)
else begin
m:=(l+r) shr ;
if w>tree[i*] then
begin
w:=w-tree[i*];
exit(ask(i*+,m+,r));
end
else exit(ask(i*,l,m));
end;
end; begin
while not eof do
begin
readln(n,k);
for i:= downto do
if (op[i]<=n) then
begin
p:=i;
break;
end; m:=n;
for i:= to n do
begin
nam[i]:='';
read(ch);
while ch<>' ' do
begin
nam[i]:=nam[i]+ch;
read(ch);
end;
readln(a[i]);
end;
build(,,n); for i:= to op[p]- do
begin
dec(m);
work(,,n);
if a[k]< then //分类讨论,找下一个人
begin
w:=-a[k];
h:=sum(,,n);
if w<=h then
begin
w:=h-w+;
k:=ask(,,n);
end
else begin
w:=(w-h-) mod m+;
w:=m-w+;
k:=ask(,,n);
end;
end
else begin
w:=a[k];
h:=sum(,,n);
if w<=m-h then
begin
w:=w+h;
k:=ask(,,n);
end
else begin
w:=w-(m-h);
w:=(w-) mod m+;
k:=ask(,,n);
end;
end;
end;
writeln(nam[k],' ',fac[p]);
end;
end.
最新文章
- hibernate通过xml配置文件实现表与实体的映射
- 基于NPOI的报表引擎——ExcelReport
- SSH框架整合项目(一)——搭建平台和引入依赖
- php判断请求类型 ajax、get还是post类型
- 烂泥:KVM使用NAT联网并为VM配置iptables端口转发
- [R语言]forecast.Arima中使用xreg报错
- Android LruCache(Picasso内存缓存)
- jce
- InnoSetup打包exe安装应用程序,并添加卸载图标 转
- MariaDB Galera Cluster 部署
- js的数据处理记录
- js即时监听文本内容
- Cipher(置换群)
- [置顶] CF 86D Powerful array 分块算法入门,n*sqrt(n)
- git本机服务器配置(二):TortoiseGit的安装
- MVC简单的增删改查
- VsCode 使用专用编程字体FiraCode
- SQL中的ALL,ANY,SOME的用法
- DM
- Lab 1-1