自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(1165)
  • 收藏
  • 关注

原创 [BZOJ2709][Violet 1]迷宫花园(二分+spfa)

题目描述传送门题解二分答案+spfa判定代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#include<queue>using namespace std;#define N 50005const double eps=1e-7;char str[105][

2017-03-17 19:16:27 530

原创 [BZOJ1555][HN集训2008]KD之死(贪心+堆)

题目描述传送门题解首先考虑没有车、只有两个物品ab的情况 若a放在b上面,那么这个东西的承重量为bt-aw 反之承重量为at-bw 显然若bt-aw>at-bw,即at+aw<<bt-bw的话,a放在b上是更优的我们把车当做一个必选的物品,并且从上到下选,这样每次只需要考虑新放入的物品的承重量和之前放入的所有物品的重量和 那么应该先按照w+t排序 如果当前的物品为必选的,那么一定要选,如果

2017-03-17 18:41:52 736

原创 [BZOJ3578]GTY的人类基因组计划2(hash+set)

题目描述传送门题解用一个set维护当前所有可以做实验的房间 对于每一坨人搞一个hash值(据说可以随机一些大整数,我用了一个S进制数胡搞) 然后用一个map记录一下每一个hash值是否出现过 当把一个人挪到另一个房间去的时候重新计算一下hash值,并维护set upper_bound找到大于它的最小的 lower_bound找到大于等于它的最小的代码#include<algorithm>

2017-03-17 14:47:12 1040

原创 [luogu3373][模板]线段树 2(线段树)

题目描述传送门题解维护一个乘法标记和加法标记 当加法标记遇上乘法标记->直接加 当乘法标记遇上加法标记->将加法标记乘上乘法标记 每一次更新先考虑乘再考虑加代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;#define

2017-03-17 11:18:08 643

原创 [BZOJ1493][NOI2007]项链工厂(splay)

题目描述传送门题解好久没写数据结构了 维护size、有几段sum、最左边和最右边的颜色lc和rc 需要注意的几个地方: 1、因为在开始和结尾插入了点,注意find的编号问题 2、所有标记都是对当前点已经做过但是对儿子并没有做过 3、交换的时候要同时交换lc和rc 4、提取区间之后要将根的右儿子和根都update 5、rotate和find的时候不要忘了update和pushdown

2017-03-17 11:14:34 597

原创 [BZOJ3544][ONTAK2010]Creative Accounting(数学相关+set)

题目描述传送门题解一段区间的sigma可以转化为前缀和相减 而如果将前缀和都取模m意义下那么所有的都变成了1..m-1中的一个数 那么如果当前的前缀和为x,如何查询x-?的最大值如果之前的前缀和有比x大的数y,那么答案一定为(x-y)%m 否则为x%m x-y<0 -> (x-y)%m=m-(y-x) y<=m -> m-(y-x)>=x 所以实际上就是查询一下是否有比x大的数那我们拿t

2017-03-16 23:47:06 571

原创 [BZOJ4008][HNOI2015]亚瑟王(概率期望dp)

题目描述传送门题解感觉这题挺神的,我想了好久 首先需要明确的是打牌的先后顺序是无所谓的,比如我四轮打了第1324张把它看做打了第1234张一样做 令f(i,j)表示1..i-1张牌已经打出,还剩下r-j..r这些轮没有考虑的概率 算f(i,j)时那么现在要打出第i-1张牌,有2种情况 1°第i-1张牌在剩下的j轮中都没有打出,f(i,j)+=f(i-1,j)*(1-p(i-1))^j 2°

2017-03-16 23:15:17 818 1

原创 [BZOJ4419][Shoi2013]发微博(map)

题目描述传送门题解用stl水水 对于每一个人记录发了几条微博,维护一个朋友圈,朋友圈里的每一个人有一个权,维护保证权+记录=这个人作为他的朋友的时候看到他发了几条微博 删除+最后 统计答案就行了代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#include<m

2017-03-16 21:50:18 606

原创 [BZOJ1089][SCOI2003]严格n元树(dp+数学相关+高精度)

