
HDU
LXY_XYL
这个作者很懒,什么都没留下…
展开
-
HDU 1530
这道题 是一个 最大团板子题。。。虽然才刚刚开始看最大团 首先什么是最大团,假设一个图里,有一些点和边构成一个子图,他们不与外界交流,完全就是个独立的个体,我们就可以叫他们是一个团,也就是 完全图,最大团 通俗的讲,就是在一个图里找一个点数最多的 完全子图那么因为只需要统计团中 节点的个数,那么 我们需要做的,就是 dfs 遍历一次所有连通的点,不断记录最大的团数目,直至搜索...原创 2018-11-28 23:35:46 · 176 阅读 · 0 评论 -
Hdu 4745
有 n 个石头,每个石头都有一个权值 ai ,围成一个环,两只兔子以一个为起点,分别向两个方向跳,要求保证两人处的石头权值相等的条件下,最远能走多远。 仔细分析一下,如果一个向左一个向右,而且路上权值一样,这不就是区间内的最长回文串长度吗。。。当然还有一个问题,两只兔子起点是可以任意选的,我们除了要算出长度 为 n 的区间内最长回文串长度之外,还要考虑,以区间外边为起点的情况,所以构建...原创 2018-12-16 22:55:31 · 217 阅读 · 0 评论 -
HDu 1556
热身练习的水题。。用树状数组。不说了。。。庆祝一下 第一百个博客。。。。。。。。 #include<iostream>#include<cstdio>#include<cstring>using namespace std;const int low(int x){ return x&-x; }const int maxn = 1...原创 2018-12-10 23:38:52 · 145 阅读 · 0 评论 -
HDU 2838
这题有毒,结果printf已知WA 改成 cout 就对了。。。。很毒。。。 给一个打乱顺序的 n 个数排序,每次交换两个数花费是 X+Y 。 还是树状数组,但是开两个数组,一个统计数字个数,一个统计数字大小。对于当前的数 x 我们可以知道他前边有几个大的数,她也需要进行几次交换,每次交换也需要加上那些被交换的数的大小,那么结果显而易见,就出来了。 以...原创 2018-12-11 00:33:40 · 158 阅读 · 0 评论 -
HDU 4614
给定一个区间[0,N-1],初始时每个位置上的数字都是0,可以对其进行以下两种操作:1、在位置A开始寻找F(如果没有这么多,则有多少个就找多少个)个数值为0的位置,把位置上的数修改为1,并返回第一个和最后一个修改的位置2、查询区间[a,b]内1的个数,并把区间[a,b]每个位置上的数修改为0很明显 对于线段树,保存区间和就可以了。对于二还是很好处理的,直接 区间长度 - 去区间...原创 2018-12-27 21:44:31 · 274 阅读 · 0 评论 -
HDU 3635
题意如下n 个城市每个城市有一个编号与城市同名为 i 的龙珠有Q 个事件T A B 代表A城市里所有龙珠移动到了B城市Q A 代表询问 A,输出 A 龙珠所在城市,所在城市一共多少个龙珠,A一共移动了几次。。。 简单并查集,每次询问一个龙珠时,父节点全部的移动加上自己的移动就是A一共移动的次数,之后合并的时候只需把 pre[a] 设为 b 同时 a 移动次数 +1, ...原创 2018-12-11 13:14:43 · 286 阅读 · 2 评论 -
HDU3530
还是一个单调队列题目题干如下 给定一段序列,求出最长的一段子序列使得该子序列中最大最小只差x满足m<=x<=k。 那么建立两个单调队列,一个维护递增,一个维护递减,这样我们能够快速求出极值差,而当差值一旦大于 k 记录一下两个队列距离队尾最近的左端点,然后当符合条件时,不断更新最长长度。。。 以下是AC代码 ...原创 2018-12-17 23:45:39 · 271 阅读 · 0 评论 -
HDU 5396
一道区间 dp 题目有 n 个数字,n-1 个操作符,求所有按照不同顺序进行运算的结构的和。。。举个例子吧。。。1 2 3 4 + * +结果就是 ( (1+2) * 3 + 4 ) + ( 1+ 2*3 + 4) + ((1+2) * (3+4))总之就是这样我们就可以用区间 dp 的思路 dp[ i ] [ j ] 代表 区间 ( i , j ) 之和那么 d...原创 2018-12-23 20:41:20 · 157 阅读 · 0 评论 -
HDU 1024
题目很简单, 长度为 n 的数组,选取 m 个不重叠片段,使得所有和最大。。。dp 解决dp[ i ] [ j ] [ k ] ( 表示前 i 个数字内 分成 j 个片段,k 为 0 或 1 ,0代表不选当前数,1代表选择当前数)那么 k = 0 时dp[ i ] [ j ] = max( dp[ i -1 ] [ j ] [ 0 ] , dp[ i - 1 ] [ j ] ...原创 2018-12-31 23:11:58 · 282 阅读 · 0 评论 -
HDU 4521
求长度为 n 间距大于 d 的最长上升序列正常思路由于数据超过 1e5 得线段树优化一下了。。。。 #include<iostream>#include<cstdio>#include<cstring>using namespace std;#define lson l,m,rt<<1...原创 2019-01-01 00:03:37 · 96 阅读 · 0 评论 -
HDU 4489
有 n 个不同身高但是身高存在一定顺序的人现在要排队 排成波浪形即 高矮高矮。。这种 当然 矮高矮高也可以那么 我们就用 dp[i][k]代表状态k 为 0 或 1 代表 开始的人是 高还是矮那么就有 dp[j][0]*dp[i-j-1][1]*c[i-1][j] 代表的就是 第 i 个人加入之后的可能排列数,但是涉及到两种不同开始端,我们发现,不同开始端时候排列举个例...原创 2019-01-01 15:48:42 · 224 阅读 · 0 评论 -
HDU 4417
题目很简单 求区间内部小于等于k 的数字个数还是主席树思想,n个线段树每个维护 1-i ,之后本题和求第k大很像,我们需要对输入数据预处理一下首先要对输入的数据进行一下离散化,保存到新数组里,每个线段树维护的是某个数字出现过的次数,之后记录出原数组每个数字离散后的大小,之后先找出第k大的数字,之后在整个数据结构里找出' 1 - k 之间的所有数字数量就好了 以下是AC代码...原创 2019-01-15 15:25:40 · 413 阅读 · 0 评论 -
HDU 3074
本题还是很简单的。。线段树模板。。重新复习了一下。。区间修改和乘法运算。。。注意取模就好。。 顺便更新下模板。。。 以下是 AC 代码 #include<iostream>#include<cstdio>#include<cstring>using namespac...原创 2018-12-10 20:00:45 · 196 阅读 · 0 评论 -
Hdu 4000
本题还是比较有趣的给一个打乱的 1--n 排列 求有多少种组合 x y z 满足x <y <z && Ax < Az < Ay那么我们只需要先对与每个 x 来说 我们只需要统计一下他后边的比他大的数字个数为 a就包括了一种排列方式,那么我们随意从a个数字里边选两个(),那么很显然 我们再另一个为 y,一个为z 就成立了,但是可能会出现一种情...原创 2018-12-09 23:19:41 · 207 阅读 · 0 评论 -
HDU 1075
题意很简单 给你一个火星人的语言和地球人语言单词对照表,翻译火星人的语言。虽然提前知道这题是字典树,但是看了一下题目,还是觉得如果不知情的话也会想去考虑自点数,因为太明显了。。给一个其他语言的单词和已知语言的单词对照表,完全就是字符匹配。。。 很简单,先把火星语插入的字典树,同时设置一个 flag 数组,必须保证整个单词都出现过才能 return rt,之后就是开一个下表数组,来记录这...原创 2018-11-25 11:16:49 · 163 阅读 · 0 评论 -
HDU 3491
题意如下,有多个小偷 从 s 点逃往 h 点,有 N 个城市, m 条路,每个城市最少需要 x 个 警察驻守才能防守住,问最少需要多少个警察才能把全部小偷堵住。。。 最小割。。。一眼就能看出来。转化最大流,因为每个城市要 X 个警察才能守住,我们就对其进行拆点,有了上一题经验,既然求最小割,我们把题目里的边容量设成 INF 来防止被割,然后跑一边最大流就可以成功的 割点了。。 ...原创 2018-11-25 13:05:53 · 149 阅读 · 0 评论 -
HDU 3585
这道题说实话。。如果说跟最大团找关系。。我看不出来。。。看来对最大团理解还是太浅了。。。 题意:有 n 个点 现在给出这 n 个点的坐标 x y ,选择 k 个点做一个集合,使得集合内部最近的两个点 距离最大。 n范围不超过 50 证明 最大团的 dfs 加剪枝 可以跑的过。。首先 我们把所有点之间的距离存在一起,然后排序,既然答案是存在的,那么就代表 可以二分我们对排...原创 2018-11-29 17:12:34 · 167 阅读 · 0 评论 -
HDU 2586
题意很简单,给一棵树,给你已知的每条边的权值,输入一个起点 s 一个重点 t 求二者间距离。 思路很简单,要想从 a 跑到 b 只需要找到二者的 最近公共祖先 lca,之后把 根到 i 节点 距离设为 dis[i] ,最终结果 就是 dis[s] +dis[t] - dis[lca] * 2 那么问题来怎么求 lca 呢?首先 我们想一下最暴力的方法对于这样一张图...原创 2018-12-02 15:46:39 · 1117 阅读 · 0 评论 -
HDU 3829
题意如下 有 n 个小朋友参观动物园,动物远的动物包括猫和狗 某个小朋友喜欢猫 就会讨厌狗,反之也一样。一旦动物园里没有那些被他讨厌的 猫 或 狗 某个小朋友就会开心,但是他喜欢的被去掉就不会开心,问去掉几只动物能让小朋友开心人数最多。输出最多开心的小朋友数。 开始看一下 主要关注点在于被讨厌的那部分,喜欢的我们建立一下匹配关系就好了,那整个二分图构建完毕之后,我们相当于只需要求一下 ...原创 2018-11-29 23:13:40 · 122 阅读 · 0 评论 -
HDU 1394
很简单求循环数组最小逆序数(数组数字保证不重复且是打乱顺序的 0 - n-1)之前用线段树做过,这里用树状数组又做了一遍。。。思路还是不变。不过之前偷懒。。直接借助结论,这里证明一下每次把首位移动至结尾会产生那样的规律。。 既然是打乱顺序的连续数字,那么 a[i] 后边肯定存在 a[i] 个 比 a[i] 小的数字,那么此刻逆序数就是 a[i],比 a[i] 大的就有 n-1 ...原创 2018-12-08 23:53:43 · 119 阅读 · 0 评论 -
hdu 2874
这道题题意很简单给你一个森林,输入连通的点,最后给你多次询问,每次问输出两个点 s 和 t 之间的 距离 如果没连通就输出 Not contence....(总之是串英文)有些丢人。。。不会写离线算法。。写了个在线算法。。。跑了 1700ms 。。。 还是很好搞的。。因为是森林。跑最短路会出事的。所以先用并查集建立集合关系。输入s t 判断一下,之后正常的求...原创 2018-12-03 22:47:06 · 391 阅读 · 0 评论 -
HDU 2196
简述题意:给一个n个点的带边权树,求每个点能到的最远距离。一般题意:有连续n台电脑加入,每台电脑会和之前已经加入的电脑相连,并且边有一个权值,求每个电脑的最远的距离。对于每个点 其到最远距离只有两个来源:1 来自他的子树, 2来自父节点对于第一种情况自然很好处理,但是第二种情况,我们就需要考虑了,开始的时候太蠢了,只想到根到当前节点就是最远,但是没想到可以是从另外一边追溯到根节...原创 2018-12-13 15:43:39 · 412 阅读 · 0 评论 -
HDU 1561
中文题,直接复制了。The more, The BetterTime Limit: 6000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 10061 Accepted Submission(s): 5858 Problem Description...原创 2018-12-13 19:45:15 · 103 阅读 · 0 评论 -
Hdu 2852
三种操作0 加入一个数 x 进入集合1 去除一个数 x 从集合中(如果没有这个数输出 No elment)ps:我感觉这个出题人单词拼错了2 查询比 x 大 的第 k 个数 树状数组解决,然而如果暴力遍历会超时,就用二分查找二者之间相差的数个数是否大于 k 就好了。。。‘ 以下是 AC 代码 #include<iost...原创 2018-12-09 12:48:11 · 146 阅读 · 0 评论 -
Hdu 1892
可以理解成一个强化版的求最大子矩阵四种操作S x1 y1 x2 y2 询问以(x1 , y1) - (x2 , y2)为对角线的矩形的面积,但是这个对角线不一定是正对角线。A x1 y1 n 把点(x1 , y1)加上n。D x1 y1 n点(x1 , y1)减去n如果不足n就全部删除即可。M x1 y1 x2 y2 n 把点(x1 , y1)点值中扣除n加到(x2 , y2)...原创 2018-12-09 20:18:49 · 185 阅读 · 0 评论 -
HDU 4635
给一个图,问最多加几条边可以让他依然不变成强连通图。如果已经强连通输出-1反向思路,对于一个完全连通图如何去除 k 条边 使得其变成非连通图。那么 很显然, 我们需要找一个在原图基础上点数最小的联通块,当然这个联通块必须得没有入度或者出度,这样才能便于我们舍弃这个联通块,之后只要去除这个联通块和外界的入路或者出路就好了。。。最后结果减去m,,以下AC代码 #include&...原创 2019-02-24 16:17:41 · 202 阅读 · 0 评论