3203: [Sdoi2013]保护出题人

2013年6月03日 16:21

http://www.lydsy.com/JudgeOnline/problem.php?id=3203

RunID User Problem Result Memory Time Language Code_Length Submit_Time
427418 Liu_Ts 3203 Accepted 5884 kb 264 ms C++ 1119 B 2013-06-03 15:47:57

 

题意

题目很复杂0.0

对于每一关,会加一个血量为a[i]的僵尸在队首,每个僵尸之间间隔d,

队首的坐标为x[i],僵尸移动速度1单位长度/s

每次求一个植物的最小攻击力y[i]点血/s,使得出题人不被吃掉的情况下,打死所有僵尸。

注意:如果某次植物攻击,大于当前僵尸的血量,超出的攻击力会打到下一个僵尸。

题解

设s[i]=sigm(a[i])

则y[i]=max{(s[i]-s[j-1])/(x[i]+(i-j)*d)}  (i≥j);

于是对于每个僵尸j我们设点(j*d,s[j-1]),

那么答案就相当于每次给定一个点(x[i]+i*d,s[i]),

在当前僵尸中求一个点使得这两个点的斜率最大。

这样维护下凸壳,再二分就可以了。

 

 

Tags: SDOI bzoj
评论(0) 阅读(1958)

3130: [Sdoi2013]费用流

2013年4月16日 14:16

http://www.lydsy.com/JudgeOnline/problem.php?id=3130

RunID User Problem Result Memory Time Language Code_Length Submit_Time
391645 Liu_Ts 3130 Accepted 864 kb 76 ms C++ 1934 B 2013-04-16 14:07:23

 

题意

一个图(有重边,无自环),给定一个整数P

第一问:求1到N最大流。

第二问:Alice确定一种最大流的方案,Bob给一些边分配费用,各边的单位费用和为P;求在Bob采取最优策略的情况下,Alice如何确定最大流方案,能使得最后总费用最小。

题解

显然Bob的最优策略就是把当前流量最大的一条边加上费用P;

所以Alice就要使最大流量最小。

二分答案,要注意这题因为有重边所以答案可能为实数!

 

Tags: bzoj SDOI
评论(0) 阅读(1890)

3122: [Sdoi2013]随机数生成器

2013年4月15日 19:51

http://www.lydsy.com/JudgeOnline/problem.php?id=3122

RunID User Problem Result Memory Time Language Code_Length Submit_Time
391145 Liu_Ts 3122 Accepted 9100 kb 1488 ms C++ 2158 B 2013-04-15 17:39:23

 

题意

已知Xi+1=(aXi + b)mod p;

给定X1,a,b,p(质数),t

求第一个满足Xn=t的n

题解

把原式化开,得

Xn=[a^(n-1)*X1+b*(a^(n-2)+a^(n-3)+..+a^0)]mod p;

分情况讨论

①X1=t时,ans=1;

②a=0时,

    1.b=t时,ans=2;

    2.b!=t时,ans=-1;

③a=1时,

    Xn=[X1+b*(n-1)]mod p=t

    移向之后,相当于求xb+yp=(t-X1)mod p;

    扩展gcd,ans=x+1;

④a>1时,

    Xn=[a^(n-1)*X1+b*(a^(n-1)-1)/(a-1)]mod p

    设c=(a-1)在模p意义下的逆元,即c=(a-1)^(p-2);

    Xn=[a^(n-1)*X1+bc*(a^(n-1)-1)]mod p

    化简得Xn=[(X1+bc)*a^(n-1)-bc]mod p=t

    令q=X1+bc,t`=(t+bc)mod p,

    移向后相当于求[q*a^(n-1)]mod p=t'

    接下来我的做法是,先求xq+yp=t'的解x;

    问题变为求a^x` mod p=x,ans=x`+1。就和山东11年的计算器那题一样了。

 

Tags: SDOI bzoj
评论(1) 阅读(1821)

3124: [Sdoi2013]直径

2013年4月15日 16:39

http://www.lydsy.com/JudgeOnline/problem.php?id=3124

RunID User Problem Result Memory Time Language Code_Length Submit_Time
391083 Liu_Ts 3124 Accepted 14000 kb 1572 ms C++ 1383 B 2013-04-15 16:26:40

 

题意

一棵树,求直径和有多少条边一定在直径上。

题解

我就不说我省选有多傻叉了。

首先DFS求出直径,

显然一定在直径上的边一定是任意一条直径上连续的一段。

所以我们遍历求出的直径(红色+蓝色)上的每个点x,

如果以这个点为起点,在不访问直径上的点的情况下,

求出一条最长链,图中的黑色

如果等于蓝色的长度或红色的长度,那么这段蓝色或红色就不是一定在直径上。

这样不断缩小左右端点,剩下的链上的边就是答案

 

Tags: SDOI bzoj
评论(0) 阅读(1757)

1878: [SDOI2009]HH的项链

2013年3月28日 08:54

http://www.lydsy.com/JudgeOnline/problem.php?id=1878

RunID User Problem Result Memory Time Language Code_Length Submit_Time
378013 Liu_Ts 1878 Accepted 32056 kb 1260 ms C++ 1081 B 2013-03-28 08:46:15

 

题意

给定一个序列,询问每个区间上有多少不同的数字。

题解

因为没有修改,所以离线做就可以了。

把询问按右端点排序,

从前到后,对于每个颜色,

在它上一次出现的地方的后一点+1,

在当前位置的后一点-1;

当前询问答案为ΣXi(1..L)

 

Tags: SDOI bzoj
评论(1) 阅读(1885)