题目描述传送门题解刚开始一直在考虑如何在一棵树上新挂一些节点,实际上我们可以反过来考虑,将一些已经构造好的子树连到一个根上,也就是从下往上堆 f(i)表示深度为i的严格n元树的数量,s(i)表示f(i)的前缀和;那么f(i)=s(i-1)^n-s(i-2)^n,也就是说n个位置每个位置都可以接一个子树,但是要保证所有的子树里至少有一个深度为i-1代码#include<algorithm>#inc

2017-03-16 20:43:47 630

原创 [BZOJ2134]单选错位(概率期望)

题目描述传送门题解答案就是每一位和前面一位答案相同的概率和(权值为1) 也就是sigma (1/a(i-1)) * (1/a(i)) * min(a(i-1),a(i))代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;#d

2017-03-16 18:22:59 950

原创 [BZOJ2337][HNOI2011]XOR和路径(概率期望dp+高斯消元)

题目描述传送门题解按位分解,统计每一位为0和为1的概率,最后乘上权值就行了 算概率的话用高斯消元 时间复杂度O(30∗(2n)3)O(30*(2n)^3),很不科学对不对我也是这么觉得代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace

2017-03-16 18:20:58 512

原创 [BZOJ4318]OSU!(期望dp)

题目描述传送门题解g(i)表示以i结尾的极长1的期望长度,h(i)表示以i结尾的极长1的长度的平方的期望,f(i)表示以i结尾的期望得分 然后x2+2x+1−>(x+1)2x^2+2x+1->(x+1)^2, x3+3x2+3x+1=>(x+1)3x^3+3x^2+3x+1=>(x+1)^3 dp就行了 特别注意这题平方的期望不等于期望的平方代码#include<algorithm>#inc

2017-03-16 13:54:00 2276

原创 [BZOJ3036]绿豆蛙的归宿(拓扑序+期望dp)

题目描述传送门题解DAG上的sb dp代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#include<queue>using namespace std;#define N 500005int n,m,out[N];int tot,point[N],nxt[

2017-03-16 09:17:13 598

原创 [BZOJ2318]Spoj4060 game with probability Problem(概率dp)

