自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 资源 (1)
  • 收藏
  • 关注

原创 ZOJ 3195 Design the city——LCA

题意:求树上三点之间的最短距离思路:求三个点两两之间的最短距离,相加除以2便是结果#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <cmath>using namespace std;cons...

2018-05-29 23:23:51 237

原创 POJ 1986 Distance Queries——LCA

题意:树上两点间的最近距离思路:Tarjan求LCA, dis[u]+dis[v]-dis[lca(u, v)]即可边表居然比vector快5倍。。。绝了#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using name...

2018-05-29 21:39:29 204

原创 POJ 3368 Frequent values——RMQ

题意:求区间最大频数思路:半暴力扫描+RMQ#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <cmath>using namespace std;const int maxn = 1e5 + ...

2018-05-29 20:07:34 177

原创 HDU - 1693 Eat the Trees——插头dp

手推了一下,算是稍微明白了一点插头dp的原理#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int maxn = 15;const int maxm = 1<<15;t...

2018-05-29 15:06:55 221

原创 POJ 1739 Tony's Tour——插头dp

#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int maxn = 15;const int seed = 2e5 + 7;typedef long long ll;char ch...

2018-05-29 10:02:20 234

原创 URAL 1519 Formula 1——插头dp

题意:求一个棋盘的哈密顿回路个数思路:插头dp思路网上有很多就不啰嗦了,这里只说一下两行之间的状态转移,即由第i-1行最后一个格子推到第i行第一个格子。对于第i-1行最后一个格子,其转移完后得到的轮廓线由n个下插头和1个右插头组成,很明显这个右插头对第i行第一个格子没有影响,应该取消这个右插头;对于第i行第一个格子,其左面没有可以影响他的插头,应该是一个空状态。结合这两点,没转移完一行...

2018-05-28 23:45:26 236

原创 HDU 4418 Time travel——高斯消元+概率dp

题意:给出一个数轴,有一个起点和一个终点,某个人可以走1,2,3……m步,每一种情况有一个概率,初始有一个方向,走到头则返回,问到达终点的期望步数为多少。思路:裸的高斯消元+概率dp#include <cstdio>#include <cstring>#include <iostream>#include <algorithm&gt...

2018-05-27 21:12:56 249

原创 HDU 4336 Card Collector——状压+期望dp

题意:有N(1<=N<=20)张卡片,每包中含有这些卡片的概率为p1,p2,````pN.每包至多一张卡片,可能没有卡片。求需要买多少包才能拿到所以的N张卡片,求次数的期望。思路:状压思路很好想,注意推出状态转移方程后注意移项(可能要移多项)#include <cstdio>#include <cstring>#include <...

2018-05-24 16:45:12 239

原创 ZOJ 3640 Help Me Escape——概率dp

简单记忆化一下就可以了#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <cmath>using namespace std;const int maxn = 1e6 + 10;int n, f;dou...

2018-05-24 15:52:31 172

原创 ZOJ 3380 Patchouli's Spell Cards——组合数+概率dp

题意:m个位置,每个位置可以等概率填n种数,规定一个数字出现次数不能超过L次(注意不是连续L次),填完m个位置后满足约束的概率是多少。思路:定义dp[i][j]为前i种数字填充j个位置(j个位置不必连续)的方案数,那么dp[i][j]=∑(1<=k&&k<L&&k<=j)dp[i-1][j-k]*C[m-(j-k)][k],C为组合...

2018-05-24 11:53:24 225

原创 SGU 495 Kids and Prizes——概率dp

题意:n个盒子里装有礼物,m个人随机选择礼物,选完之后空盒子放回问选中的礼物数的期望。思路:m个人是独立的。对于每个礼物不被人选中的概率为((n-1)/n)^m那么不被选中的礼物数的期望就是 n*((n-1)/n)^m所以答案就是  n-n*((n-1)/n)^m;#include <cstdio>#include <cstring>#in...

2018-05-23 18:24:07 204

原创 POJ 3071 Football——概率dp

题意:有2^n个队,相邻的两两打淘汰赛,,求最后哪个队夺冠的概率最大思路:这里只说怎么位运算判相邻:所有高位是一样的,第i位刚好相反#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;do...

