
hdu
yxg_123
这个作者很懒,什么都没留下…
展开
-
Hdu 5444 Elven Postman dfs
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5444题意:给你n个数字,这n个数字是按照二叉搜索树的节点特性给你的,让你建好这棵二叉搜索树,然后,再给出一些询问,让你回答从根节点到某个节点该怎么走? http://www.cnblogs.com/zyf0163/p/4805218.html?tvd 样例解释的题意题解:dfs: http://www原创 2017-02-28 20:17:06 · 340 阅读 · 0 评论 -
hdoj 4272 LianLianKan 数据太水
点击打开链接题意:给出一个序列,其中距离不超过6的两个相同的数字可以消除掉(从上往下消,输入是从底向上的),问能不能全部消除。思路:状压dp http://www.cnblogs.com/swm8023/archive/2012/09/10/2679455.html因为最坏情况下,它后面的四个数字能被它前面的四个数字消掉,这样它就能和原来是它后面的第9个元素相消了,最多原创 2017-02-24 15:00:16 · 200 阅读 · 0 评论 -
hdu1863 畅通工程 Kruskal/Prim
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1863题意:题解:Kruskal是按照边权排序,每次选择一条最小的边,判断这条边的两个端点是否在同一个集合,用并查集维护 Prim是随便选择一个点作为当前集合,找到与这个集合相连的边中最短的那条,用优先队列取出最短的,如果另一个端点不在当前集合,就加进来,并且把与这个点相连的所有边加到优先队列里代码:K原创 2017-03-05 12:16:47 · 274 阅读 · 0 评论 -
hdu1874 畅通工程续 spfa/迪杰斯特拉
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1874题意:题解:卿学姐视频: http://www.bilibili.com/video/av4224493/代码:spfa:#include <bits/stdc++.h>using namespace std;typedef long long ll;#define MS(a) memset(原创 2017-03-05 12:44:23 · 300 阅读 · 0 评论 -
hdu 3339 In Action 背包+flyod
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3339题意:给你一个图,每个点都有权值,然后让你派出多辆坦克,破环至少占权值一半的城市,派出坦克的代价就是从0点到那些城市的距离 求最少代价题解:点数很少,注意有重边 跑一发flyod,然后背包dp代码:#include <bits/stdc++.h>using namespace std;typ原创 2017-03-05 15:16:24 · 270 阅读 · 0 评论 -
hdu 1839 Delay Constrained Maximum Capacity Path 二分+最短路
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1839题意:有N个点,点1为珍贵矿物的采矿区, 点N为加工厂,有M条双向连通的边连接这些点。走每条边的运输容量为C,运送时间为D。 他们要选择一条从1到N的路径运输, 这条路径的运输总时间要在T之内,在这个前提之下,要让这条路径的运输容量尽可能地大。 一条路径的运输容量取决与这条路径中的运输容量最小的原创 2017-03-05 16:07:20 · 214 阅读 · 0 评论 -
hdu5254 棋盘占领 dfs
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5254题意:题解:暴力代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;#define MS(a) memset(a,0,sizeof(a))#define MP make_pair#define PB pus原创 2017-02-26 15:18:13 · 234 阅读 · 0 评论 -
hdu 4499 Cannon dfs
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4499题意:在一个象棋棋盘上放炮,要求两个炮不能互相打到,然后问你最多能放几个炮题解:dfs 一直dfs到最后一行最后一列 就可以 每个点只往上和往左扫了 vis[x][y]= 0 表示这个点没有棋子 1表示 普通的棋子 2表示 炮代码:#include <bits/stdc++.h>using n原创 2017-02-26 20:01:46 · 309 阅读 · 0 评论 -
hdu5248 序列变换 二分
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5248题意:题解:二分 从上一个位置到达这个位置,可以通过上一个位置推出当前位置必须到达的最小值now,如果now代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;#define MS(a) memset(a,0原创 2017-03-06 20:13:32 · 360 阅读 · 0 评论 -
hdu 5233 Gunner II 离散化
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5233题意:有n只鸟,还有n棵树。第i只鸟站在第i棵树的顶端。这些树从左到右排成一条直线。每一棵树都有它的高度。Jack站在最左边那棵树的左边。当Jack在高度为H的地方向右发射一棵子弹时,站在高度为H的树上且离Jack最近的鸟儿就会落下来。 Jack会射击多次,他想知道每次射击哪只鸟儿会落下来。题解:离原创 2017-03-06 23:02:35 · 223 阅读 · 0 评论 -
HDU 5695 Gym Class 拓扑排序
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5695题意:题解:如果A不想让B在他的前面,那么就可以认为A到B有一条有向边,那么就可以利用拓扑序列来做这道题了,但是要想每次首先访问到的是能访问到的中的最大值,那么可以把入度为零的所有点压入优先队列中,使得每次新的拓展节点是能拓展的种的最大值.代码:#include <bits/stdc++.h>us原创 2017-03-11 16:10:17 · 255 阅读 · 0 评论 -
hdu 3001 Travelling (状态压缩dp,三进制!)
题目链接:https://vjudge.net/contest/159644#problem/D题意:n个点,给出m条边,每条边有一个边权,每个顶点可以走两次 问走遍所有点的最小花费题解:http://www.cnblogs.com/martinue/p/5490432.html 对于状态S,第i位为1表示已经走过 dp[S][v]:=在S这个状态,走到v所用的花费 转移: dp[i+th原创 2017-04-21 21:26:36 · 580 阅读 · 0 评论 -
hdu 4496 D-City 并查集
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4496题意:给你个图,他不断删边,然后问你联通块的个数题解:我们可以逆向认为所有的点全是独立的,因为正向的时候去掉其中某条边的,独立的点不一定会增多(去掉这条边后还有其他边间接的相连),所以当我们逆向思考的时候,只会在增加某一条边时减少独立的点(也就是联通的点增多),这样只会在他之后才会有可能有某条边的操原创 2017-03-03 15:08:06 · 243 阅读 · 0 评论 -
hdu 1257 小希的迷宫 并查集
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1272题意:题解:用并查集来判断是否都在一个集合里面,是否成环,就好了代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;#define MS(a) memset(a,0,sizeof(a))#define MP原创 2017-03-03 14:44:17 · 221 阅读 · 0 评论 -
hdu 4277 USACO ORZ DFS
点击打开链接题意:n个棍子,棍子可以接起来,然后问你能够拼成多少个完全不同的三角形思路:3^15=14 348 907,所以直接暴力然后hash一下就好代码:#include using namespace std;typedef long long ll;#define mem(a) memset(a,0,sizeof(a))#define mp(x,y) make_原创 2017-02-24 10:46:09 · 268 阅读 · 0 评论 -
hdu1698 Just a Hook 线段树 区间更新 懒操作
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1698题意:输入一个n表示一段长度为n的区间,有n个编号为1~n的点,初始值全部为1。 有q个操作, 每个操作有3个数:l,r,v表示将区间l~r的所有元素修改为v。 求经过q次修改后的整个区间的值之和。题解:线段树。 区间更新 lazy。 需要用的时候再pushdown 一个点一个点的更新之所以慢原创 2017-03-01 21:40:08 · 271 阅读 · 0 评论 -
HDU 1394 Minimum Inversion Number 线段树 单点更新 求逆序数
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1394题意:a1, a2, …, an-1, an a2, a3, …, an, a1 a3, a4, …, an, a1, a2 … an, a1, a2, …, an-1 求其中最小的逆序数的个数题解:从a[0]开始扫描,找比a[0]大的个数,也就是询问区间(a[0],n-1)中点的原创 2017-03-01 16:45:54 · 238 阅读 · 0 评论 -
hdu 2795 Billboard(线段树)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2795题意:一个h*w的公告牌,要在其上贴公告。 输入的是1*wi的w值,这些是公告的尺寸 接下来要满足的条件: 尽量往上,同一高度尽量靠左。 求第n个广告所在的行数 ,没有合适的位置贴了则输出-1。题解:利用线段树可以得出区间的最大值,维护一个最大值val,用来表示这段区间内有最多空位的那一行的空原创 2017-03-01 19:11:19 · 234 阅读 · 0 评论 -
hdu4283 You Are the One 区间DP
点击打开链接题意:有一个队列,每个人有一个愤怒值D,如果他是第K个上场,不开心指数就为(K-1)*D。但是边上有一个小黑屋(其实就是个堆栈),可以一定程度上调整上场程序思路:区间DP,dp[i][j]表示从第i个人到第j个人这段区间的最小花费(是只考虑这j-i+1个人,不需要考虑前面有多少人)那么对于dp[i][j]的第i个人,就有可能第1个上场,也可以第j-i+1原创 2017-02-22 01:52:03 · 190 阅读 · 0 评论 -
hdu3507 Print Article DP+斜率优化
点击打开链接题意:就是给一个序列,让你分成很多段,每段按照题目的公式算出答案,要所有的答案加起来最小思路一:(参考)http://www.cnblogs.com/lidaxin/p/5116577.html斜率优化。设f[i]表示前i个数分段后的最小值,则转移式为f[i]=min{f[j]+(sum[i]-sum[j])^2+M},1进一步得:f[i]=min{ (原创 2017-02-23 00:37:13 · 287 阅读 · 0 评论 -
hdu3045 Picnic Cows(斜率优化DP)
点击打开链接题意:有n个奶牛分别有对应的兴趣值,现在对奶牛分组,每组成员不少于t, 在每组中所有的成员兴趣值要减少到该组的最小值,问总共最少需要减少的兴趣值是多少。思路: 斜率优化+DP转移方程为:f[i]=min{ f[j]+sum[i]-sum[j]+(i-j)*a[j+1] } T其中sum表示a的前缀和。如果j>k且决策j优于决策k则有f[j]原创 2017-02-23 01:58:22 · 632 阅读 · 0 评论 -
hdu3480 Division(斜率优化+二维DP)
点击打开链接题意:给你一些数,把这些数分成M组,每组的花费是这组的 (max-min)^2。求最小花费思路:斜率优化+二维DPf[i][m] 表示将前i个分作m个集合所得最小消费首先应该排序,假设1,2,3,5,4 第四个数是5,花费一定比是4大。【贪心】f[i][m] = min{f[j][m-1]+(a[i]-a[j+1])*(a[i]-a[j+1])}; 排原创 2017-02-23 12:16:53 · 338 阅读 · 0 评论 -
hdu 1540 Tunnel Warfare 线段树 单点更新,查询区间长度,区间合并
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1540题意:给你一个区间,有三个操作,使的一个村庄毁灭,使的上一个毁灭的村庄复活,查询这个村庄所在最长区间题解:区间合并的线段树,单点修改,记录从左边的最大值,右边的最大值,区间的最大值 然后每次更新代码:#include <bits/stdc++.h>using namespace std;typ原创 2017-03-02 18:09:59 · 230 阅读 · 0 评论 -
hdu1269 移动城堡 联通分量 Tarjan
点击打开链接思路:tarjan求强连通分量 判断ans==n?卿学姐视频:http://www.bilibili.com/video/av7330663/代码:#include using namespace std;const int INF = 1<<30;const int maxn = 1e4+7;int dfn[maxn],low[maxn],vis[max原创 2017-02-23 18:58:43 · 255 阅读 · 0 评论 -
hdu5113 Black And White DFS+剪枝
点击打开链接题意:给你n*m的方格,你要用k种颜色去填,每种颜色要填ci次,并且要保证没有任意两个相邻的格子有相同的颜色,构造一种可行方法。思路:直接暴力回溯+剪枝,当没填的颜色中同种颜色数量超过(剩余格子+1)/2的时候,不可能合法。代码:#include using namespace std;typedef long long ll;#define me原创 2017-02-23 21:38:30 · 248 阅读 · 0 评论 -
HDU 3974 Assign the task 图论/线段树区间更新,单点查询
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3974题意:给你一个树,v,u 表示u是v的上司 有两个操作 1.让某一个点,和他的儿子们全部染成X 2.查询某一个点是什么颜色题解:当成图论跑一发,对于每一个查询直接跑到根位置就好,更新的时候,注意更新的时间问题线段树也可以做: 将树映射到区间的线段树。。。 主要是将原有的关系树根据BOSS关原创 2017-03-03 13:22:04 · 251 阅读 · 0 评论 -
HDU 4539 郑厂长系列故事――排兵布阵 状压dp
题目链接:https://vjudge.net/contest/159644#problem/H题意:注意 是曼哈顿距离恰好是2,恰好!!!题解:与poj1185差不多的… 滚动数组,否则MLE,是我MLE了…代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;#define MS(a) memset(a,0原创 2017-04-21 22:08:21 · 463 阅读 · 0 评论