自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

juruo? juruo!

青春从不辜负拼尽全力的你。

  • 博客(162)
  • 收藏
  • 关注

原创 luogu3381 【模板】最小费用最大流

题面在这里题意:给一个有向图,给定边上的容量和费用,给定源点汇点,求最大流和最小费用。做法:【模板】 具体不解释了(网上有很多资料,自己百度,有空再来科普qaq)。 有一个地方就是修改边的容量的时候,我原先写的都是+1-1的修改,不过洛谷上那道模板过不去的,所以要先找到一个最小的流量d然后每次+d-d,这样才能过。代码:#include#include

2018-01-23 00:32:20 210

原创 Codecraft-18 and Codeforces Round #458 (Div. 1 + Div. 2, combined)

比赛链接qaq这场比赛rating暴涨(小号)A. Perfect Squares题意:求最大的不是完全平方数的数。做法:直接从大到小排序即可。有一个很有趣的东西。。 就是这道题是有负数的,按理来讲是要判一下的因为负数没法sqrt。 但是我没判也可以过。。。 我后来发现cf的评测机好像sqrt一个负数会返回-2147483647,然后-21474836

2018-01-22 00:41:49 362

原创 AtCoder Regular Contest 089

比赛链接C - Traveling题意:有一个平面,初始时在(0,0)点。每次可以花一个时间走到上下左右四个方向。 现在给n个询问,每次询问t,x,y,表示在t时刻是否能到达(x,y)这个坐标。可以输出Yes,否则输出No。做法:发现只有两种情况是No:来不及了,时间小于距离。距离与时间的差值是奇数。代码:#include#includ

2018-01-22 00:05:34 284

原创 hackerrank Week of Code 34 Path Statistics

题面在这里题意:给一棵树,点上有点权,每次询问u,v,k,表示询问u-v路径上出现次数第k多的点权,如果次数一样则点权越小当做次数越多。做法:首先肯定要树上莫队。然后我们考虑怎么求出现次数的第k小。 发现我们要求的其实是一个二元组(次数,点权)的第k小。 于是可以考虑在这个序列上分块。 预处理出这个二元组排完序后的编号,然后分成根号块。 记录一个bsum[i]表

2018-01-20 22:17:46 288

原创 spojCOT2 Count on a tree II

题面在这里题意:给一棵树,每个点有点权。 m个询问,每次询问一对点u,v,问u-v这条链上有多少种不同的点权。做法:一眼看就是莫队。。 不过是树上的。扔一个博客:http://vfleaking.blog.163.com/blog/static/174807634201311011201627/ (我自己也没仔细看过但似乎比较好)首先将树分块。 分块的方法就

2018-01-20 17:36:54 307

原创 Codeforces Round #457 (Div. 2)

比赛链接这次还好unrated掉了qaq。。 否则我不是掉分掉到罗马尼亚去了= =A. Jamie and Alarm Snooze题意:一个时刻表示为ab:cd。(24小时制) 有一个单位时间x,每次可以把时间向前推x分钟。 假如某个时刻的表示ab:cd中abcd有一个=7,就是幸运的。 问最少向前推几个x分钟,可以使时刻变成幸运的。做法:简单模拟。

2018-01-20 15:00:22 402

原创 ural1297 Palindrome

