P1903

题目:https://www.luogu.org/problemnew/show/P1903 分析:主席可以做,也可以用动态(带修改)莫队,模板题。 参考博客:https://www.cnblogs.com/zwfymqz/p/7154145.html https://blog.csdn.n...

2019-05-24 22:46:55

阅读数 17

评论数 0

SPOJ Count on a tree II

题意:给定一个n个节点的树,每个节点表示一个整数,问u到v的路径上有多少个不同的整数。 分析:树上莫队模板题,利用欧拉序将树上路径转化为序列,注意我们询问的区间长度为2∗N,所以预处理的时候一定要循环到2∗N。 参考博客:https://www.cnblogs.com/zwfymqz/p/92...

2019-05-24 11:05:39

阅读数 27

评论数 0

hdu1506

问题:有N条的长条状的矩形,宽度都为1,第i条高度为Hi,相邻的竖立在x轴上,求最大的子矩形面积。 1≤ N≤ 105 1≤ Hi≤ 109 分析:我们只需要求出每条矩形最多可以向两边拓展的宽度,就可以算出以这个矩形高度为高的最大子矩形面积。最后我们求一个最大值即可。这里可以用dp或者笛...

2019-05-23 22:42:30

阅读数 15

评论数 0

POJ 2201

题目:笛卡尔树:笛卡尔树中的每个节点有两个数据域k,a,对于数据域k,满足二叉搜索树性质,对于数据域a,满足最小堆性质。给出N个节点,1<=N<=50000,每个节点由一对k,a构成,判断能否根据这些节点构建一颗笛卡尔树,如果可以构建则输出构造出的笛卡尔树,否则输出“N...

2019-05-23 21:51:31

阅读数 20

评论数 0

CodeForces 660F

