08 2018 档案

摘要:传送门 分析 考场上看错了第一个条件,于是觉得是个简单贪心,随便取了每一个点的最大收益然后算了一下,就得了40pts...看来读对题很重要呀qwq。实际的正解是这样的:我们将每一个i与f[i]连一条边,这样就构造出了一个基环内向树。我们记录到达每一个点的最大收益与次大收益,而对于每一个点我们均可以先 阅读全文
posted @ 2018-08-29 23:21 水题收割者 阅读(177) 评论(0) 推荐(0)
摘要:传送门 分析 在考场上我通过画图发现了对于n个点肯定用一个六边形围起来最优(假装四边形是特殊的六边形),我们发现可以将这个六边形分成两个梯形(梯形的高可以为0),然后我们便枚举两个梯形共同的底边和它们分别的高。代码如下: 通过这个代码我们可以打出一张表,大致如下: 68 9 10 11 12 121 阅读全文
posted @ 2018-08-28 23:51 水题收割者 阅读(152) 评论(0) 推荐(0)
摘要:传送门 分析 我们发现如果在某个人取完之后还剩k+1个石子,则这个人必胜。所以我们可以将n个石子转化为n-k-1个,然后不断递归的转化下去。最后我们可以得到对于n个石子的胜负只与谁先取到n%(k+1)个石子有关。所以如果这个值为0则2胜,否则1胜。 代码 阅读全文
posted @ 2018-08-25 17:13 水题收割者 阅读(165) 评论(0) 推荐(0)
摘要:传送门 分析 因为所有数均小于1e9,所以只需要开根几次就会变成1。因此我们只需要维护区间和以及这个区间是否全部小于等于1即可,每一次暴力修改区间内的还不是1或0的数即可。 代码 阅读全文
posted @ 2018-08-25 15:55 水题收割者 阅读(122) 评论(0) 推荐(0)
摘要:传送门 分析 我们知道对于一个割点,我们如果去掉它就会使原来的图被分为若干块,则这是我们将所有块包含的点的个数两两相乘即可,而如果不是割点则对于图的连通性没有影响。注意在最后要加上2*(n-1)表示去掉的那个点对答案产生的贡献。 代码 阅读全文
posted @ 2018-08-24 19:20 水题收割者 阅读(273) 评论(0) 推荐(0)
摘要:传送门 分析 首先我们知道如果在一棵树上加一条边一定会构成一个环,而删掉环上任意一条边都不改变连通性。我们把这一性质扩展到这个题上不难发现如果一条树边不在任意一个新边构成的环里则删掉这条边之后可以删掉任意一条新边,对方案数的贡献是m。而如果它只在一个新边构成的环中则要删除这条边和对应的新边,对方案数 阅读全文
posted @ 2018-08-24 14:05 水题收割者 阅读(486) 评论(0) 推荐(0)
摘要:传送门 分析 一道喜闻乐见的求桥的板子题。 代码 阅读全文
posted @ 2018-08-24 08:17 水题收割者 阅读(256) 评论(0) 推荐(0)
摘要:这个题目描述好难理解呀qwq... 传送门 分析 在读懂题之后我们不难发现这道题实际就是在求一张图中有多少个割点。只需要注意读入方式即可。 代码 阅读全文
posted @ 2018-08-23 21:04 水题收割者 阅读(199) 评论(0) 推荐(0)
摘要:一、边双连通分量 定义 若一个无向图中的去掉任意一条边都不会改变此图的连通性,即不存在桥,则称作边双连通图。一个无向图中的每一个极大边双连通子图称作此无向图的边双连通分量。 实际求法和强连通分量差不多,只是要注意由于一条无向边被分为两条有向边存储,所以在经过其中一条从u到达v之后不能再通过另一条边由 阅读全文
posted @ 2018-08-23 20:01 水题收割者 阅读(169) 评论(0) 推荐(0)
摘要:传送门 分析 第一问我们不难想出是缩点之后的新图中入度为0的点的个数,对于第二问,我们画一画可以发现最优策略就是对于每一个入度为0的点都有一个出度为0的点连向它,而对于每一个出度为0的点也一定连向一个入度为0的点。所以最终答案即为出度为0的点和入度为0的点的最大值。注意特判缩点后只有一个点的情况。 阅读全文
posted @ 2018-08-23 19:30 水题收割者 阅读(293) 评论(0) 推荐(0)
摘要:传送门 分析 我们发现可以将这张图转换为一个联通块来处理。我们求出所有的割点。在求完之后我们我们对于每一个点双连通分量如果它没有割点相连则需要布置两个出口,因为可能有一个出口正好被割掉。而如果有一个割点我们只需要布置一个出口就行了,因为如果割掉割点可以从出口出去而如果割掉出口便可以通过割点到别的联通 阅读全文
posted @ 2018-08-23 17:23 水题收割者 阅读(186) 评论(0) 推荐(0)
摘要:传送门 分析 此题要先用tarjan求点双联通分量,注意在求解是要注意一条无向边只能走一次。求完之后我们发现原来的图会变成一棵树,对于 这棵树我们发现答案是(叶子节点数量+1)/2,实际便是每两个节点之间连一条边。 代码 阅读全文
posted @ 2018-08-23 09:57 水题收割者 阅读(187) 评论(0) 推荐(0)
摘要:传送门 分析 一道简单的树型dp,我们用dp[i][j]记录考虑到第i个点,保留了j个树枝的最多苹果数,然后dfs求解即可。 代码 阅读全文
posted @ 2018-08-22 20:42 水题收割者 阅读(137) 评论(0) 推荐(0)
摘要:传送门 分析 我们设pre[i]为到第i个时段的雇佣员工的总数量,sum[i]表示时段i的可雇佣员工的总数量,r[i]表示时段i所需工人的数量。由此我们不难求出: 0<=pre[i]-pre[i-1]<=sum[i] pre[i]-pre[i-8]>=r[i],i∈[8,24] pre[i-8+24 阅读全文
posted @ 2018-08-22 19:01 水题收割者 阅读(314) 评论(1) 推荐(0)
摘要:传送门 分析 我们知道对于一个不等式a<b可以将其转化为a+1<=b的形式,在知道这个之后我们便可以将5个关系进行差分约束了,具体的建边方式见代码。注意由于每个人都必须有糖,我们把每个人的初值都赋为1并全部入队。 代码 阅读全文
posted @ 2018-08-22 10:36 水题收割者 阅读(154) 评论(0) 推荐(0)
摘要:传送门 分析 我们发现这两类关系可以写成b-a<=L和b-a>=D两种形式,所以我们可以得到这两种的连边策略分别是a向b连一条权值为L的边和b向a连一条权值为-D的边。然后我们跑最短路即可。注意要单独判一下负环。 代码 阅读全文
posted @ 2018-08-21 22:02 水题收割者 阅读(180) 评论(0) 推荐(0)
摘要:传送门 分析 我们设S[i]表示到第i个数为止一共有多少个数在集合Z之中,最终答案就是S[max]-S[min]的最小值。所以我们不难发现对于每一个[ai,bi]都表示S[bi]-S[ai-1]>=ci,而我们又知道0<=S[i]-S[i-1]<=1,所以建图策略便是每一个ai向bi连一条权值为ci 阅读全文
posted @ 2018-08-21 19:33 水题收割者 阅读(119) 评论(0) 推荐(0)
摘要:定义:如果一个系统由n个变量和m个约束条件组成,形成m个形如ai-aj≤k的不等式(i,j∈[1,n],k为常数),则称其为差分约束系统。 我们知道差分约束系统是借助于最短路实现的,那我们在知道了定义之后就来看一下如何将几个不等式放到图上。 假设我们有一个不等式a-b<=c,那我们可以将它变为a<= 阅读全文
posted @ 2018-08-21 19:24 水题收割者 阅读(104) 评论(0) 推荐(0)
摘要:传送门 分析 通过小学数学我们可以知道对于k个数,我们取它们的中位数x时可以使答案最优。所以我们枚举每一个连续的长度为k的区间,用treap维护,求出所有数都变成x的花费。注意在这里treap还需要记录它的子树的值的和以便最后计算答案的时候使用。具体实现见代码。记得开long long。 代码 阅读全文
posted @ 2018-08-20 17:06 水题收割者 阅读(199) 评论(0) 推荐(0)
摘要:传送门 分析 我看到这个题的第一反应使用莫队水过去,于是我考虑建立一棵权值线段树,每一次从里面插入或删除一个数,然后查询,但是复杂度是O(n√nlogn),明显不行。由于这是在一个区间查询数量,所以可以考虑用主席树来维护。建树过程不必说了,查询过程我们是在查询是不是有一个点的值大于k,所以我们每一次 阅读全文
posted @ 2018-08-20 10:52 水题收割者 阅读(144) 评论(0) 推荐(0)
摘要:传送门 题目大意 给你一个字符串,求既是它的前缀又是它的后缀的子串个数。 分析 这个题很明显是kmp的nxt数组的应用(为了显得我很厉害不妨假装它是border的应用),因为nxt[i]表示1~i-1的最长的既是前缀又是后缀的子串的长度,所以我们用nxt数组递归求解就行了。 实际挺好理解的,自己写写 阅读全文
posted @ 2018-08-19 15:51 水题收割者 阅读(101) 评论(0) 推荐(0)
摘要:传送门 题目大意 有n个木棍,让你选4根使得组成的矩形的周长的平方除以面积最小。 分析 这个题看起来就是一个需要证明的贪心,下面我们来证明一下: 所以我们只需要枚举一边所有的a的可能值,然后b就是比a大的边中最小的,复杂度O(n)。总复杂度O(nlogn)。 代码 阅读全文
posted @ 2018-08-19 09:13 水题收割者 阅读(498) 评论(0) 推荐(0)
摘要:传送门 分析 首先我们不难发现交换两棵子树,它们自身的逆序对个数是不变的,改变的只是由一棵子树的x和另一棵子树的y组成的二元组(x,y),所以我们可以考虑使用线段树合并。我们对于每一个叶子节点建一棵权值线段树,然后将他们一一合并,而对于每一个节点是否旋转左右儿子只需要比较这两种情况产生的逆序对个数即 阅读全文
posted @ 2018-08-18 19:18 水题收割者 阅读(154) 评论(0) 推荐(0)
摘要:传送门 分析 我们首先要记录一个pre[x]表示上一个颜色和x相同的位置。然后我们枚举所有区间的右端点。我们发现对于每一个新的端点x,会导致pre[pre[x]]+1到pre[x]这一段区间的值减w[col[x]],导致pre[x]+1到x这一段区间的值加w[col[x]]。所以我们只需要维护这些信 阅读全文
posted @ 2018-08-18 09:37 水题收割者 阅读(126) 评论(0) 推荐(0)
摘要:传送门 题目大意 定义n-magic为从左往右,偶数位置均为n,奇数位置不为n的一类数。求出[a,b]内所有可被m整除的d-magic个数。 分析 显然是数位dp,我们用dp[i][j][k]表示考虑到第i位,小于还是等于范围,对m取模的余数为k的时候的个数,然后我们枚举所有满足情况的j(i为奇数则 阅读全文
posted @ 2018-08-17 16:36 水题收割者 阅读(143) 评论(0) 推荐(0)
摘要:传送门 分析 首先这是一个询问一段区间内的个数的问题,所以我们可以用差分的思想用sum(R)-sum(L-1)。然后我们考虑如何求出sum(n),我们用dp[i][j][k][t]表示考虑到第i位,最后一个数是j,是否已经小于n和是否已经考虑完前导零。至于转移和一般的套路一样,详见代码。注意最后记得 阅读全文
posted @ 2018-08-17 09:43 水题收割者 阅读(149) 评论(0) 推荐(0)
摘要:传送门 题目大意 给你一棵树,可以染m种颜色,现定义一种特殊的颜色K,一棵树上最多能有x个特殊颜色。如果一个节点为特殊颜色,那么他相邻的节点的值只能选比K小的颜色,问一共有多少种染色方案。 分析 不难想出这是一个树型dp,用dp[i][j][k]表示考虑第i个点所选的颜色的种类为j,共用了k个特殊颜 阅读全文
posted @ 2018-08-16 21:33 水题收割者 阅读(273) 评论(0) 推荐(0)
摘要:传送门 题目大意 有n个人n*m张牌,每个人分m张牌。每个人有一个自己喜欢的数值,如果他的牌中有x张数值等于这个值则他的高兴度为L[x],求怎样分配牌可以使得所有人的总高兴度最大。 分析 我们发现每一个人只有他喜欢的值对他有影响。所以我们统计出喜欢值x的人有多少和有多少值为x的牌,对于每一个x设dp 阅读全文
posted @ 2018-08-16 09:54 水题收割者 阅读(225) 评论(0) 推荐(0)
摘要:传送门 题目大意 有n本书,最多k次操作,每次操作可以把一本书拿出来,放到一个位置去,有一个指标较mess度,他是书的高度的段数,连续的书高度一样算一段,现在给你最先开始各个位置上的书的高度,求操作后最小的mess度。 分析 首先我们要注意一个非常非常重要的条件就是书的高度的范围很小。所以我们不由想 阅读全文
posted @ 2018-08-15 20:26 水题收割者 阅读(349) 评论(0) 推荐(0)
摘要:传送门 题目大意 有n个带有颜色的方块,没消除一段长度为x的连续的相同颜色的方块可以得到x^2的分数,让你用一种最优的顺序消除所有方块使得得分最多。 分析 首先不难看出这是一个区间dp,于是我们考虑如何设计状态。我们设dp[i][j][k]表示考虑区间[i,j],从j往后有k个方块和第j个颜色是相同 阅读全文
posted @ 2018-08-15 11:11 水题收割者 阅读(157) 评论(0) 推荐(0)
摘要:传送门 题目大意 有一个大区间和n个小区间,每个小区间都有一个代价,求最少付出多少代价可以使得小区间完全覆盖大区间。 分析为了方便起见我们先将s变为2,其它的位置都对应更改以便后期处理。我们考虑以t1为第一关键字,t2为第二关键字将所有奶牛排序。用dp[i][j]表示考虑到第i只牛,覆盖到点j最少需 阅读全文
posted @ 2018-08-14 17:43 水题收割者 阅读(260) 评论(0) 推荐(0)
摘要:传送门 题目大意 给你一些书的高度和宽度,有一个一列三行书柜,要求放进去书后,三行书柜的高的和乘以书柜的宽度最小。问这个值最小是多少。 分析 我们可以先将所有书按照高度降序排好,这样对于每一层只要放过书高度边不会改变。我们设第一本书放在第一层,用dp[i][j][k]表示考虑到第i个,第二层的厚度为 阅读全文
posted @ 2018-08-14 13:26 水题收割者 阅读(193) 评论(0) 推荐(0)
摘要:传送门 题目大意 问讲一个大小为4*n的棋盘用无数1*2的骨牌不重叠覆盖有多少种方案。 分析 我们考虑可以将长为n的棋盘分为两块,一个大小为n-i,另一个大小为i,而为了避免对于不同的i构造出相同的情况,我们必须使长为i的那一半棋盘是一种不可分离的情况,即对于这种情况去掉其中的任意一行均不合法。我们 阅读全文
posted @ 2018-08-14 08:11 水题收割者 阅读(153) 评论(0) 推荐(0)
摘要:传送门 题目大意 给你m个机器,n个数,每个机器可以给n个数的某一段排序,求最少使用几个机器,保证可以把这个n个数排好序 分析 我们可以想到dpij表示考虑前i个机器让最大的数到达点j至少需要使用多少个机器,转移为: dp[i][j]=min{dp[i][j],dp[i-1][j'](s[i]<=j 阅读全文
posted @ 2018-08-13 07:59 水题收割者 阅读(259) 评论(0) 推荐(0)
摘要:传送门 题目大意 有n个方块,有1,2,3,4四种颜色对其进行染色,求1,2颜色的方块个数均为偶数的方案数对10007取模的值。 分析 我们假设1表示这个颜色个数是奇数,0表示是偶数,所以对于所有状态我们可以分为四种,每种对应一个二元组 ,二元组的第一项表示颜色1,第二项表示颜色2,这四种分别是(1 阅读全文
posted @ 2018-08-12 18:59 水题收割者 阅读(257) 评论(0) 推荐(0)
摘要:传送门 题目大意 现在有 n个人,m个党派,第i个人开始想把票投给党派pi,而如果想让他改变他的想法需要花费ci元。你现在是党派1,问你最少花多少钱使得你的党派得票数大于其它任意党派。 分析 我们枚举i,表示除了自己之外的其它任何党派最多得票数不超过i,而我们每次只需要改变一个党派中需要花费的钱最少 阅读全文
posted @ 2018-08-12 15:56 水题收割者 阅读(251) 评论(0) 推荐(1)
摘要:看来我还是太菜了,这么一道破题做了那么长时间...... 传送门 分析 我首先想到的是用状压dp来转移每一个人是否放走的状态,但是发现复杂度远远不够。于是我们考虑区间dp,dpij表示i到j区间的所有罪犯全部放走的最小花费,于是我们可以将一个区间(i,j)分为(i,k-1),(k+1,j)和k这个点 阅读全文
posted @ 2018-08-12 11:02 水题收割者 阅读(185) 评论(0) 推荐(0)
摘要:传送门 题目大意 给出由1~n组成的序列,每次可将一个区间翻转。问如何从1~n的递增序列变成给出的序列,输出操作次数以及每次操作的区间。最多翻转3次,保证有解,输出任意方案即可。 分析 我们对于每一次翻转只考虑枚举所有可能的点,即我们找出每一段连续区间的两个端点,然后枚举选取这些端点中的哪两个,之后 阅读全文
posted @ 2018-08-09 19:11 水题收割者 阅读(178) 评论(0) 推荐(0)
摘要:传送门 题目大意 有编号1~n的星球,在不用的星球间共有m个传送门,任意两个星球间传送门不超过1个,每个传送门需要花费一定的时间,但是在某时刻会在某星球有旅客到达,这时要一定等到没有旅客到达的时候才能出发,问从1走到n最少花费时间是多少。 分析 首先我们先考虑一个贪心策略,如果到达点i的时间有a和b 阅读全文
posted @ 2018-08-08 17:44 水题收割者 阅读(166) 评论(0) 推荐(0)
摘要:传送门 题目大意 有2*n个位置,这些位置有的已经填上了数,有的还没有(用?表示),现在让你在还没有填上数的填0~9中的任意数,使得前n个数的乘积等于后n个数的乘积,问有多少种方案。 分析 首先这个题 并没有取模,所以我们要使用高精度。在这个题中我为了加速,将朴素的高精度变成了5个long long 阅读全文
posted @ 2018-08-08 08:53 水题收割者 阅读(346) 评论(0) 推荐(0)
摘要:传送门 分析 图1 我们假设我们现在有两个向量(2,3)和(4,2),将他们所能到达的点在几何画板上画出来,再将这些点用红线连起来,在将横坐标相同的点用蓝线连起来便能得到图1,就此我们可以发现可以用绿色的两个向量取代之前的两个向量,并且发现有一个向量可以是(0,B)的形式。在发现这个之后我们现在的任 阅读全文
posted @ 2018-08-07 13:28 水题收割者 阅读(352) 评论(0) 推荐(0)
摘要:传送门 题目大意 给你n和m,表示一个n*n的数独已经填完了m行,让你填出剩下几行,要求答案的字典序最小。 分析 看到这道题我首先想到的是记录每行每列使用了哪些数字,然后贪心的来填,但是发现用这种策略会在有些情况下得不到解。于是我们考虑二分图匹配,将左边n个点表示每一行n个位置,右边n个点表示对应的 阅读全文
posted @ 2018-08-06 08:45 水题收割者 阅读(270) 评论(0) 推荐(0)
摘要:传送门 题目大意 给定n和一个字符串,求一个新字符串使得这个字符串不存在长度大于等于n的回文子串且在字典序大于原串的情况下最小。 分析 我们知道如果有一个长度为n+2的回文串,那它一定由一个长度为n的回文串构成,所以我们只寻找长度为n和n+1的回文串。我们枚举每个位置的字母使最终字符串满足条件即可, 阅读全文
posted @ 2018-08-03 14:16 水题收割者 阅读(262) 评论(0) 推荐(0)
摘要:传送门 题目大意 给定一个数N,现在又一个数x,在1~N之间,现在每次可以猜一个数a,返回gcd(x,a),问说最少猜几次可以确定x。 分析 这个题应该可以算是贪心,但是没人知道这样为啥是对的(雾),我们现在来感性认识一下,我们知道对于任意一个数都可以写p1e1p2e2 ... 的形式,所以我们在每 阅读全文
posted @ 2018-08-02 13:01 水题收割者 阅读(276) 评论(0) 推荐(0)
摘要:传送门 题目大意 给你一个数n和长度为n的序列,序列中的每个数均为1或-1,如果一个点j对于任意的k都满足题目中给的式子,则j是一个合法位置,问这样的j有多少个 分析 这道题有两种方法,分别对应代码1和代码2。 方法1 我们发现最终答案实际就是这n个数的和与0去最大值,因为我们不难发现对于任意两个相 阅读全文
posted @ 2018-08-01 10:50 水题收割者 阅读(210) 评论(0) 推荐(0)