您的位置:首页 > 其它

【NOIP2014模拟9.9】逆光 (Standard IO)

2017-01-13 21:33 369 查看

题意:

一些向右向左的花,把他们全部搞掉,如果被搞掉的被一朵花看到那么就会好感度减一,问你一共会减多少。花少于2000000

思路:

简单一想,他们只有><才会被看到,>>,<<,<>都不会被看到,那么就是求有多少个><这样的匹配,还是会超时,只需要>做一下前缀和就好了。

程序:

const
maxn=1000000;
var
a,f,b:array [0..maxn] of longint;
i,j,n:longint;
ans:int64;
procedure qsort(l,r:longint);
var
i,j,mid:longint;
begin
i:=l; j:=r;
mid:=f[(l+r) div 2];
while i<j do
begin
while f[i]>mid do inc(i);
while f[j]<mid do dec(j);
if i<=j then
begin
f[0]:=f[i];
f[i]:=f[j];
f[j]:=f[0];
b[0]:=b[i];
b[i]:=b[j];
b[j]:=b[0];
inc(i); dec(j);
end;
end;
if l<j then qsort(l,j);
if r>i then qsort(i,r);
end;

begin
readln(n);
for i:=1 to n do
begin
read(a[i]);
b[i]:=i;
if a[i]=1 then f[i]:=f[i-1]+1
else f[i]:=f[i-1];
end;
for i:=1 to n do
if a[i]=0 then ans:=ans+f[i-1];
writeln(ans);
end.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: