自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(605)
  • 收藏
  • 关注

原创 hdu6205 card card card 尺取法

题目:http://acm.hdu.edu.cn/showproblem.php?pid=6205题意:给定两个相同长度的数组a,b,数组中元素范围为[0,1000],现在从头开始依次选取元素,分别累加a中元素和(设为suma)与b中元素和(设为sumb),当suma-sumb<0时停止选取元素,此时suma就为取得的最大价值。在游戏开始之前,可以把两个数组的第一个元素同时放到各自尾部,这个操作可以

2017-09-22 19:54:45 205

原创 hdu6216 A Cubic number and A Cubic Number 打表找规律 + 二分

题目:http://acm.hdu.edu.cn/showproblem.php?pid=6216题意:给定一个素数,判定这个素数能不能由两个不同的数字的立方的和思路:打表找规律,可以发现,满足条件的素数,一定等于x-1,x这样两个数字的立方的和,反过来则不一定成立,于是就可以二分x求答案了#include <bits/stdc++.h>using namespace std;typedef lon

2017-09-22 17:33:19 316

原创 hdu6194 string string string 后缀数组 + RMQ

题目:http://acm.hdu.edu.cn/showproblem.php?pid=6194题意:给定一个字符串,求恰好出现k次的子串有多少个思路:后缀数组处理出height数组,然后按顺序每次取一个长度为k的区间,这个区间的公共前缀设为L,即这个区间内的height数组的最小值,可以RMQ实现O(1)查询,那么意味着有L个子串出现了恰好k次,但是有可能这L个子串中有一些出现次数是大于k的,要

2017-09-22 16:44:46 261

原创 hdu6195 cable cable cable 找规律推公式

题目:http://acm.hdu.edu.cn/showproblem.php?pid=6195题意:有n个显示屏和k个不同信号源,在显示屏和信号源之间连线,一个显示屏若和多个信号源连接,可以显示任意一个信号,使得任意选出k个显示屏,可以使这k个显示屏的信号都不同,问最小需要的连线思路:首先选出kk个显示屏,这kk个显示屏每一个都连接一个不同的信号源,剩余的n−kn-k个显示屏每一个都连接所有的信

2017-09-21 15:37:40 256

原创 hdu6197 array array array LIS

题目:http://acm.hdu.edu.cn/showproblem.php?pid=6197题意:给定一个数组,问能不能恰好删除k个数字,使得剩下的数字构成非严格上升子序列或者非严格下降子序列思路:对数组正向求一次非严格LIS,然后逆向再求一次非严格LIS,两者中只要有一个长度大于等于n-k,就是符合要求的#include <bits/stdc++.h>using namespace std;

2017-09-21 14:55:20 335

原创 hdu6201 transaction transaction transaction 树形dp || 最短路

题目:http://acm.hdu.edu.cn/showproblem.php?pid=6201题意:有n个城市,有n-1条道路将n个城市连接成一个整体,即一个树。一本在每个城市的价格不同,任选一个城市买书,再任选一个城市卖掉书,每条道路都有花费,问最多能赚多少钱思路:先说最短路,起点终点都是不确定的,所以建源点和汇点,把所有点连到源点和汇点上去,从源点向所有城市连边,权值为此城市书的价格的取反,

2017-09-21 14:25:02 337

原创 POJ 3415 Common Substrings 后缀数组

题目:http://poj.org/problem?id=3415题意:给定两个字符串,求这两个字符串中长度大于等于k的公共子串的数量思路:不得不说,这题我不会,看的别人的,心累。。。看这篇http://www.cnblogs.com/luxiaoming/p/5270984.html#include <iostream>#include <cstdio>#include <cstring>#

2017-09-20 23:00:56 407

原创 51Nod 1292 字符串中的最大值 V2 后缀数组 + 单调栈

题目:https://vjudge.net/problem/51Nod-1292题意:有一个字符串T。字符串S的F函数值可以如下计算:F(S) = L * S在T中出现的次数(L为字符串S的长度)。求所有T的子串S中,函数F(S)的最大值。 Input 输入字符串T, (1 <= L <= 1000000, L为T的长度),T中的所有字符均为小写英文字母。 Output 输出T的所有子串中长

2017-09-20 15:17:41 363

原创 poj3450 Corporate Identity kmp || 后缀数组

题目:http://poj.org/problem?id=3450题意:给定n个字符串,求这n个字符串的最长公共子串思路:比较优的解法是枚举答案,然后用kmp或者strstr函数去判定枚举的子串是否是剩余所有字符串的子串。用后缀数组也可以,但是比较慢 kmp:#include <iostream>#include <cstdio>#include <cstring>#include <alg

2017-09-20 12:58:18 412

原创 hdu1403 && poj 2774 最长公共子串 后缀数组

题目:http://poj.org/problem?id=2774 http://acm.hdu.edu.cn/showproblem.php?pid=1403题意:给定两个长度均不超过100000100000的字符串,求两个字符串的最长公共子串思路:后缀数组的简单应用。把两个字符串拼接起来,中间用一个特殊字符隔开,求出后缀数组的height数组后,找出起点分别在特殊字符的两侧的两个大小相邻后缀,

2017-09-19 20:54:16 400

原创 hdu3987 Harry Potter and the Forbidden Forest 最小割边数

题目:http://acm.hdu.edu.cn/showproblem.php?pid=3987题意:给一个网络,边有有向边和无向边两种,挑选一些边破坏,使得从0无法到达n-1,每条边都有一个破环的成本,求在成本最低的情况下需要破坏的最少边数思路:明显最小成本就是最小割,求边数的话,扩大边权然后取余即可#include <bits/stdc++.h>using namespace std;type

2017-09-18 14:26:11 478

原创 hdu6214 Smallest Minimum Cut 最小割边数

题目:http://acm.hdu.edu.cn/showproblem.php?pid=6214题意:给定一个网络,给出源点和汇点,求最小割的最少边数思路:对于每个边容量cc,扩大为c∗(m+1)+1c * (m+1) + 1,mm是边数,求出最大流后,取余(m+1)(m+1)就是答案#include <bits/stdc++.h>using namespace std;const int N =

2017-09-18 13:53:21 433

原创 hdu6215 Brute Force Sorting 链表模拟

题目:http://acm.hdu.edu.cn/showproblem.php?pid=6215题意:给定一个长度为n的数组,满足以下条件a[i]是有序的:要么a[i]是第一个数字,要么a[i-1] <= a[i]要么a[i]是最后一个数字,要么a[i] <= a[i+1] 不满足以上两个条件的a[i]是无序的。现在把数组的无序数字删除,剩余的数字按顺序合并,重复这个操作,直到所有数字都有序

2017-09-17 22:19:50 357

原创 poj1463 Strategic game 树形dp

题目:http://poj.org/problem?id=1463题意:给定一个有nn个点的树结构,从中选取一些点,使得任意一条边都有端点在选取的点集中,即求树形的最小点覆盖思路:定义dp[i][0]dp[i][0]为不选取i时覆盖以ii为根的子树上的所有边时选取的最小点集,dp[i][1]dp[i][1]为选取i时覆盖以ii为根的子树上的所有边时选取的最小点集,设jj为ii的子节点,那么显然有

2017-09-16 22:39:21 267

原创 hdu1520 Anniversary party 树形dp

题目:http://acm.hdu.edu.cn/showproblem.php?pid=1520题意:大学里有n个员工,除了校长外每个人都有一个直属上级,每个人都有一个欢乐度,现在要求,对于任意一个人,和他的直属上级,只能有一个人到场,求到场的人的最大欢乐度思路:树形dpdp入门。可以发现所有的人的关系是树结构,定义dp[i][0]dp[i][0]为以ii为根的子树在i不到场时取得的最大欢乐度,d

2017-09-16 21:39:00 201

原创 hdu3652 B-number 数位dp

题目:http://acm.hdu.edu.cn/showproblem.php?pid=3652题意:给出一个数n,求从1到n范围内的数字含有子串13且能被13整除的个数思路:数位dp,再加一维取模的状态,我对动态规划好迷啊。。。#include <bits/stdc++.h>using namespace std;const int N = 50 + 10;int dp[N][13][2][2]

2017-09-15 19:21:28 221

原创 bzoj1026: [SCOI2009]windy数 数位dp

题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1026题意:Description windy定义了一种windy数。不含前导零且相邻两个数字之差至少为2的正整数被称为windy数。 windy想知道, 在A和B之间,包括A和B,总共有多少个windy数?Input 包含两个整数,A B。Output 一个整数思路:数位dp,记忆化搜索

2017-09-15 16:48:02 469

原创 HDU2089 不要62 数位dp

题目:http://acm.hdu.edu.cn/showproblem.php?pid=2089题意:Problem Description 杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer)。 杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除个别的士司机和乘客的心理障碍,更安全地服务大众。 不吉利的数字为所有含有4或62

2017-09-14 21:16:54 219

原创 HDU5963 朋友 博弈

题目:http://acm.hdu.edu.cn/showproblem.php?pid=5963题意:Problem Description B君在围观一群男生和一群女生玩游戏,具体来说游戏是这样的: 给出一棵n个节点的树,这棵树的每条边有一个权值,这个权值只可能是0或1。 在一局游戏开始时,会确定一个节点作为根。接下来从女生开始,双方轮流进行 操作。 当一方操作时,他们需要先选择一个不为根

2017-09-14 20:22:57 322

原创 HDU 3555 Bomb 数位dp

题目:http://acm.hdu.edu.cn/showproblem.php?pid=3555题意:多组测试数据,每次一个nn,问11到nn范围内子串中有4949的数字的个数思路:简单数位dpdp?个人觉得数位dpdp其实就是个记忆化搜索,第一次写,看了一下别人代码,有不同的写法//300+ms#include <bits/stdc++.h>using namespace std;typede

2017-09-14 16:58:07 211

原创 基数排序

题目:https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=1124题意:Description已知数组a中有m个按升序序排列的元素,数组b中有n个降序排列的元素,编程将a与b中的所有元素按降序存入数组c中。Input输入有两行,第一行首先是一个正整数m,然后是m个整数;第二行首先是一个正整数n,然后是n个整数,m, n均小于等于1000000。Outpu

2017-09-13 18:07:42 969

原创 计数排序

题目:https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=1124题意:Description已知数组a中有m个按升序序排列的元素,数组b中有n个降序排列的元素,编程将a与b中的所有元素按降序存入数组c中。Input输入有两行,第一行首先是一个正整数m,然后是m个整数;第二行首先是一个正整数n,然后是n个整数,m, n均小于等于1000000。Outpu

2017-09-13 14:34:48 298

原创 SPOJ QTREE3 Query on a tree again! 树链剖分

题目:https://vjudge.net/problem/SPOJ-QTREE3题意:给定一棵树,初始树上的每个点都为白色,有以下操作:0 i:0\ i:把第i个点的颜色取反,白变黑,黑变白1 v:1\ v:求从点1到点v的路径上第一个颜色为黑的点思路:树链剖分,每次优先查询左子区间,再查询右子区间。因为一定是从vv往11走,最后一个查询到的值才是答案,所以查到一个值就更新一下答案#incl

2017-09-12 14:26:46 555

原创 SPOJ QTREE2 Query on a tree II 倍增lca

题目:https://vjudge.net/problem/SPOJ-QTREE2题意:给定一个树,有边权,有以下操作:DIST a b:DIST\ a\ b:求aa到bb的距离KTH a b k:KTH\ a\ b\ k:求从aa到bb路径上的第kk个节点,aa是第一个以DONEDONE作为查询结束标志思路:第一个操作,任意一个lcalca算法都可以求出来,考虑第二种操作,最简单的方法是一步

2017-09-12 10:54:48 303

原创 bzoj 1036 [ZJOI2008]树的统计Count 点权lct

题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1036题意:Description  一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w。我们将以下面的形式来要求你对这棵树完成 一些操作: I. CHANGE u t : 把结点u的权值改为t II. QMAX u v: 询问从点u到点v的路径上的节点的最大权值 I II. QSU

2017-09-11 20:37:58 217

原创 HDU 4010 Query on The Trees 点权LCT

题目:http://acm.hdu.edu.cn/showproblem.php?pid=4010题意:给定一个有nn个点的树,有以下四种操作:1 x y:1\ x\ y: 如果x yx\ y不在同一棵树上,那么在它们中间新建一条边,把他们连接起来,否则操作非法2 x y:2\ x\ y:如果x yx\ y在同一棵树上,那么把xx替换为树根并且把yy和yy的父亲之间的边删掉,否则操作非法3 w

2017-09-11 14:44:23 321

原创 SPOJ QTREE Query on a tree 边权LCT

题目:https://vjudge.net/problem/SPOJ-QTREE题意:给定一棵有n个点的树,有以下两种操作:CHANGE i ti: CHANGE\ i\ t_i:把第i条边的权值改为tit_iQUERY a b:QUERY\ a\ b : 查询abab之间的最大边权值思路:把边看做一个新点,从边的两个端点像这个新点连边,然后就跟点权一样了#include <bits/stdc

2017-09-10 20:08:09 374

原创 bzoj 2002 [Hnoi2010]Bounce 弹飞绵羊 LCT

题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2002题意:Description 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏。游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置,每个装置设定初始弹力系数ki,当绵羊达到第i个装置时,它会往后弹ki步,达到第i+ki个装置

2017-09-08 22:28:14 235

原创 LCT知识点

skydec的教导:把树的边划分成轻重边,每个用重边连起来的连通块用一个splay维护,关键字是深度,由于每个点最多只有一个重儿子,所以这个连通块肯定是链,所以这个splay的根的父亲记录的是链的顶端的父亲,要查询这个点到根的信息时,把这个点到根的所有splay合并,然后在splay查询,换根相当于把新根到旧根的路径翻转一下(节点深度的变化)–来自hzwer一位oi爷的总结,写的很详细,某些函数的

2017-09-08 22:04:09 476

原创 bzoj 2049 [Sdoi2008]Cave 洞穴勘测 LCT

