![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
HDU
huanghongxun
这个作者很懒,什么都没留下…
展开
-
HDU 3585 Maximum Shortest Distance 最大团 二分答案
平面上有N个点,确定k个点使其中各点对距离的最小值最大。有多组数据。这个最优化问题本身似乎不好解决,所以还是二分一下吧。。如果已知距离的最小值mid,判定是否存在k个点且两两距离均超过mid。将距离超过mid的点连起来求一下最大团即可。二分的时候跪了。。判断二分结束的条件r - l > 1e-4,写1e-3就WA了。。这个故事告诉我们不要吝啬。。开够保证正确性为好。原创 2016-02-11 14:15:36 · 1031 阅读 · 0 评论 -
HDU 4622 Reincarnation 后缀自动机
对长度2000的字符串 1W次询问区间的子串个数。发现长度很小,O(n2)O(n^2)? 发现由于后缀自动机是在线构造,因此所有的区间可以按左端点排序,右端点在线。。然后子串个数维护一下SAM的总子串数就好了。。#include <cstring>#include <cstdio>#include <algorithm>using namespace std;#define FOR(i,j原创 2016-04-16 00:28:16 · 931 阅读 · 0 评论 -
HDU 5556 Land of Farms 最大团
一个N*M的矩阵,一个农场会覆盖一片连通的区域,新农场与其他农场不可相邻,新农场可以建在空地上,也可以完全地占据一个旧农场,旧农场(不超过10个)已给定,问最多能安排多少个农场?考虑将将旧农场的所有格子缩成1点,空地保持1格1点,那么问题就变成求图的最大独立点集,求补图的最大团即可。#include <cstdio>#include <cstring>using namespace std;#原创 2016-04-18 15:39:17 · 954 阅读 · 0 评论 -
HDU 5558 Alice's Classified Message 后缀自动机
对于字符串S,有一个指针i,如果存在从j(#include <cstdio>#include <cstring>const int rt = 1, N = 200005;int last = 1, cnt = 1;int ch[N][26], fa[N], rr[N], ma[N];char str[N];void add(char c, int x) { int np = ++原创 2016-04-18 17:25:05 · 1470 阅读 · 1 评论 -
HDU 5559 Frog and String 构造
orz http://blog.csdn.net/snowy_smile/article/details/49870109 http://blog.csdn.net/keshuai19940722/article/details/49839359#include <cstdio>void output(const char *s, int l) { for (int i = 0, j原创 2016-04-19 11:00:58 · 542 阅读 · 0 评论 -
HDU 3746|Cyclic Nacklace|KMP求最小循环节
题目大意给定字符串,问最少在末尾加多少个字符就可以让字符串存在循环节(循环节出现次数>1)。题解分析KMP的next数组,next[n]指最长的那个字符串是该字符串的前缀和后缀(但不是整个字符串)。情况1:那么如果类似ABCDABKKABCDAB这种情况,next[n]就指ABCDAB的长度=6。那么我们再补2个KK就可以了,最小循环节ABCDABKK=8,是(原长14)-6=8。 ABCDABK原创 2016-11-18 10:54:39 · 476 阅读 · 0 评论 -
HDU 4543|三足鼎立|曼哈顿距离|二分答案
三足鼎立Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Problem Description “纷纷世事无穷尽,天数茫茫不可逃。鼎足三分已成梦,后人凭吊空牢骚。” 三国的各种传奇故事被千百年传诵,为人们津津乐道。魏、蜀、吴三个势力相互制约,同时也相互利用,“三”的神奇和精妙尽在其中原创 2017-07-11 15:57:54 · 615 阅读 · 0 评论 -
HDU 4544|湫湫系列故事——消灭兔子|平衡树|优先队列|STL
湫湫系列故事——消灭兔子Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Problem Description 湫湫减肥 越减越肥! 最近,减肥失败的湫湫为发泄心中郁闷,在玩一个消灭免子的游戏。 游戏规则很简单,用箭杀死免子即可。 箭是一种消耗品,已知原创 2017-07-11 17:33:19 · 291 阅读 · 0 评论 -
HDU 3466|Proud Merchants|01背包|贪心
题目最近,iSea去了一个文明古国。很长一段时间内,这个国家是世界上最富有的而且还是最强大的国家。所以这个国家的公民拥有强烈的民族自豪感,即使国家不再富有了也不会丧失。 商人们是最典型的,每个商人仅仅出售一件物品,价格为pip_i,但是如果你的钱少于qiq_i,商人就不会和你交♂易了。然后iSea认为物品的实际价值是viv_i。 如果iSea有M块钱,iSea能获得的最大价值是多少?输入输入包含原创 2017-09-18 23:52:31 · 450 阅读 · 0 评论 -
HDU 2602|Bone Collector|裸01背包问题
题目大意有N个物品,背包容量为V,每个物品有自己的重量wiw_i和价值viv_i。试问能获得的最大价值是多少。 题解由于是裸的01背包问题。。。 这里做个简单的01背包概述?不然题解一行都没有。。01背包问题是,给出一些物品,每个物品只有一件,你可以选择放到背包里去或者不放,背包里的物品总重量有限制。 我们设fi,jf_{i,j}表示我们已经考虑到第i物品,背包内物品质量为j的时候能获得的最大原创 2017-09-18 17:56:16 · 542 阅读 · 0 评论 -
HDU 2955|Robberies|01背包|概率
题目Roy是一个有抱负的强盗(-_-),看了很多美国大片,知道了坏蛋因为太过贪心,最终的结果通常是被捕。他决定做一次合算的买卖:在大学毕业之前,快速地搞一次大新闻:bank robbery(请自行体会)。 几个月过去了,Roy已经完成了对N个银行的安全性和拥有的货币的数量的评估。他希望计算行动的风险,并且拿走尽可能多的钱。 它的母亲Ola知道了Roy能承受的被捕的最大概率P,她认为如果Roy实施原创 2017-09-19 13:45:10 · 368 阅读 · 0 评论 -
UVALive 4886|HDU 3777|Page Count|暴力
https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2887题目翻译当你希望执行word processor的打印命令时,你一般都会阐明你要打印那些页。比如你输入 10-15,25-28,8-4,13-20,9,8-8 表示一系列要打印的页码,原创 2017-10-22 11:29:33 · 400 阅读 · 0 评论 -
UVALive 6172|HDU 4484|Hailstone HOTPO|模拟
题目翻译Hailstone序列是: 1. 若n为偶数,除以2 2. 若n为奇数,乘3再加1 3. n=1时结束写一个程序计算序列元素的最大值。输入第一行一个整数P(1≤P≤100000)P(1\leq P\leq 100000),表示数据组数。 接下来对于每组数据一行2个整数,第一个整数是数据组编号,第二个整数为n(1≤n≤100000)n(1\leq n\leq 100000),为序列的第原创 2017-11-04 23:40:42 · 340 阅读 · 0 评论 -
UVALive 6173|HDU 4485|B-Casting|水体
https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4184题目大意你的任务是计算大整数Dmod(B−1)D \mod (B-1),其中B是D的进制数。 比如: 782910 mod 9 = 8 377777777777777738 mod原创 2017-11-04 23:54:20 · 1677 阅读 · 0 评论 -
UVALive 6181|HDU 4492|Mystery|猜题意|模拟
https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4192输入// UVALive 6181, HDU 4492#include #include char str[4096];int main() { int T, x原创 2017-11-05 09:50:41 · 367 阅读 · 0 评论 -
HDU 4416 Good Article Good sentence 后缀自动机
Good Article Good sentenceProblem DescriptionIn middle school, teachers used to encourage us to pick up pretty sentences so that we could apply those sentences in our own articles. One of my classmates原创 2016-04-15 23:59:31 · 702 阅读 · 0 评论 -
HDU 3518 Boring Counting 后缀数组/后缀自动机
分组height?半个月没动后缀数组一堆名词都忘了233#include <cstdio>#include <cstring>#include <algorithm>#define rep(i,j,k) for(i=j;i<k;i++)#define FOR(i,j,k) for(i=j;i<=k;i++)using std::min;using std::max;#define N原创 2016-02-16 23:26:46 · 774 阅读 · 0 评论 -
HDU 5651 xiaoxin juju needs help 组合数
由于错过了bc的registering只能在这里发发题解了。。给定一个字符串可自由打乱字母顺序,求能组成的回文串个数。 首先回文串对称的,所以只考虑一半就好了。 然后如果有多个字母出现奇数次那肯定答案为0。 再然只有一个有奇数次就拿一个放中间即可。 最后答案就是n2!pa!pb!⋯pz! \frac{\frac{n}{2}!}{p_a!p_b!\cdots p_z!} 其中pxp_x表示原创 2016-03-26 21:51:45 · 695 阅读 · 0 评论 -
HDU 1693 Eat the Trees 插头DP
求一个棋盘不定量条回路覆盖方案数。是不是插头dp的入门题呢。。对于正在决策的格子有几种情况。1. 障碍 1) 有插头:显然方案数为0。 2) 无插头:方案数不变。2. 平地 1) 有2个插头:当前决策的格子已经有路通过,因此下个状态是无插头。 2) 有1个插头:当前决策的格子有路通过,但不确定向右还是向下,因此下个状态是1个插头。原创 2016-03-02 14:05:02 · 469 阅读 · 0 评论 -
HDU 3394 Railway 点双连通分量
判断有多少条边属于多个环或不属于环。 首先一个双连通分量内,如果边数=点数,那么所有点构成一个环如果边数>点数,那么肯定有多个环,而且所有边都处于多个环内。明天贴代码?RailwayTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s):原创 2016-02-18 23:33:48 · 524 阅读 · 0 评论 -
数位DP
找个机会复习一下。。重新写一边题解。。HDU 2089#include <cstdio>#define FOR(i,j,k) for(i=j;i<=k;i++)int dp[16][10];void init() { int i, j, k; dp[0][0] = 1; FOR(i,1,14) FOR(j,0,9) { dp[i][j]=0;原创 2016-03-29 23:20:45 · 325 阅读 · 0 评论 -
HDU 1269 迷宫城堡 强联通分量模板存放处
为了存一下模板,我决定强行拉低一波博文质量。。#include <cstdio>#include <cstring>#define min(i,j) ((i)<(j)?(i):(j))#define ms(a, b) memset(a, b, sizeof a)const int N = 10001, M = 100001;int h[N], p[M], v[M], cnt, top, t转载 2016-03-07 20:01:25 · 392 阅读 · 0 评论 -
HDU 1402 POJ 2389 BZOJ 2179 大整数乘法 FFT
FFT果然还是看算导来得快。。 网上的讲解糊里糊涂的 不过我还是看了2小时QAQ递归形式function recursive-fft(a) { n = a.length // 必为2的幂 if (n == 1) return a wn = Math.pow(Math.e, 2 * Math.PI * Math.i / n) // wn还可以利用复数原创 2016-03-20 17:37:00 · 963 阅读 · 0 评论 -
HDU 4812 D Tree 点分治
见鬼了 如果把第59~60行与上面的循环合并会WA。。。 怎么想都没有问题 求教由于树链分为经过根与在子树中2种情况。 而在子树中的情况递归转化为根的情况。 而根的情况就简单了,扫一遍子树,处理出所有可能走出的乘积,然后哈希判定即可。开map好像超时了。。应该是我写的比较渣。。#include <cstdio>#include <cstring>#include <algorithm>原创 2016-04-03 16:18:06 · 640 阅读 · 0 评论 -
HDU 4888/4975 最大流
#include #include #include using namespace std;const int inf = 0x3f3f3f3f, N = 10005, M = 600005;int level[N], cnt, v[M], w[M], p[M], h[N], q[M], s, t;void add(int a, int b, int c) { p[++cn原创 2016-04-06 15:20:28 · 358 阅读 · 0 评论 -
HDU 3749 Financial Crisis 点双连通分量
询问两点间是不联通,还是只有一条路,还是有多条路。 不联通用并查集处理即可。 只有一条路说明经过了割点,求一次点双联通分量,多条路说明在点双连通分量内。#include <cstdio>#include <cstring>#include <set>#include <algorithm>#define FOR(i,j,k) for(i=j;i<=k;i++)using namespa原创 2016-02-18 23:28:20 · 505 阅读 · 0 评论 -
HDU 3622 Bomb Game 2-SAT 二分答案
一个游戏,Robbie每轮有2个格子可以选一个放置相同的炸弹,爆炸半径可控,但前提是炸弹爆炸范围(即圆)不能相交,求最大半径。似乎转化为判定性问题好做些。 二分爆炸范围。 如果两个格子欧几里得距离小于二倍的半径就不能同时选,连边即可。#include <cstdio>#include <memory.h>#include <cmath>#include <algorithm>using原创 2016-03-25 22:20:30 · 405 阅读 · 0 评论 -
HDU 3715 Go Deeper 2-SAT 二分答案
if dep<m and x[a[dep]]+x[b[dep]]!=c[dep] then go(dep+1,n,m) 意思就是说,对于dep=0~m-1,有所有的不等式都成立。 而c[dep]只有3种取值取0时,x[a[dep]]和x[b[dep]]不同时为0取1时,x[a[dep]]和x[b[dep]]不为0和1或1和0取2时,x[a[dep]]和x[b[dep]]不同时为1于是2-原创 2016-03-25 22:56:46 · 568 阅读 · 0 评论 -
HDU 1814 POI 2001 Peaceful Commission 2-SAT
正常的顺序跑一次2-SAT输出答案就好了。。#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>using namespace std;#define ms(i) memset(i,0,sizeof(i))const int N = 16005, M = 40005;struct TwoSAT {原创 2016-03-26 14:25:52 · 529 阅读 · 0 评论 -
HDU 4115 Eliminate the Conflict 2-SAT
Alice已知N轮剪刀石头布中Bob出的是什么。 同时Alice存在(a,b,c),c=0表示第a和b轮出拳相同,否则不同。 问Alice是否存在可行方案不输。因为必须不输,所以实际只有2种选择。。按冲突建图就好了#include <cstdio>#include <memory.h>#include <cmath>#include <algorithm>using namespace原创 2016-03-26 18:05:27 · 416 阅读 · 0 评论 -
POJ 3968|UVALive 4992|HDU 3761|UVA 1475|Jungle Outpost|二分|半平面交
有n个瞭望台,形成一个凸的n多边形。瞭望台的保护范围就是凸多边形内。敌人进攻会炸毁一些瞭望台使得总部暴露在剩下瞭望台凸包之外。你的任务是选择一个点作为总部使得最少需要炸坏的瞭望台总数尽可能多。输出此时敌人需要炸毁的瞭望台数量。vjudge真是个好地方,4倍经验唾手可得一开始想了个O(n2)O(n^2)的真是作死。。 嗯nn这么大应该是O(nlogn)O(n\log n)的。 二分答案。原创 2016-04-26 10:03:10 · 907 阅读 · 0 评论 -
HDU 3879 Base Station 最小割
答案为 max{∑max{0,1−ui}⋅ci−∑max{ui−ai}⋅∞−∑max{ui−bi}⋅∞−∑max{0,xi}⋅pi}\max\{\sum\max\{0,1-u_i\}\cdot c_i-\sum\max\{u_i-a_i\}\cdot\infty-\sum\max\{u_i-b_i\}\cdot\infty-\sum\max\{0,x_i\}\cdot p_i\} 变形得 ∑c原创 2016-04-09 20:58:20 · 491 阅读 · 0 评论 -
UVALive 6177|HDU 4489|The King's Ups and Downs|动态规划
https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4188题目翻译国王有一些身高不同的守卫。他希望给这些守卫安排一个排列,但不是简单地按身高从矮到高或者从高到矮,而是波浪形(每个人总比相邻的两个人都高或都矮),比如: 160, 162, 164原创 2017-11-05 10:27:55 · 472 阅读 · 0 评论