2018-05-23 15:14:54 159

原创 CodeForces - 148D Bag of mice——概率dp

题意:原来袋子里有w只白鼠和b只黑鼠龙和王妃轮流从袋子里抓老鼠。谁先抓到白色老师谁就赢。王妃每次抓一只老鼠,龙每次抓完一只老鼠之后会有一只老鼠跑出来。每次抓老鼠和跑出来的老鼠都是随机的。如果两个人都没有抓到白色老鼠则龙赢。王妃先抓。问王妃赢的概率。思路:设dp[i][j]表示现在轮到王妃抓时有i只白鼠,j只黑鼠,王妃赢的概率明显 dp[0][j]=0,0<=j<=b;...

2018-05-23 14:18:26 148

原创 POJ 2151 Check the difficulty of problems——概率dp

题意:一场区域赛的题目是合格的当且仅当每个队伍至少做1道题且冠军至少做n道题。现在给出一场区域赛的题目数量m,队伍数量t,以及每支队伍通过每道题的概率,问这场区域赛题目是合格的概率为多少思路:对于一支队伍,定义dp[i][j]为前i个题通过了j道的概率,根据状态转移求出所有状态。定义ans1=∑(1<=j<=m)dp[i][j], ans2=求和(1<=j&l...

2018-05-23 11:14:00 130

原创 HDU 3853 LOOPS——期望dp

水题#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int maxn = 1010;double eps = 1e-4;int r, c;double p1[maxn][maxn...

2018-05-23 10:40:49 97

原创 HDU 4035 Maze——概率dp

题意:有n个房间,由n-1条隧道连通起来,实际上就形成了一棵树, 从结点1出发,开始走,在每个结点i都有3种可能:1.被杀死,回到结点1处(概率为ki)2.找到出口,走出迷宫 (概率为ei)3.和该点相连有m条边,随机走一条求:走出迷宫所要走的边数的期望值。思路:设 E[i]表示在结点i处,要走出迷宫所要走的边数的期望。E[1]即为所求。叶子结点:E[i] = ki*E[1] ...

2018-05-22 22:36:51 199

原创 HDU 4089 Activation——概率dp

 题意:有n个人在排队,Tomato排在第m个。对于队首的人,有以下几种情况:1.不动,概率为p12.出队,然后到队尾,概率为p23.出队,概率为p3(Tomato不能出队)4.整个排队机制崩溃,概率为p4问整个排队机制崩溃时Tomato在队列中的位置<=k的概率思路:dp[i][j]:队列中有i个人,Tomato排在第j个位置,这个状态下Tomato...

2018-05-22 20:56:18 158

原创 HDU 4405 Aeroplane chess——期望dp

水题#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int maxn = 1e5 + 20;double dp[maxn];int fly[maxn];int to(int x)...

2018-05-22 15:12:26 161

原创 ZOJ 3329 One Person Game——期望dp

题意:有三个骰子,分别有k1,k2,k3个面,每次掷骰子,如果三个面分别为a,b,c则分数置0,否则加上三个骰子的分数之和,当分数大于n时结束。求游戏的期望步数。初始分数为0思路:设dp[i]表示达到i分时到达目标状态的期望,pk为投掷k分的概率,p0为回到0的概率则dp[i]=∑(pk*dp[i+k])+dp[0]*p0+1;都和dp[0]有关系,而且dp[0]就是我们所求,为常...

2018-05-22 14:10:23 152

原创 POJ 2096 Collecting Bugs——期望dp

题意:s个箱子,每个箱子里有无限个球,这些球有n种颜色。每天选择一个箱子,然后从箱子中拿一个球(每个箱子被选的概率为1/s,从这个箱子中拿出某种颜色球的概率为1/n),问拿出的球有n种颜色且每个箱子都被选择过的天数期望思路:定义dp[i][j]为拿出的球有i种颜色且选择过j个箱子的天数期望dp[i][j]可以转移到dp[i][j], dp[i][j+1], dp[i+1][j], ...

2018-05-22 10:50:45 171

原创 POJ 3744 Scout YYF I——概率dp+分段矩阵快速幂

题意:给出n个障碍的坐标,规定玩家一开始在坐标1处,每次有概率p前进1个单位,有概率1-p前进两个单位,问越过所有障碍的概率思路:定义dp[i]为到达坐标i的概率,那么dp[i] = c[i] * (dp[i-1]+dp[i-2]),c[i]表示坐标i是否有障碍这个式子可以用分段矩阵快速幂优化,首先将坐标分成n段:0~a[1]a[1]+1~a[2]......a[n...

2018-05-22 08:47:01 234

原创 HYSBZ 1799 self 同类分布——数位dp

题意:给出a,b,求出[a,b]中各位数字之和能整除原数的数的个数。思路:给出a,b,求出[a,b]中各位数字之和能整除原数的数的个数。1<=a<=b<=1e18.注意到各位数字之和最大是153.考虑枚举这个东西。那么需要统计的是[0,a-1]和[0,b]内各位数字之和为x且能整除x的数字个数。那么我们只需要数位dp一波即可。令dp[pos][i][x]表示有pos位且...

2018-05-21 18:04:44 246

原创 HDU 3709 Balanced Number——数位dp

 题意:对于某个 number,你可以 fix a pivot 在某位,然后如果分成的左右两部分的 sigma(d[i] * | i - fixloc |)相等,则它是 Balanced Number。统计区间 [a,b] 中Balance Number 的个数。解题思路:首先要分析出,对于某个非 0 的 number,最多可能有一个 pivot 的位置。证明:如果有两个这...

2018-05-21 17:06:22 177

原创 POJ 3252 Round Numbers——数位dp

题意:给定区间【l,r】,问区间【l,r】中有多少满足条件的数字。对于一个数字x,若x的二进制表示中0的个数大于等于1的个数,那么x是满足条件的思路:将给定的数字x用二进制表示,用dp[i][j]表示前i位(0的数量-1的数量<=j)的数字总数,状态转移就很好写了,具体参见代码。注意:1.忽略前导0。2.j有可能是负数,要简单hash一下,+32就可以#incl...

2018-05-21 11:55:24 160

原创 HDU 4734 F(x)——数位dp

题意:找出i在0到b之间的f(i)小于等于f(a)的数的个数。思路:数位dp。主要在于状态转移不好想。dp[i][j]表示i位数比j小的数的个数。用递归完成的话就只需要思考边界和状态转移。边界:dp[i][j]如果j小于0,显然是dp[i][j]=0的,如果i==0,说明就是0,显然任何数都比0大,所以dp[i][j]对于j>=0的时候dp[i][j]=1,否则dp[i][j]=...

2018-05-21 11:12:29 140

原创 POJ - 2888 Magic Bracelet——Polya+欧拉函数+dp+矩阵快速幂+费马小定理

题意:给定n个珠子构成的环,每个珠子有m种染色方式,给定k个二元组(xi,yi),表示颜色xi不能和颜色yi相邻,问有这个环多少种本质不同的染色方案(两种染色方案视为相同当且仅当他们可以通过旋转变成相同的方案),最终结果取余9973。(1<=n<=1e9 && gcd(n, 9973) = 1), (1 <= m <= 10), (1 <= k...

2018-05-20 17:22:49 206

原创 HDU 3547 DIY Cube——Polya

题意:用n种颜色染立方体的8个角,问有多少种不同的方法思路:共有24种置换,全部写出即可得到结果6x^2+17x^4+x^8import java.io.*;import java.math.*;import java.util.*;public class Main { public static void main(String [] args) { Scann...

2018-05-20 00:16:41 187

原创 POJ - 2154 Color——Polya+欧拉函数优化

ans = 1/n*∑(0<=i && i < n)(n^gcd(i, n))       = 1/n*∑(0<=i && i < n && n%i == 0)(euler(i) * n^i)       = ∑(0<=i && i < n && n%i ==

2018-05-19 21:12:46 186

原创 HDU - 3923 Invoker——Polya+费马小定理

裸的Polya,最后ans/(2*n)mod(1e9+7)时可以用费马小定理#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;typedef long long ll;const int mod ...

2018-05-18 23:10:40 175

原创 POJ - 1286 Necklace of Beads——Polya

裸的Polya注意n可能是0,不处理的话最后/0会RE#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;typedef long long ll;ll gcd(ll a, ll b) { re...

2018-05-18 22:50:02 149

原创 POJ2409 Let it Bead——Polya

题意:给你n个珠子,每个珠子有m种染色方法,将这些珠子做成长度为n的项链,问有多少种方法。两种方法是相同的当且仅当两种项链可以通过旋转或者翻转变成一种项链思路:题中有两种置换方式:1.旋转置换。分别顺时针旋转 i 个珠子,其循环节长度为 GCD(i,n)。(0<i<n);2.翻转置换。根据 N 的奇偶性分情况讨论。N为奇数时:       以第 i 个珠子为...

2018-05-18 22:36:00 233

原创 UVA - 1204 Fun Game——状压dp

题意:给定n个串(n<=16),要求一个最短的环,使得每个串都是这个环的子串,输出环的长度。思路:定义dp(i,j,k)为状态(选定的串的集合, 最后一个串的下标,最后一个串的接法(0正接1反接))的最大重合长度初始化:dp(1,0,0)=0;因为题目要求的是环,所以我们一开始要任意选一个串作为环的开头,这里我选择的是下标为0的字符串,并且正放转移方程:dp(...

2018-05-17 18:32:22 269

原创 ZOJ - 4027 Sequence Swapping——dp

https://blog.csdn.net/a664607530/article/details/80188139#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;typedef long long...

2018-05-16 20:25:21 217

原创 UVALive - 3263 That Nice Euler Circuit——欧拉定理

欧拉定理:设平面图的定点数、边数和面数分别为V,E和F, 则V+F-E=2注意精度问题,1e-10WA了,改成1e-8才过#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <cmath>using nam...

2018-05-16 15:44:57 195

原创 HDU - 5550 Game Rooms——dp

https://blog.csdn.net/weilehuozhe/article/details/49509401?locationNum=14&fps=1#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namesp...

2018-05-16 14:58:07 216

原创 UVA 12105 Bigger is Better——dp

做法为紫书P294的优化做法,前导0卡了一年,最后直接特判过了,所以代码比较挫#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int maxn = 3010;const int IN...

2018-05-15 18:35:55 185

原创 UVA - 1579 Matryoshka——区间dp

我们的大方向是求出所有满足条件的子区间,通过对子区间进行区间dp求解,为了方便我们设一个变量L表示每个子区间的起始位置。从左到右扫这n个数,同时用vis数组标记保证每个数只出现一次,用cnt表示vis数组中有多少个数,用maxv表示vis数组中最大的被标记数,这样当我们扫到一个之前被标记过的数时,如果此时cnt==maxv,就说明【L,当前位置-1】这个区间是一个合法区间,然后对这个区间进行区...

2018-05-15 16:32:20 384 1

原创 HDU - 5724 Chess——SG函数

题意:给你一个n*20的棋盘,每一行都有一些棋子,每次你可以把一个棋子移动到他右面的空位中离他最近的那一个,不能移动者输,Alice先手,问Alice能否取胜思路:题目叙述满足SG函数的使用条件,因此考虑使用SG函数解决问题大体思路是求出每一行的状态对应的SG值,最后把所有行的SG值进行异或运算,最终结果如果不等于0,则输出YES,否则输出NO如何设计SG函数呢?每一行的状态可...

2018-05-14 22:42:25 201

原创 HDU - 1079 Calendar Game——博弈

#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;int main() { int T, y, m, d; scanf("%d", &T); while (T--) {...

2018-05-14 11:28:23 237

原创 HDU - 1517 A Multiplication Game——博弈

直接搜索就可以#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <map>using namespace std;typedef long long ll;ll n;map<ll, int>...

2018-05-14 11:00:22 237

Qt游戏编程——飞机大战

游戏模板,大家可以随意添加自己的元素

2017-07-06

空空如也

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

TA关注的人

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