题目描述传送门题解读错题了T_T f(i,0)表示有i个石子Alice先手赢的概率,f(i,1)表示有i个石子Alice后手赢的概率如果有i-1个石子的时候Alice后手比先手更优,Bob先手比后手更优: 若现在Alice先手,那么她一定想拿掷正面拿走石子,f(i,0)=p*f(i-1,0)+(1-p)*f(i,1) 若现在Bob先手,他同样想掷正面,f(i,1)=q*f(i-1,1)+(1-

2017-03-16 09:03:46 827

原创 [BZOJ1415][Noi2005]聪聪和可可(bfs+概率期望+记搜)

题目描述传送门题解这题题面有点毒 应该是求聪聪吃到可可的时间的期望bfs处理两点之间的最短路 然后预处理出来当聪聪和可可分别在哪里的时候聪聪会向哪里走令f(i,j)表示当某一秒开始时聪聪在i,可可在j一直到聪聪吃到可可的期望 容易知道当i=j时f(i,j)=0 当dis(i,j)<=2时f(i,j)=1 假设当聪聪在i,可可在j时聪聪会走到k,d(i)为i的度数,p=1/(d(i)+1)

2017-03-15 20:47:35 1113

原创 [Codeforces698C]LRU(概率dp)

题目描述传送门 题意:有一个大小为k的缓存区,每次从n种物品中按照一定的概率选取一种物品尝试放进去.同一个物品每一次选取的概率都是相同的.如果这种物品已经放进去过就不再放进去.如果缓存区满了就把放进去的时间离现在最远的物品拿出来.问10^100次后每个物品在缓冲区中的概率.题解1010010^{100}趋近于+∞+\infty,也就是说,做很多很多次之后,缓存区一定是满的,缓存区不满的概率趋近于0

2017-03-15 18:29:12 865

原创 [Codeforces335E]Counting Skyscrapers(概率期望)

题目描述传送门 题面翻译见:http://cogs.pro/cogs/problem/problem.php?pid=1921题解神题啊…神哭了… 就知道Alice和Bob凑在一起肯定不干好事 想了一节晚自习+两节课,只yy出了一种不靠谱的O(n2h)O(n^2h)的东西… 看题解发现不是dp,竟然是一道纯数学题… 要特别注意的是这道题的高度和编号是岔劈着的,非常恶心 cf官方题解:ht

2017-03-15 11:38:45 1000 2

原创 [Codeforces498B]Name That Tune(概率期望dp)

题目描述传送门 题意:有n首音乐,第i首被听出来的概率为pi,刚开始听第一首,1s后如果听出来了则放第下一首,否则接着听这一首,第i首在连续听了ti s之后一定会被听出来,问Ts后听出来的歌的期望数量。题解刚开始写的方法死wa死wa… 后来发现问题了之后从i-1->i的的方法就变得死麻烦死麻烦… 终于改姿势了…首先考虑没有ti的限制 令f(i,j)表示第j秒在听第i首歌的概率,也就是说在第j

2017-03-14 23:27:48 824

原创 [Codeforces1A]Theatre Square(数学相关)

题目描述传送门题意:n*m的格子,用a*a的方块覆盖它,问完全覆盖至少用多少个题解闲得无聊打开了cf通过人数最多的一道题 果然是一道sb题代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;long long n,m,a,ans

2017-03-14 22:45:25 592

原创 [Codeforces442B]Andrey and Problem(贪心+概率)

题目描述传送门 题意:有n个人,第n个人帮助A的概率为pi,问有且只有一个人帮助A的概率题解代码

2017-03-14 22:43:19 602

原创 [Codeforces235B]Let's Play Osu!(期望dp)

题目描述传送门 题意:长度为n的串,每一个位置是o的概率是pi,否则是x,得分为所有极长连续o的长度的平方和。求期望得分题解f(i)表示前i个期望得分 g(i)表示以第i个为结尾的连续o的期望代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using names

2017-03-14 20:38:23 820

原创 [Codeforces540D]Bad Luck Island(概率dp)

题目描述传送门 题意:有r个石头、s个剪刀、p个布,每一次两个人随机碰上,输的人死掉,问只剩下每一种的概率。题解令f(i,j,k)表示三种人分别有i个,j个,k个时到初始的概率 三个人分别算 注意这道题不能倒推代码#include<algorithm>#include<cstring>#include<cstdio>#include<cstdio>#include<cmath>usi

2017-03-14 19:55:48 491

原创 [Codeforces398B]Painting The Wall(期望dp)

题目描述传送门 题意: 一个人粉刷n*n的墙,每一次随机选择一个格子染色,每一行和每一列都至少染了一个的时候结束,每染一个花费1的时间。求结束时间的期望。题解令f(i,j)表示染了i行,j列到结束的期望 转移方程很显然 f(i,j)=(i/n)* (j/n) * (f(i,j)+1)+(i/n) * (1-j/n) * (f(i,j+1)+1)+(1-i/n) * (j/n) * (f(i+

2017-03-14 19:13:00 619

原创 [Codeforces453A]Little Pony and Expected Maximum(概率期望+快速幂)

题目描述传送门 题意:一个m面的骰子,每个面分别有1..m,每个面着地的概率是1/m,问扔n次最大值的期望。题解分别计算1-m为最大值的概率 i为最大值的概率为(im)n−(i−1m)n({i\over m})^n-({i-1\over m})^n,相当于是一个容斥 乘上权值就行了代码#include<algorithm>#include<iostream>#include<cstring

2017-03-14 11:13:54 705

原创 [ZOJ3329]One Person Game(概率dp)

题目描述传送门题解令f(i)表示得分为i时到结束的期望 显然这道题>0的点都可以从0转移过来,0也可以从每一个>0的点转移过来 所以这题就应该画柿子了 f(i)=∑f(i+k)p(k)+f(0)P+1f(i)=\sum f(i+k)p(k)+f(0)P+1,其中p(i)表示掷出和为i的骰子的概率,P表示掷出a,b,c的概率 每一项都包含f(0),令f(i)=pa(i)f(0)+pb(i),那

2017-03-14 08:04:41 467

原创 [BZOJ3572][Hnoi2014]世界树(虚树+树形dp+二分+lca)

题目描述传送门题解首先建出虚树来,边权即为原树上的距离 这题我dp的方法非常蠢 f(i)表示从i的父边出去(必须经过i的父亲)到达的关键点的最短路 fp(i)表示最短路的点 g(i)表示i到i的子树中到达的关键点的最短路 gp(i)表示最短路的点 然后这两个互相转移一下…dp完了之后枚举虚树上的每一条边(u,v) 因为已经知道了从u出去到关键点的最短路和从v出去到关键点的最短路 然后

2017-03-13 21:47:39 839

原创 [ZOJ3640]Help Me Escape(概率期望dp)

题目描述传送门 题意:某一个人,初始战斗值为f,面临着n条道路,每一条道路有一个困难程度ti,和锻炼值ci。每一天他会等概率地选择一条道路,如果他的战斗值大于ci,那么他会花费ti的天数走出去,否则他走不出去,但是战斗值增加ti。ti和ci的关系满足ti=floor((1+sqrt(5))*0.5*ci*ci) 给出n,f,ci,问这个人走出去的期望天数题解令f(i)表示战斗值为i时走出去的期望

2017-03-13 21:18:16 1128

原创 [Codeforces148D]Bag of mice(概率dp)

题目描述传送门 题意:一个袋子里有w只白老鼠和b只黑老鼠,有两个人轮流抓老鼠,每个人每次都等概率地抓出一只老鼠,第二个人抓完之后袋子里会等概率地跳出来一只老鼠,第一个抓到白老鼠的人获胜。问第一个人获胜的概率题解令f(i,j)表示袋子里总共用i只老鼠,并且j只为白老鼠的概率 根据剩余老鼠的数量可以判断出第几个人抓或者老鼠往外跳 那么当第一个人或者第二个人抓的时候,f(i,j)从f(i+1,j)转

2017-03-13 20:35:05 356

原创 [HDU4336]Card Collector(概率期望+状压dp)

题目描述传送门题解f(i)表示得到的人物状态为i时的期望 然后枚举下一个状态,计算概率并转移代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;int n;double p[25],f[1<<21];void clear()

2017-03-13 19:57:40 518

原创 [HDU3076]ssworld VS DDD(概率dp)

题目描述传送门 题意:给出每个人扔骰子得到点数的概率,2个人分别有HP1,HP2的血数,轮流扔骰子,数小的自减一血,平的不变,谁先到减0, 谁输,问A赢的概率。 注意这道题先HP2再读HP1题解令f(i,j)表示第一个人血量为i,第二个人血量为j的概率 计算每一次第一个人赢概率p1,第二个人赢概率p2,平局p3 f(i,j)=f(i,j+1)*p1+f(i+1,j)*p2+f(i,j)*p3

2017-03-13 18:41:17 648

原创 [POJ3071]Football(概率dp)

题目描述传送门 题意: 2^n个队进行足球赛,每个队打败另外一个队都有一个概率。 比赛一共进行n轮,每轮相邻的两只球队比赛,负者淘汰 问最后胜利的概率最大的是哪只球队题解概率dp 令f(i,j)表示第i轮第j支球队获胜的概率 那么f(i,j)=∑kf(i−1,j)∗f(i−1,k)∗p(j,k)f(i,j)=\sum\limits_{k} f(i-1,j)*f(i-1,k)*p(j,k)

2017-03-13 15:32:49 369

原创 [POJ2096]Collecting Bugs(期望dp)

题目描述传送门 题意: 一个软件有s个子系统,会产生n种bug 某人一天发现一个bug,这个bug属于一个子系统,属于一个分类 每个bug属于某个子系统的概率是1/s,属于某种分类的概率是1/n 问发现n种bug,每个子系统都发现bug的天数的期望题解令f(i,j)表示发现了i种bug,属于j个子系统到最后的期望天数 显然f(n,s)=0 对于f(i,j),dp方程为

2017-03-13 15:04:17 394

原创 [BZOJ2688]Green Hackenbush(概率dp)

题目描述传送门题解博弈论中的树形删边游戏:叶子节点sg=1,剩余节点sg=所有儿子的sg+1的异或和 所有树的根sg异或起来为0则先手必败,否则必胜令g(i,j)表示i个点的随机二叉树根的sg值为j的概率 cnt(i)表示i个点的随机二叉树共有几个(卡特兰数) cnt(i)直接根据卡特兰数的递推公式递推就行了 对于g,枚举其两棵子树的大小,然后dp令f(i,j)表示前i棵树异或值为j的概率

2017-03-12 22:52:24 628

原创 [BZOJ1779][Usaco2010 Hol]Cowwar 奶牛战争(最大流)

题目描述传送门题解一眼网络流啊。。。代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#include<queue>using namespace std;#define N 160000#define inf 2100000000int n,m,s,t,max

2017-03-12 21:59:45 705

原创 [BZOJ3991][SDOI2015]寻宝游戏(dfs序+lca+set)

题目描述传送门题解答案其实就是将所有的点按照dfs序排序然后相邻求lca以及长度加和 奥还有第一个和最后一个求lca以及长度加和 用set维护一下。。。代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#include<set>using namespace s

2017-03-12 21:55:34 727

原创 [BZOJ3611][Heoi2014]大工程(虚树+树形dp)

题目描述传送门题解令size(i)表示i子树里有多少个关键点 令sum(i)表示i子树中所有关键点到i的距离和 令Max(i)表示i子树中所有关键点到它的最长链,_Max(i)次长链,Min(i)最短链,_Min(i)次短链 这些都非常好维护,第二问和第三问也很好计算,用最和次拼一下就行了 对于第一问的话,在dp的时候维护一下当前size和sum的乘积就行了 将所有的关键点和它们的lca建

2017-03-12 12:30:28 742

原创 [BZOJ2286][Sdoi2011]消耗战(虚树+lca+树形dp)

题目描述传送门题解裸的dp可以得到20pts 令f(i)表示将i点子树中所有关键点割掉的最小代价 那么若i为关键点,f(i)=i的父边权;若i不是关键点,f(i)=所有儿子的f之和 与 i的父边权取min那么对于所有的关键点和它们的lca造出一棵虚树,连的边为树链上所有边的最小值 同样的方法dp就行了代码#include<algorithm>#include<iostream>#inclu

2017-03-12 12:22:17 717

原创 OI竞赛中手工栈的书写

引言在某些算法中,尤其是树、图、数据结构相关的算法,会牵扯到大量的递归。在绝大部分的OI竞赛中(NOIP、NOI等),递归所占用的栈空间限制为内存限制,换句话说,就是一般只要你不MLE就不会爆栈。 但是SDOI历年使用Windows+Cena评测,这个古老的评测系统递归的栈空间有限,经常递归到3w+就会爆栈,也就是说,如果你想遍历一条10w级别的树链是不可能的。 所以SDOI的选手们就开始写手工

2017-03-10 15:03:16 2484

原创 [BZOJ1486][HNOI2009]最小圈(01分数规划+深搜spfa)

题目描述传送门题解01分数规划 如果存在负权环的话说明有更优的答案 写深搜spfa就不会tle了代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;#define N 20005const double eps=1e-9;

2017-03-10 14:03:13 582

原创 [BZOJ3992][SDOI2015]序列统计(dp+NTT+快速幂)

题目描述传送门题解首先考虑,如果题目让求的是和的方案数,怎么dp以及优化 令F(i,j)F(i,j)表示一共选了i个数,和在模m意义下为j的方案数 那么F(i,j)=∑k=1sF(i−1,j−Sk)F(i,j)=\sum\limits_{k=1}^sF(i-1,j-S_k) 这个dp可以写成卷积的形式并用NTT优化 令b(i)b(i)表示是否存在i这个数,0/1 令aa表示F(i−1)F(

2017-03-10 11:04:10 739

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除