题意:给定一段数列,现在叫你取其中一段,第一位*1,第二位*2...求最大。 思路:sum[n]=a[1]+a[2]+...a[n],原先的dp[n]=a[1]*1+a[2]*2+a[3]*3+..a[n]*n; 那么现在的max[i]=max:dp[i]-dp[j]-(sum[i]-sum[...

2019-05-23 20:53:14

阅读数 19

评论数 0

HDU 3507

题意:就是要输出N个数字a[N],输出的时候可以连续连续的输出,每连续输出一串,它的费用是 “这串数字和的平方加上一个常数M”。 分析:我们设dp[i]表示输出到i的时候最少的花费,sum[i]表示从a[1]到a[i]的数字和。于是方程就是:dp[i]=dp[j]+M+(sum[i]-sum[j...

2019-05-23 20:14:47

阅读数 18

评论数 0

fread 快速读入挂

struct FastIO { static const int S = 1e7; int wpos; char wbuf[S]; FastIO() : wpos(0) {} inline int xchar() { static char ...

2019-05-23 11:10:25

阅读数 41

评论数 0

ZOJ 3941

题意:有n(10)段时间,会举行party,每个party有开始时间,结束时间,不同party举行时间可能重复。(时间范围为1~1e9) 我们一共最多可以参加m(1e9)party。同时有一个参数K(1e9),一旦我们在第i天参加了party,我们会连续K天(即[i,i+K-1]天范围内)都hap...

2019-05-22 21:48:38

阅读数 527

评论数 0

HDU 6233

题意:一个树上有m个人,每个人在某个节点上,每个时刻每个人可以和一个与他距离大于 1 的点进行交流,然后往交流的人的方向走一步,当他一个人没有可以交流的人时就不可以走了,问所有人都不走的期望时间是多少。 题解:这题分析下就知道是求某一对最远的距离,也就是树的直径,由于点数很少暴力也行 代码参考...

2019-05-22 12:17:27

阅读数 30

评论数 0

HDU 6241 Color a Tree

题意:给你一棵树,然后让你对树上的节点进行黑白染色。然后染色有一些要求,对于A类要求,要求在x的子树中,至少有y个节点被染成了黑色;对于B类要求,要求在树的所有节点除了x以及其子树节点外,至少有y个节点被染成了黑色。初始状态树是白色的,现在问你,最少给多少个节点染成黑色之后,能够满足所有的A、B类...

2019-05-22 11:37:12

阅读数 29

评论数 0

HDU 6230

题意:字符串S【1,3n-2】 中以 位置n(C1)和2n-1(C2)为回文串中心,长度都为n,找出给出的主串中有多少这样的子串 分析:首先用manacher求出以每个点为中心的回文串半径,考虑每个点作为C1时,有多少位置作为C2可以组成字符串S.那么对于答案,实际就是统计满足下列条件(i,j)...

2019-05-22 11:08:31

阅读数 31

评论数 0

HDU 6242

题意:给你N个点,然你找到一个点以及一个半径,相当于是找到一个圆,然后至少有一半的点都在圆上。 思路:3个点可以确定一个圆,只要每次随机三个点然后来确定一个圆,再判断这个圆是否可行。因为至少有一半的点是在圆上,所以随机的次数是非常少的。对于小于5个点的要直接特判。 代码: #include&...

2019-05-21 21:59:34

阅读数 28

评论数 0

HDU 6231

题意:给你数列A,对于A的每一个区间,求第K大,插入到数列B中,最后再求数列B的第M大。 解题思路:二分+尺取。对于当前答案,如果当前答案作为第K大的区间的总数大于M,则实际答案要比当前答案大,反之则小。统计答案作为第K大的区间个数用尺取,注意尺取法的细节问题。 代码: #include&...

2019-05-21 21:48:27

阅读数 28

评论数 0

HDU 5886

题目:N个点的一棵带权树。切掉某条边的价值为切后两树直径中的最大值。求各个边切掉后的价值和(共N-1项)。 思路:预处理出最长链,若断边不在最长链上,那么答案依旧是最长链,否则分别计算断开后的最长链,取最大值。 参考:https://www.cnblogs.com/zufezzt/p/5892...

2019-05-17 21:58:17

阅读数 141

评论数 0

hdu 5890

题意: 现在给你n个数,每次查询问从点集中删去 x,y,z 三个数,你要从其他的剩下的数中能否找出10个数使得十个数相加为87? 思路: 背包来做,由于n 比较小,所以我可以预先处理出所有的情况,然后用bitset 优化。 代码: #include<bits/stdc++.h...

2019-05-16 21:27:33

阅读数 42

评论数 0

hdu5887

题目:n个物品,时间限制m,给出每个物品的价值和时间,求在m限制内,最多的价值。 思路:大容量背包问题,采用贪心+搜索+剪枝的方法,先对所有的物品按贡献(w/v)进行排序, 当搜到第u个点时,第u+1个在剩下的贡献是最大的. 如果剩下空间的全部放 u+1物品都无法大于当前的答案,则剪去。 代码...

2019-05-16 20:44:28

阅读数 31

评论数 0

HDU 6483

题意:有长度为nn的数组,对于一个子区间[l,r][l,r]内,存在最大值mxmx与最小值mimi,有qq的询问,每个询问要求判断在某个子区间[l,r][l,r]内[mi,mx][mi,mx]的值是否连续存在,即mi,mi+1,....,mxmi,mi+1,....,mx每个数都出现过至少一次。T...

2019-05-16 20:00:01

阅读数 34

评论数 0

HDU 6485

题目:给你一个k和两个字符串,从两个字符串中各选出一个等长的子串,要求这两个子串上相同位置上不同元素的个数不能超过k,求选出的子串的最大长度是多少。 思路:枚举A的子串的起点去匹配B串,枚举B串子串的起点去匹配A串。匹配的时候尺取法去匹配,复杂度O(n^2*T)。 代码: #include...

2019-05-16 19:42:35

阅读数 36

评论数 0

HDU 5880

思路:AC自动机的模板题。可是这个题目给的数据范围特别大,算一下空间复杂度,直接超内存了。注意这里不要用memset一次性清空数组,超内存是一次性memset数组导致的,将没有用的空间也用上了,于是试了下不一次性memset数组,果断不超了。每一次匹配成功,做出相应标记时,要标记整个匹配的串的范围...

2019-05-16 18:53:45

阅读数 32

评论数 0

AC自动机模板

#include <bits/stdc++.h> using namespace std; typedef long long ll; const int maxn = 2*1e6+9; int trie[maxn][26]; //字典树 int cntword[m...

2019-05-16 18:49:03

阅读数 31

评论数 0

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