自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 问答 (1)
  • 收藏
  • 关注

原创 【Trie的模板】例题11 LA3942 Remember the Word(字典树+dp)

Trie也就是字典树,可以处理一些字符串的查找问题,写起来还是很简单的,下面记录一下模板:#include#include#include#includeusing namespace std;const int maxnode = 1000;const int sigma_size = 28;struct Trie{ int ch[maxnode][sigma_size]

2016-11-26 14:52:17 381

原创 codeforces712E Memory and Casinos(区间树)

题意:有n个赌场,你在i赌场时,有pi的概率走到i+1,有1−pi的概率走到i−1.保证任何时候pi≤pi+1有q次操作,修改一个赌场的p值;或者询问[l,r]表示从第l个赌场走到r的概率,他在走的过程中不会离开区间[l,r].要点:比较容易看出是区间树,但是这个概率的处理很复杂,基本思路可以参考下面这个博客:参考博客:点击打开链接但是这个博客还有网上我找了一下,有一个

2016-11-25 21:50:58 344

原创 codeforces712D Memory and Scores(前缀和优化dp)

题意:两个人玩取数游戏,第一个人分数一开始是a,第二个分数一开始是b,接下来t轮,每轮两人都选择一个[-k,k]范围内的整数,加到自己的分数里,求有多少种情况使得t轮结束后a的分数比b高。 (1 ≤ a, b ≤ 100, 1 ≤ k ≤ 1000, 1 ≤ t ≤ 100)要点:一开始没想到是dp,实际上可以用dp[i][j]表示第i轮比一开始多得到j分的方案数,所以一开始a,b

2016-11-25 08:23:32 655

原创 HDU3401 Trade(单调队列优化DP)

最近做CF的时候遇到单调队列优化DP的问题,看了一下网上这种题也很少,而且都很难理解,下面是两个解释的比较好的博客:单调队列优化DP的基本思路:点击打开链接两道例题详解:点击打开链接下面讲一下我自己对单调队列优化dp的理解,首先不是所有dp都可以使用单调队列优化的,只有形如 dp[i]=max/min (f[k]) + g[i] (k还是挺难理解的,现在水平可能不够吧,还是多做题。

2016-11-19 15:06:29 390

原创 【?】codeforces721E Road to Home(DP+单调队列)

转换关系搞清楚了,但是关于那个单调性来处理DP的地方,还是不明白,应该是单调队列优化DP这个点不会,补一下代码,先学一下单调队列优化DP,参考博客:点击打开链接#include#include#includeusing namespace std;const int maxn = 100005;int f[maxn], g[maxn];int main(){ int l,

2016-11-17 15:59:11 445

原创 codeforces721D Maxim and Array(贪心)

题意:给出一系列数,要求可以进行k次操作,每次可以将数列中一个数+x或-x,求这些数的乘积的最小值。要点:这题就是贪心,如果负数是奇数个,就将当前数列中绝对值最小的数远离0,如果是偶数个,就靠近0。自己算算觉得还是挺靠谱的,感觉自己做还是不敢这么写。#include#include#include#include#include#include#includeusin

2016-11-15 20:27:47 525

原创 codeforces721C Journey(DP)

题意:给出一个图,问从点1到n,在总时间为T的情况下最多能经过多少城市?要点:一看就知道是DAG里的DP,直接递推比较难写,用记忆化搜索比较方便,基本思路就是用dp[i][j]存储从i开始经过j个城市所需最少时间,最后找出时间小于等于T的j的最大值即可。#include#include#include#include#includeusing namespace std;

2016-11-14 22:00:11 393

原创 RMQ问题

BMQ问题就是在一系列连续的数中,找出一个区间内最小的数,基本思路就是用d[i][j]表示从i开始,长度为2^j的一段元素中的最小值,直接先递推预处理,时间是O(nlogn),查找就O(1)基本模板:#include#include#includeusing namespace std;const int maxn = 10000;int d[maxn][maxn];void

2016-11-14 15:46:09 411

原创 HDU3394 Railway(点双连通分量)

题意:给出一个无向图,求出它的冲突边数和多余边数,冲突边就是那些同时存在于多个环中的边,而多余边是不在任何一个环中的边.。要点:多余边很明显就是桥,我们可以推断除冲突边只能在点双连通分量中,感觉边双应该也行,主要就是求出分量后看分量中点数n和边数m的关系,如果n#include#include#include#include#includeusing namesp

2016-11-11 07:36:51 406

原创 HDU3749 Financial Crisis(点双连通分量+并查集)

题意:给出一个图和一系列查询,查询是给出两个点,问两点之间有多少条点不重复的路径要点:明显是点双连通,如果u,v不连通(并查集处理)输出0;如果u,v处于同一个点双连通分量,输出2(注意这里如果这个分量只有两个点一条边输出1);如果不同,输出1即可。注意这题有个地方要处理,我们知道割顶可以是好几个点双连通分量的公共点,所以如果直接用白书上的bccno数组来判断割顶处于哪个点双连通分

2016-11-06 10:38:01 501

原创 双连通分量

双连通分量就是无向图中的强连通分量,基本就是找割顶和桥。割顶就是一个点,如果把它取掉,连通分量数量就会增加,桥就是一条边,同理。对于一个连通图,如果任意两点至少存在两条“点不重复”的路径,也就是任意两条边都在一个简单环中,即内部无割顶,则说这个图是点双连通的。对于一个连通图,如果任意两点至少存在两条“边不重复”的路径,也就是任意边都至少在一个简单环中,即所有边都不是桥,则说这个图是边双连通

2016-11-06 08:51:48 391

原创 欧拉函数

数论里的一个小定理,没什么特别的,就是求[1~n]中与n互质的数的个数,其实还有挺多其他拓展,比如计算贡献啥的,后面再补吧。Euler函数表达通式:euler(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…(1-1/pn),其中p1,p2……pn为x的所有素因数,x是不为0的整数。euler(1)=1(唯一和1互质的数就是1本身)。欧拉公式的延伸:一个数的所

2016-11-01 14:39:52 428

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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