
HDU
CHN_JZ
爆0 forever
展开
-
最小费用最大流总结
最小费用最大流在费用流的图上,边不仅有流量还有权值。 最小费用最大流就是在最大流不唯一时,求权值最小的方案,其基本思想就是在最大流的基础上考虑费用最小。解决这种问题的操作可以描述为多次迭代的过程,下面来介绍解决这种问题的一种方法——Spfa增广。Spfa增广基本思想是:从零流为初始可行流开始,在每次迭代过程中对每条边赋予与cap(容量)、w(单位流量运输费用)、flow(现有流的流量)有关的权数d原创 2017-06-06 22:09:18 · 2100 阅读 · 1 评论 -
[暴力]HDU 4473——Exam
题目梗概求正整数a,b,c,a*b*c<=n的方案数。解题思路这题的数据有点水原创 2017-07-31 16:12:57 · 535 阅读 · 0 评论 -
[数位DP]Hdu 2089——不要62
Ps:博主又水blog,是佳龙大神叫我干的。题目梗概一个数被称为吉利(手动滑稽)当且仅当其不含4和62。多次询问一个区间的吉利的个数。解题思路这题应该算是数位DP的裸题吧。考虑求出一个固定长度出现的吉利数,然后分别考虑每一位就可以了。设f[i][0/1/2]f[i][0/1/2]表示长度为ii的吉利个数,首位为2的吉利个数,不吉利的个数。转移方程就不难求出: f[i][0]=9*f[i-1][原创 2017-08-08 21:30:14 · 661 阅读 · 0 评论 -
[压位DP]Hdu 6149——Valley Numer II
题目梗概给定一个无向图,图中的点存在高低。 定义山谷为:一个低点连接两个相邻的高点。 求不相交的山谷的最大个数。解题思路一看这个高点个数<=15高点个数<=15就马上想到压位DP。 i表示前i个点,j表示选择高点的状态,直接转移就可以了。#include<cstdio>#include<cstring>#include<algorithm>using namespace std;con原创 2017-08-24 21:22:39 · 663 阅读 · 0 评论 -
[乱搞]Hdu 6147——Pokémon GO II
题目描述众所周知,度度熊最近沉迷于 Pokémon GO。 由于太过沉迷,现在它只能按照游戏内置的指令行走了:对,简直就像一个现实中的Pokémon! 游戏内置的指令实际上可以抽象成一种:保持现在的朝向前行X米,然后右转。度度熊相信,只要遵循这个指令,它就一定可以抓到最珍奇的精灵球。 但不幸的是,这个指令并不是很有可信度,有时会引导度度熊走回原来的位置。现在它想知道,在第几条指令时它第一次回到已经走原创 2017-08-24 21:37:28 · 548 阅读 · 0 评论 -
[数位DP]Hdu 6148——Valley Number
题目梗概求1~n中满足题目要求的数的个数。题目要求:不存在一段下降之后上升的类似山谷的连续位置。解题思路不难想到是数位DP。预处理时f[i][j][k]f[i][j][k]表示长度为i,第一位为j的符合题目要求的个数。其中当k=1k=1表示出现过递增,否则没有。刷答案时注意贴着给出的数做,细节看代码(调了4个小时的血与泪啊)。#include<cstdio>#include<cstring>#i原创 2017-08-25 20:46:52 · 700 阅读 · 0 评论 -
[数位DP]HDU 4507——吉哥系列故事——恨7不成妻
题目梗概如果一个数满足以下三个条件之一,我们称这个数与7有关:1、整数中某一位是7; 2、整数的每一位加起来的和是7的整数倍; 3、这个整数是7的整数倍; 求一个区间和7无关的数字的平方和。解题思路如果这题统计的方式不是平方和,那么就是一道非常经典的数位DP的问题。其实我们要解决的最主要的问题就是添加一个数后如何快速转移平方和。储存每个状态的个数,加和,平方和就解决了这个问题。#include<cs原创 2017-09-27 21:09:16 · 707 阅读 · 0 评论 -
[线段树]HDU 4942——Game on S♂play
题目梗概给出一棵树,定义一个节点的有趣值为该节点为根的树的权值和。现在可以旋转一个节点,询问任意子树的有趣值之积。解题思路不管树怎么旋转,这棵树的中序遍历是不变的。维护每个节点控制范围和有趣值。用线段树维护有趣值的积。#pragma comment (linker,"/STACK:102400000,102400000")#include<cstdio>#include<cstring>#de原创 2017-09-28 10:26:15 · 731 阅读 · 0 评论 -
[数位DP]Hdu 3555——Bomb
题目梗概求不超过n的含4949的数字的个数。解题思路数位DPSB题。#include<cstdio>#define LL long longusing namespace std;LL n,f[25][15],x;int a[25],len,t;LL DFS(int len,int lst,int pd){ if (len<1) return 1; if (!pd&&f[l原创 2017-10-06 21:28:59 · 727 阅读 · 0 评论 -
[二分+2-sat]Hdu 3622——Bomb Game
题目传送门题目概述在一个无限大的平面里画n个圆。 每个圆有2个待选的放置位置。 限制条件为圆不相交,求最小半径的最大值。解题思路显然如果R满足限制条件,那么任意r(r<<R)肯定满足限制条件,想到用二分枚举答案。 接下来考虑如何验证。 不难发现这是一个2-sat问题。 假设位置i,ji,j以当前最小半径做圆相交,显然可以得到i−>j′i->j' j−>i′j->i' 如原创 2017-07-04 21:49:04 · 861 阅读 · 1 评论 -
斜率优化总结
斜率优化斜率优化是用于优化一些线性DP,主要思想类似于凸包。 下面来看一个例题:HDU 3507 由题意不难想到是DP,也很容易退出转移过程f[i]=min(f[j]+(s[i]−s[j])2)+M(i∈[0,i−1])f[i]=min(f[j]+(s[i]-s[j])^2)+M (i\in[0,i-1]) 但是一看nn的范围马上就萎了,下面来看看用斜率怎么优化。 现将推出的转移方程化简:f[原创 2017-06-13 19:39:40 · 2225 阅读 · 2 评论 -
[中国剩余定理]Hdu 1573——X问题
题目传送门 这道题给出了多个同余方程,所以马上联想到中国剩余定理。中国剩余定理求解同余方程组的算法。 设m1,m2,…,mr两两互质,N=m1*m2*…*mr。 考虑方程组的特殊解: X≡0(modX≡0 (mod m1)m1) … X≡1(modX≡1 (mod mi)mi) … X≡0(modX≡0 (mod mr)mr) 由于所有mi互质,所以x=(N/mi)*y等价于(N原创 2017-06-04 21:45:31 · 606 阅读 · 2 评论 -
二分图最佳完美匹配——KM算法总结
KM 算法求解二分图最佳完美匹配的算法。 先来看一道例题Hdu 2255。 显然是KM的裸题。假设我们要匹配集合X和Y的点,先给每个点一个顶标Lx和Ly。 为什么要给顶标? 首先顶标是我们限制边的一个条件,我们走过的边一道要满足dst[i][j]==Lx[i]+Ly[j],其次所有顶标的加和就是我们答案,我们肯定希望顶标的加和越大越好,所以Lx的初值给的就是连向Y集合所有边的最大值,那么Ly原创 2017-06-03 21:14:24 · 3124 阅读 · 0 评论 -
[BFS+康托展开]Hdu 1043 Eight
题目传送门这道题就是我们耳熟能详的八数码问题,如果写BFS必然涉及到如何判断一个状态是否进队,可以把序列表示成一个9进制的数,用set或者直接hash,但是这样操作效率过低。0~8的排列最多只有9!种排列方式,所以如果我们能很快求出每个序列的大小,那么直接开vis标记就可以了。所以引进了康托展开。康托展开假设我们拿到一个序列是32451,求这个序列的在所有排列中的次序。 其实我们只要确定有几个排列原创 2017-05-26 18:41:20 · 639 阅读 · 0 评论 -
Hdu 3068最长回文——Manacher算法
Manacher算法概念这是一种能够在将近O(n)的时间里求出给定字符串的最长回文子串的算法。思想首先我们知道字符串的长度分奇偶,这对我们考虑问题影响很大,所以在给定字符串的所有字符之间插入一个无关字符(包括首尾),这样对答案没有什么影响,而且字符串的长度都变为n*2+1,是个奇数。 然后定义一个f数组,f[i]表示以i为中心向右/向左扩展的长度(包括i),定义mx,id...原创 2017-05-23 21:22:00 · 748 阅读 · 2 评论 -
[HDU 5618]Jam's problem again——CDQ分治
题目传送门解题思路本题为裸的三维偏序,直接用CDQ分治解。#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=100005;struct jz{ int x,y,z,id; bool operator==(const jz&b){return x==b.原创 2017-05-14 21:41:19 · 460 阅读 · 0 评论 -
[2-sat]HDU 1814——Peaceful Commission
题目传送门题目概述有n个党派,每个党派有两名成员且必须派出一名成员参加和平会议,给出m个不合的人,求字典序最小的方案。解题思路裸的2-sat,假设每个党派有成员A,BA,B,如果有AA和A′A'不合,则可以推出A−−>B′A-->B'A′−−>BA'-->B −−>-->表示选择前者就必须选择后者,显然也是这么建边的。 因为要求字典序最小的方案,所以O(NM)刷了。#include<cstdio原创 2017-07-02 21:07:36 · 592 阅读 · 1 评论 -
[母函数]HDU 1521——排列组合
Holding Bin-Laden Captive!Problem DescriptionWe all know that Bin-Laden is a notorious terrorist, and he has disappeared for a long time. But recently, it is reported that he hides in Hang Zhou of Chin原创 2017-06-11 19:24:55 · 1502 阅读 · 0 评论 -
[母函数]HDU 1085——Holding Bin-Laden Captive!
Holding Bin-Laden Captive!Problem DescriptionWe all know that Bin-Laden is a notorious terrorist, and he has disappeared for a long time. But recently, it is reported that he hides in Hang Zhou of Chin原创 2017-06-11 20:02:43 · 1688 阅读 · 2 评论 -
[巴什博奕]HDU 2147——kiki's game
题目描述给你n*m表格,初始在右上角,每次在上个人移动后的基础上移动一步(向左or向下or向左下)先到左下角则获胜。解题思路先来说说巴什博奕。给出n个数,每次可以取x个(1<=x<=m)。显然可以按m+1分,每次操作看对手上次操作,保持和为m+1,如果n为m+1的倍数后手显然必胜。得到如果n不为m+1的倍数,先手必胜。回到这题,必胜策略为每次保持行数列数为奇数,如果n,m为奇数后手显然必胜,否则先手原创 2017-12-20 21:09:39 · 469 阅读 · 0 评论