题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2049题意:Description 辉辉热衷于洞穴勘测。某天,他按照地图来到了一片被标记为JSZX的洞穴群地区。经过初步勘测,辉辉发现这片区域由n个洞穴(分别编号为1到n)以及若干通道组成,并且每条通道连接了恰好两个洞穴。假如两个洞穴可以通过一条或者多条通道按一定顺序连接起来,那么这两个洞穴就是

2017-09-08 21:51:38 282

原创 伸展树模板

给定一个数n,代表有一个数列1~n,有下面两种操作: CUT a b c 把区间[a,b]这一段元素切下来接到第c个元素的后面 FLIP a b 反转区间[a,b]//其中有一些与本题无关的代码#define key_val son[son[root][1]][0] //splay操作序列时经常用到的一个值typedef long long ll;const int N = 300010

2017-09-05 21:50:29 430 2

原创 bzoj 2733 永无乡 线段树启发式合并

题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2733题意:Description 永无乡包含 n 座岛,编号从 1 到 n,每座岛都有自己的独一无二的重要度,按照重要度可 以将这 n 座岛排名,名次用 1 到 n 来表示。某些岛之间由巨大的桥连接,通过桥可以从一个岛 到达另一个岛。如果从岛 a 出发经过若干座(含 0 座)桥可以到达岛 b,

2017-09-04 18:53:10 455

原创 POJ 2887 Big String 线段树离线

题目:http://poj.org/problem?id=2887题意:初始给定一个字符串,然后有两种操作:I ch pI\ ch\ p在第pp个字符前插入字符chch;Q pQ\ p查询第pp个位置上的字符。下标均是从11开始思路:线段树离线操作,脑洞大开#include <bits/stdc++.h>using namespace std;const int N = 1000000 + 10,

2017-09-04 13:08:18 355

原创 bitset总结

bitset<n> b //尖括号内是长度,默认构造函数全部初始化为0下标从0开始,因此下标是从0到n-1。以0位开始的位串是低阶位,以n-1位结束的位串是高阶位bitset<n> b; //b有n位,每位都为0bitset<n> b(u); //b是unsigned long型u的一个副本,不足补0bitset<n> b(s); //b是string对象s中含有的位串的副本,不足补0,注意从

2017-09-03 10:42:38 390

原创 bzoj 3674 可持久化并查集加强版

题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3674题意:Description: 自从zkysb出了可持久化并查集后…… hzwer:乱写能AC,暴力踩标程 KuribohG:我不路径压缩就过了! ndsf:暴力就可以轻松虐! zky:……n个集合 m个操作 操作: 1 a b 合并a,b所在集合 2 k 回到第k次操作之后

2017-09-02 20:25:04 268

原创 bzoj 3673可持久化并查集 by zky

题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3673题意:n个集合 m个操作 操作: 1 a b 合并a,b所在集合 2 k 回到第k次操作之后的状态(查询算作操作) 3 a b 询问a,b是否属于同一集合,是则输出1否则输出00思路:可持久化并查集模板题//并查集实质是一个数组,可持久化并查集就是一个可持久化数组,可以用可持久化线段

2017-09-02 20:08:54 302

原创 HDU 6191 Query on A Tree 可持久化trie + dfs建树 || 启发式合并trie

题目:http://acm.hdu.edu.cn/showproblem.php?pid=6191题意:给出一棵树,树上每个点有点权,每次询问给出u x,求以u为根的子树中点权和x异或得到的最大值思路:dfs序建可持久化trie,然后就和普通可持久化trie一样了。还有启发式合并做法,一会学一下#include <bits/stdc++.h>using namespace std;const int

2017-09-02 13:28:41 379

原创 HDU 4757 Tree 可持久化trie+lca

题目:http://acm.hdu.edu.cn/showproblem.php?pid=4757题意:给出一棵树,树上的点都有权值,每次给出一组询问x y zx\ y\ z,求从xx到yy路径上的点权值和zz异或得到的最大值思路:可持久化trietrie,在其父节点的基础上更新trietrie。查询的时候,先查询x yx\ y的lcalca,然后查询xx到lcalca路径上点权值和zz异或的最大值

2017-09-02 11:37:53 391

原创 可持久化线段树模板

区间第k小:const int N = 100000 + 10, INF = 0x3f3f3f3f;int lson[N*20], rson[N*20], sum[N*20];int root[N];int tot;int a[N], b[N];void build(int l, int r, int &x){ x = ++tot; sum[x] = 0; if(l

2017-09-01 19:06:06 407

原创 线段树模板

线段树区间更新://0 x y v: [x,y]内元素都加上v//1 x y: [x,y]内元素的和typedef long long ll;const int N = 100010;struct node{ int l, r; ll val, mark;}tr[N*4];int cas = 0;void push_up(int k){ tr[k].val

2017-08-31 20:58:52 264

空空如也

空空如也

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

TA关注的人

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