题面在这里题意:求一个串最长的回文子串。做法:首先将原串和它的反串用一个没有出现过的字符拼接起来。 跑这个大串的sa。求出height。 在原串中枚举一个中心点x,要知道x往左右两边最多能扩展多少,这个相当于求原串和反串相应后缀的lcp。 于是就可以用height+rmq实现了。 注意要按照长度奇偶分开讨论。代码:/*************************

2018-01-18 18:57:02 207

原创 poj3415 Common Substrings

题面在这里题意:求两个字符串中长度不小于k的公共子串个数。做法:即求sigma(两个字符串的后缀的lcp-k+1|lcp>=k)。 首先用一个没有出现过的字符拼接两个串。跑出sa和height.两个后缀的lcp为在它们排名之间的height的最小值。 所以我们可以对于某一个height,求出它作为最小值的一个区间l[i],r[i],然后最后对于所有>=k的heigh

2018-01-18 17:35:30 264

原创 poj3261 Milk Patterns

题面在这里题意:在一个串中找出重复出现次数至少为k的最长子串的长度。做法:首先跑出sa。 然后二分答案x,只要找到连续的一段height[i]>=x,如果这段的长度大于等于k-1就可行。 注意是k-1不是k。 因为height计算的是两个相邻排名的后缀的lcp,如果有k个串的最长公共子串都>=x,则只要他们之间的height>=x即可,他们之间只有k-1个height

2018-01-18 13:56:32 211

原创 CC MONSTER Killing Monsters

题面在这里题意:游戏中初始时有n只怪兽排成一排,从左到右编号为0~n?1。第i只怪兽的初始血量为hi,当怪兽的血量小于等于0时,这只怪兽就挂了。 大厨要进行q次操作。每次操作中,大厨会选择两个整数x和y,并向下标k满足k&x=k的怪兽开炮(此处&代表按位与操作)。被炮弹打到的怪兽会掉y点血。 请告诉大厨,在他每次操作后,还有多少怪兽活着。做法:考虑分块。 把q次操作分

2018-01-18 12:35:18 511 2

原创 poj3294 Life Forms

题面在这里题意:给你n个串,找出最长的出现在超过n/2个串中的公共子串。做法:首先二分一个长度x,然后问题转化为如何检验是否存在超过n/2个串的公共子串长度为x。 对于公共子串这个问题,马上想到后缀数组,因为height[]数组就可以巧妙地解决这个问题。 首先把所有串用一些不同的没有出现过的字符连接起来。跑这个大串的sa。 把所有后缀按照height分组,把heigh

2018-01-18 11:15:26 257

原创 bzoj1834: [ZJOI2010]network 网络扩容

题面在这里题意:给定一张有向图,每条边都有一个容量C和一个扩容费用W。这里扩容费用是指将容量扩大1所需的费用。求: 1. 在不扩容的情况下,1到N的最大流; 2. 将1到N的最大流增加K所需的最小扩容费用。做法:第一问是裸的最大流。 第二问考虑在第一问的残量网络上继续建图。 在原来每条边的基础上建一条容量为inf,费用为这条边的扩容费用的边。 然后再新建一个源

2018-01-17 23:13:44 307

原创 bzoj1066: [SCOI2007]蜥蜴

题面在这里题意:一个n*m的网格中,有一些格子有石柱,石柱的高度为1~3. 有一些石柱的顶上有蜥蜴,蜥蜴每次可以跳到距离不超过d的石柱上,或者跳到界外。 蜥蜴跳一次,它所在的石柱的高度就减一,如果某个石柱的高度为0了,石柱就消失,以后蜥蜴不能跳到这里。 现在要使得剩下无法逃脱的蜥蜴数最少。做法:总是自己想不到建图方式然后看了题解顿时恍然大悟的感觉= = 好吧这题我还是想

2018-01-17 18:52:04 234

原创 bzoj1934: [Shoi2007]Vote 善意的投票

题面在这里题意:有n个小朋友投票,1表示赞成0表示不赞成。有m对朋友关系。 现在给定n个小朋友的本来意愿。 定义冲突数为和自己本来意愿不同的投票数量,加上投不同票的朋友对数。 求最小的冲突数。做法:这道题一眼看就是网络流最小割。 然后想了很长时间没想出怎么建图qaq。。看来是要加强练习了呜呜对于每一个小朋友x,本来是1的连S->x,本来是0的连x->T。 每一

2018-01-17 15:44:15 242

原创 bzoj2321: [BeiJing2011集训]星器

题面在这里题意:有一个n*m的方格,每一格有a[i,j]个星。 现在每次可以取同一行或同一列的两颗星,让他们向中心移动一格,并且获得他们中间隔的区域数个能量。 给定最终状态,问最多可能获得的能量。做法:首先“最多”这个东西是来忽悠你的。 发现获得的能量是一定的。行列独立。 然后我们来推一波式子。 假设有一行是这样的: 1 0 0 0 0 … 0 0 1 最左边

2018-01-17 14:30:57 351

原创 bzoj1085: [SCOI2005]骑士精神

题面在这里题意:有一个5*5的01阵,有一个位子是空用*表示。每个0或1都可以走马步到空格子。 现在给一个初始的矩阵,要变成下面这个状态。 11111 01111 00*11 00001 00000 问最少的步数。若超过15步则输出-1.做法:一开始打了一个状压bfs。然后光荣地没跑过样例= = 正解是A*。观察到有一个条件叫做超过15步就输出-1,于是我们

2018-01-17 13:33:18 245

原创 bzoj3109: [cqoi2013]新数独

题面在这里题意:给一个空的数独,告诉你每个9宫格内相邻格子数的大小关系,求这个数独。做法:搜索+剪枝。 剪枝就是最显然的剪枝,碰到不符合条件的就不搜下去。易错点:cmp函数返回的是1和-1,我原来定义了bool,然后就gg了。代码:/********************************************************

2018-01-17 12:23:25 397

原创 Educational Codeforces Round 36

比赛链接小号打了一场E round,被连hack两道= =A. Garden题意:给n个数和一个m,问n个数中能整除m的并且商最小的那个商是多少。做法:傻逼题。代码:#include#include#include#include#include#include#includeusing namespace std;const

2018-01-16 12:45:18 395

原创 codeforces724G - Xor-matic Number of the Graph

题意:一个无向图,边上有边权。定义一条路的价值为这条路径上边权的异或和,两个点之间的价值为它们所有路径不同价值的和,整个图的价值为所有点对价值的和。 求整个图的价值。做法:首先考虑对于树的做法:记点i到根路径的异或和为f[i],则点对u,v路径的异或和就是f[u]^f[v]. n^2做法就直接枚举任意两点。 考虑“异或”的套路:由于每一位互不干扰,我们可以按位处理。 对

2018-01-15 14:03:38 300

原创 poj2774 Long Long Message

题面在这里题意:求两个长串的最长公共子串。做法:将两个串拼接起来,中间用一个没有出现过的字符连接。 于是两个字符串的最长公共子串就是这个长串两个后缀的lcp,其中这两个后缀的起点分别在两个串里。 所以跑这个长串的SA就可以了。代码:/*************************************************************

2018-01-13 17:34:54 186

原创 poj1743 Musical Theme

题面在这里题意:求n个数相邻两数差组成的数列中,两段不重叠的最长相同子串。做法:首先二分一个答案x,然后将SA[]分组,每一个height[i]>=x连续区间的SA[i]都分为一组。 对于每一个连续区间,这个区间任意两个后缀的lcp都>=x,所以我们找到最大和最小的SA[i],看是否能符合条件即可。代码最下面有一个博客链接,讲得挺详细,初学者可以看一看。 另外还有一

2018-01-13 16:35:28 227

原创 poj3691 DNA repair

题面在这里题意:给你N (1 ≤ N ≤ 50)个只由“A”,“G”,“C”,“T”四个字母组成的病毒串(len给你一个文本串(len做法:ac自动机+dp。 将病毒串建立ac自动机,题目要求的即是文本串不能经过任何ac自动机上的单词节点。 f[i][j]表示第i个节点,当前在文本串第j位,最少改变多少个字符。 枚举下一位是什么字母转移。 可以用记搜实现。

2018-01-13 15:01:34 342

原创 牛客练习赛10 C-最长回文

题面在这里题意:有两个长度均为n的字符串A和B。可以从A中选一个可以为空的子串A[l1..r1],B中选一个可以为空的子串B[l2..r2],满足r1=l2,然后把它们拼起来(A[l1..r1]+B[l2..r2]) 求这样得到的最长回文串长度。做法:(ps.这题被scx大佬秒了%%%)首先,一个串中找一个最长回文子串可以用SA来做,你把这个串正反拼接一下,然后枚举中

2018-01-13 01:15:37 496

原创 bzoj1050: [HAOI2006]旅行comf

题面在这里题意:给一个图,每条边有边权。 给一个s和t,如果s和t之间没有路径输出IMPOSSIBLE,否则输出路径上最大边和最小边的比值的最小值。做法:你把边从小到大排序。那么对于一个最小值x,我们从x开始从小到大加边,并查集维护,直到s和t联通,那条最后一条边权比上x就是这个答案。 于是我们暴力枚举最小边是什么,每次更新答案即可。代码:/**********

2018-01-12 22:07:30 207

原创 hdu2896 病毒侵袭

题面在这里题意:给n个模式串和m个文本串,问有几个文本串包含任意一个模式串,并且输出每个包含任意模式串的文本串,包含的是哪几个模式串。做法:ac自动机模板。 整天模板题做做还有什么希望(大雾)模板居然调了一个小时代码:/************************************************************* Probl

2018-01-12 00:16:26 267

原创 SPOJ - SUBST1 New Distinct Substrings

题面在这里题意:给一个字符串,统计字符串中不重复的子串个数。做法:后缀数组模板题。 观察到每一个子串都是一个后缀的前缀,重复的前缀就是sigma(h[i]),第i小的和第i-1小的后缀的lcp。 于是我们把ans减去sigma(h[i])就好了。代码:#include#include#include#include#include#includ

2018-01-11 17:03:49 258

原创 uva11468 Substring

题面在这里题意:给一些模式串。 再给n个字符和它们出现的概率,问用这些字符随机构造一个长为L的字符串,不包含任意一个模式串的概率是多少。做法:用模式串建ac自动机。 然后问题相当于从字典树的根开始跑,不经过任意一个单词结尾的节点跑L步的概率。 我们把单词结尾的节点打标记。假如一个点对应的fail节点也打了标记,它也要打上标记,因为以这个节点为结尾的后缀在模式串中出现过

2018-01-11 15:59:18 335

原创 luogu3377【模板】左偏树(可并堆)

题面在这里题意:操作1: 1 x y 将第x个数和第y个数所在的小根堆合并(若第x或第y个数已经被删除或第x和第y个数在用一个堆内,则无视此操作)操作2: 2 x 输出第x个数所在的堆最小数,并将其删除(若第x个数已经被删除,则输出-1并无视删除操作)做法:左偏树模板。代码:/***************************************

2018-01-11 13:26:11 302

原创 uva10679 I Love Strings!!

题面在这里题意:给你一个文本串和若干模式串,问每个模式串是否在文本串中出现过。做法:AC自动机模板题。对于重复的串的处理,可以在每个节点处挂一个链表记录模式串的编号。代码:#include#include#include#include#include#include#include#includeusing namespace std;

2018-01-11 09:31:47 254

原创 bzoj3083: 遥远的国度

题面在这里题意:给一棵树,每个点上有点权。 三种操作: 1.换根 2.链覆盖 3.以当前的根查询某子树内的最小值做法:当然不用真的去换根= = 可以直接令任意一点为根,比如1。 发现一条链是不会发生改变的,于是链覆盖操作可以直接树剖+线段树修改。 对于查询操作,我们分类讨论。 1.假如当前根和x相同,就直接取整棵树的最小值。 2.假如当前根在x的子树(以1

2018-01-10 14:58:39 323

原创 codeforces3B - Lorry

题面在这里题意:有一些物品,体积为1或2,每个物品有一个价值。 现在总共只能放体积为m的物品,问最大的价值。做法:显然是贪心。 先说两个正常一点的策略。 1.你先能取多少2就取多少2,然后再把一些价值大一些的1两个一组和2换。 2.直接枚举取多少个2计算一下。然后来说我的策略QAQ。 首先按照单位价值排序,即你把体积为1的价值×2,然后按照新的价值排序。 然

2018-01-10 11:35:21 298

原创 bzoj1833: [ZJOI2010]count 数字计数

题意:给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次。做法:显然是数位DP,我来写个dfs题解吧首先区间[a,b]内的数量可转化为[1,b]-[1,a-1]。考虑求一个数码出现的次数,比如1出现的次数。我们首先想爆搜怎么写,然后加一个记忆化即可。对于一个长度为len的数,从高位到低位枚举它每一位上的数字,然后计算1出现的次数。哪些东西要

2018-01-09 22:45:37 329

原创 bzoj4012: [HNOI2015]开店

题面在这里题意:给一棵树,每个点上有点权,边上有边权。 每次询问一个u,l,r,输出点权在[l,r]范围内的点到u的距离和。 强制在线。做法:考虑一棵树上所有点到一个点的距离和怎么求。 不难发现应该等于所有点的深度和+点数×u的深度-2×所有点与u的lca的深度和。 于是问题就在于求所有点与u的lca的深度和。 对于这个问题,我们可以先把每个点到根的路径都打标记,

2018-01-08 19:23:24 291

原创 bzoj3123: [Sdoi2013]森林

题面在这里题意:给一个森林,森林有n个节点m条边。 现在有两种操作: 1.Q x y k 表示询问x-y这条链上点权的第k小。保证x,y在同一个连通块里。 2.L x y 表示链接x,y两点。保证x,y在不同的连通块里。 要求强制在线,last表示上一次的答案,每次x,y,k都要异或last.初始为0.做法:权值第k小想到主席树。(发现和上一题基本一样除了连接两个点

2018-01-08 15:06:46 383

原创 loj#6208. 树上询问

题面在这里题意:给一棵树,三种操作: 1.add(x,d),给x到根路径上的点的ki += d 2.mul(x,d),给x到根路径上的点的ti += ki*d 3.询问一个点的ti值做法:树链剖分以后就变成一道线段树好题了qaq 我们考虑在线段树里维护一个tag(a,b,c),ti值即为a*b+c。 这里的a相当于ki。 对于2操作,我们直接b+=d就可以。

2018-01-07 22:51:20 552

原创 hdu5381 The sum of gcd

题面在这里题意:给一个序列,然后m次询问。 每次询问一个区间[l,r]中所有子区间的gcd之和。做法:这个题是nowcoder的比赛题,Wannafly挑战赛7的E。 (然后被人找到了原题qaq。。 (一开始不会,从某个大佬口中一点点套出来的= =(果然大佬讲题都讲得飞快啊…我们考虑把询问离线。 对于每一个右端点,维护它左端点的答案。 于是我们从左往右枚举i,

2018-01-06 19:22:02 328

原创 bzoj1012: [JSOI2008]最大数maxnumber

题面在这里题意:给一个初始为空的序列,两种操作 1、 查询操作。语法:Q L 功能:查询当前数列中末尾L 个数中的最大的数,并输出这个数的值。限制:L不超过当前数列的长度。 2、 插入操作。语法:A n 功能:将n加 上t,其中t是最近一次查询操作的答案(如果还未执行过查询操作,则t=0),并将所得结果对一个固定的常数D取 模,将所得答案插入到数列的末尾。做法:裸

2018-01-06 12:49:12 260

原创 bzoj1821: [JSOI2010]Group 部落划分 Group

题面在这里题意:平面上n个点要划分为k个部落,定义部落间的距离为部落中最近的两点距离。 现在要求部落间最近的距离最远。求这个距离。做法:显然可以二分答案。 二分这个最近的距离,于是任意两点距离比它还小的都要在一个部落里。 然后用并查集数一下连通块个数即可。 时间复杂度O(n2×log)O(n^2\times{log})代码:/**************

2018-01-05 16:41:20 248

原创 bzoj3038: 上帝造题的七分钟2

题面在这里题意:给一个序列,两种操作: 1. 区间开平方(下取整) 2. 区间求和做法:有一个性质就是,一个数不停开平方最多开log次就会变成1. 所以我们可以对区间保存一个tag表示这个区间有没有不是0或1的数,如果区间全是0或1就不用往下更新。 然后大概就可以log^2了吧qaqaq。易错点:注意开long long。我原来a[]没开long lon

2018-01-05 16:15:20 351

原创 bzoj1295: [SCOI2009]最长距离

题面在这里题意:给一个n*m地图,有的格子有障碍。只能上下左右走。假如两个格子能够互相到达,那么他们的距离为它们的欧几里得距离。 问你拿掉最多k个障碍,最大的两点间距离时多少。n,m做法:发现n和m很小。 于是我们考虑暴力枚举一个点,从这个点spfa求出到所有点的最少要拿掉的障碍数,然后暴力判断每个点是否满足要求,满足即可更新答案。代码:/***********

2018-01-05 15:09:36 246

空空如也

空空如也

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

TA关注的人

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