09 2018 档案
摘要:嘟嘟嘟 首先,每一辆货车路径唯一,说明应该求生成树。又要满足这条路的最小边权最大,进一步得出要求最大生成树。 求完最大生成树上要解决的是树上任意两点之间的边权的最小值,我第一反应是树剖维护链上最小值,但其实我们用LCA就可以了:对于任意两点x, y, 维护x到LCA(x, y)和y到LCA(x, y
阅读全文
摘要:嘟嘟嘟 首先可以想到,最小距离一定是a中第 i 大的和b中第 i 大的在同一行。 然后先把a,b分别离散化,然后开一个标记数组,map[i]记录a中第 i 小的数在哪一个位置出现,然后对b数组处理一遍。 题中说交换次数,自然想到逆序对,于是我们对新的b数组求一遍逆序对就行了。 1 #include<
阅读全文
摘要:嘟嘟嘟 题解说是二分答案和前缀和,然而我愣是没看到…… 但是这就是线段树板子题啊! 区间修改维护最小值,如果当前修改后的区间最小值小于0的话就说明这个订单无法完全满足。 竟然TLE了一个点,开氧气过了。 1 #include<cstdio> 2 #include<iostream> 3 #inclu
阅读全文
摘要:这一套模拟卷我觉得难度不是很高,挺良心的,会的分也都拿到了,不会的就是不会…… 题面就不放上来啦~~gg不让~~ T1 flower 最大值最小?那果断二分啊。 二分一个最小高度,然后judge的时候从头开始扫就行,遇到一个高度比mid小的就从这个数开始把长度为L的区间加上这个差值,并记录天数,如果
阅读全文
摘要:嘟嘟嘟 这其实就是一道树剖板子题,只不过就是写的长了一点。 还是叨叨几点吧: 1.区间取相反数:开一个标记数组,每一次亦或1,然后对应的sum取相反数,Max, Min交换,并且取相反数。 2.题目中给的是边权,但要转化成点权:这条边的边权转化成儿子节点的点权,然后每一次链上操作的时候,x, y的L
阅读全文
摘要:嘟嘟嘟 首先人人都能想到是线段树,不过二维线段树肯定会MLE+TLE的。 我们换一种想法,不去修改整个区间,而是修改一个点:开横竖两个线段树,分别记录哪些行和列被修改了。因为如果两阵红雾碰撞,则会因为密度过大而沉降消失,所以自然想到亦或。 统计的时候求出这个矩形内有哪些行和列被修改了,接着把这些行和
阅读全文
摘要:嘟嘟嘟 这应该是网络流入门题之一了,跟教辅的组成这道题很像。 把每一只牛看成书,然后对牛拆点,因为每一只牛只要一份,食物和饮料分别看成练习册和答案。 1 #include<cstdio> 2 #include<iostream> 3 #include<cmath> 4 #include<algori
阅读全文
摘要:嘟嘟嘟 这题主要考网络流建图。 首先每一只蜥蜴像自己所在的石柱连边,然后如果这一只蜥蜴像能跳到的所有石柱连边,那就错了。因为每一只蜥蜴能跳到别的石柱上,然后再跳到更远的石柱上,而上述连边的意思是蜥蜴只能跳到他一步能达到的石柱上。所以,正确的连边应该是以每一个石柱,向能到达的石柱连边,容量为INF。
阅读全文
摘要:嘟嘟嘟 一看就知道是一道树剖题。 先树剖转换成线性,然后线段树维护。 维护的时候跟酒店那道题有点像,但比那个简单多了。 首先一个sum代表颜色段数量,然后除了lazy之外还有lco,rco分别代表区间左右端点是啥颜色。 合并的时候除了sum[now] = sum[now <<1] + sum[now
阅读全文
摘要:嘟嘟嘟 这题好像属于01分数规划问题,叫什么最优比率生成环。 题目概括一下,就是求一个环,满足∑v[i] / ∑c[i]最大。 我们可以堆上面的式子变个型:令 x = ∑v[i] / ∑c[i],则x * ∑c[i] = v[i] => ∑x * c[i] - v[i] = 0。于是对于任何能取到的
阅读全文
摘要:虽然平时用Dev,但考试的时候linux下没有Dev,只能用emacs了…… 这里记录一些我常用的指令和配置文件中的代码行。 指令: 1.c-x 1:只留一个窗口 2.c-x 2:分成上下两个窗口 3.c-x 3:分成左右两个窗口 4.c-x + h:全选 5.c-x + f:打开文件 6.m-x
阅读全文
摘要:嘟嘟嘟 看数据范围,第一反应觉得爆搜是不是能骗点分,但发现爆搜太难写了,于是就开始想想正解…… 正解大概猜到了是网络流,但是怎么把时间这个条件加入到图的内容中,却困扰了我好半天,总是感觉把这种不同维度的条件整合到一块肯定得用什么很奇葩的方法,于是我就想不出来了…… 看题解。 先二分时间(有道理啊,我
阅读全文
摘要:嘟嘟嘟 这几天刷最大流和最小割,正好某谷推荐了这道题,就顺便AC了一下。 好水。 建立源点和汇点,对于每一个能提供床位的同学,就从源点向该同学连一条容量为1的边;对于每一个需要床位的同学,就向汇点连一条容量为1的边。因此将每一个同学拆点。 接下来考虑同学之间的关系:如果x和y互相认识,就连一条(x,
阅读全文
摘要:嘟嘟嘟 看到这题目如果想费用流的话就gg了,就像LCA这道题一样,不要被题目迷惑…… 我们考虑Bob,他想让总费用最大,那么他的所有费用一定都加到流量最大的那一条边上。而Alice想让总费用最小,那么就是让流量最大的那一条边最小,自然就想到二分边的容量啦! 不过这道题特殊的地方是要实数二分。其实终止
阅读全文
摘要:嘟嘟嘟 因为如果能跳x支舞曲,那么一定能跳y(y < x)支舞曲,满足单调性。因此可二分舞曲。 那么网络流建图就明白了:把每一个男生拆成3个点,分别是男生总,男生喜欢的,男生不喜欢的。然后从源点向男生总连一条容量为x的边,从男生总向男生喜欢的连一条INF的边,向男生不喜欢的连一条k的边。女生同理。
阅读全文
摘要:嘟嘟嘟 这明显就是一道树剖的水题~~~ install操作就是查询x到根节点的路径中0的个数,并且每一个节点的权值都改成1. uninstall就是查询x的子树中1的个数,并都改成0. 有一个优化就是install操作中如果当前区间已经有1了,就可以不用往上查,直接返回。因为从题中可以得到一个信息,
阅读全文
摘要:嘟嘟嘟 很显然是一道最小割模型。 做完几道题后。图的大概就能想出来了: 1.对于每一个动物,如果是0,就和s连一条边,否则向t连一条边。 2.对于每一个任务,题中要求最大利润,可以转化成最小损失。 (1)如果都要变成1,就向汇点连一条w +g(如果有的话)的边;否则从源点连一条w +g的边。接下来
阅读全文
摘要:嘟嘟嘟 最小割。 不过割掉边代表付出某一种代价,而题中让求的是利润。所以我们先把完成所有任务的总利润加起来,然后算没有完成任务付出的代价。 建图比较明白: 1.源点向任务连一条边,容量为完成这个任务赚到的钱。割掉代表这个任务没完成。 2.每一个机器向汇点连一条边,容量为买这个机器所花的钱。割掉代表没
阅读全文
摘要:嘟嘟嘟 看数据范围,加上题中频繁提到的冲突,就可以想到算法是最小割。 1.同意睡觉的,源点就像他连一条容量为1的边。割掉它就代表他背叛了自己的意愿。 2.同理,不同意睡觉的,就像汇点连一条边。 3.考虑每一对朋友。如果两个朋友意见相反,就互相连一条容量为1的边,割掉其中的任意一条就代表朋友之间发生了
阅读全文
摘要:嘟嘟嘟 今天才知道,原来lcs也有O(nlogn)的做法…… 首先对于两个排列(即使不是排列,离散化一下就行),我们能很容易的得出a[i]在b中出现的位置,但是无法保证出现的相对位置和a[i]相同,所以我们要解决的是求出a[i]在b中出现的相对位置相同的最长序列长度是多少。(相对位置就是对于两个的数
阅读全文
摘要:嘟嘟嘟 这是一道比较经典的最小割模型,对只会最大流却对最小割一窍不通的我来说在适合不过了。 首先,题目中的图片非常良心,细心观察他能得到一个很重要的规律:黄色格子上的骑士只能攻击红色格子上的骑士,反之同理。 因此,我们可以把棋盘进行黑白染色,然后白点放在图的左侧,黑点在图的右侧,有点像二分图的感觉。
阅读全文
摘要:嘟嘟嘟 这道题以前在学校内网刷过类似的,AC了后还挺有成就感,所以更详细的题解请看这里。 总的来说,就是用线段树维护区间最长连续0.因此我们要维护这么几个值:lmax:从当前区间左端点开始最长的连续0的长度;rmax:右端点开始最长连续0的长度;imax当前区间最长连续0的长度。有了这三个量,区间就
阅读全文
摘要:嘟嘟嘟 当年的我不会状压,于是就很自然的爆零了。 今年的我会了状压,于是尝试一波状压dfs。 然后怎么就AC了…… 首先,有两个数组dis[i]:i 到打通的宝藏屋经过的宝藏屋数量;dp[i] 一个二进制数,第k位为1表示第k个宝藏屋已经被开采过了。 然后就是暴力dfs啦。 首先枚举打通的宝藏屋 i
阅读全文
摘要:嘟嘟嘟 时隔将近一年,我终于开始捡起去年NOIP的题了。记得当时啥也不会的我看到这题无从下手,就连暴力也没写出来。 好吧,说正事。 1.如果k = 0的话很好做,就是最短路计数。 2.不过这道题允许走“冤枉路”,于是我们可以dp。考虑到每走一条边,就会对冤枉路的长度做出贡献,那么令dp[i][j]表
阅读全文
摘要:嘟嘟嘟 首先我们考虑两种肯定碰不到的情况:1.a, b 的LCA的深度都比c, d 大。2.c, d 的LCA的深度都比a, b大。 那么我们考虑剩下的情况:设 l1 = lca(a, b), l2 = lca(c, d)。 1.如果deep[l1] >= deep[l2]:那么只要c或d到根的路径
阅读全文
摘要:嘟嘟嘟 不得不说,这道题出的真是太好了! 正解直接说出来太突兀了,还是先从暴力开始。 首先,如果看到题目就像怎么求LCA,那就凉凉(也不想想,省选题会在题目中告诉你做法吗?!)。 除非有一种方法一次把LCA都求出来,或者是把这个求多个deep的和转化一下。 反正第一种方法我是不会。 至于求多个dee
阅读全文
摘要:嘟嘟嘟 这道题debug了两个下午终于AC了(还是对拍好用),心中十分激动~~ 首先不得不说,不看题解我是无论如何也想不出怎么建图的,刚开始直接按仇恨关系建图怎么搞也好不出来。 题解说,要建互补图!就是如果两个骑士能挨一块,就连一条边。然后tarjan求点双联通分量。为什么求点双联通分量呢?因为每一
阅读全文
摘要:嘟嘟嘟 题目大意:给一个有向图,问至少几条边,使其成为强连通图。 首先强联通缩点,然后分别统计入度为0的点数num1和出度为0的点数num2,答案就是max(num1, num2)。 为什么呢?不难想,入度为0说明没有点能到达他,所以必须连一条通向他的边;出度为0说明他不能通向任何点,所以也得连一条
阅读全文
摘要:嘟嘟嘟 总的来说,就是求最少加几条边,使图成为一个边双连通图。 显然先边双连通分量缩点,于是图就变成了一棵树(因为是无向图),然后我就在纸上画了半天,得到了一个结论:只要连叶子节点数 / 2(向上取整)条边,这颗树就成了一个边双连通图。 就是叶子之间两两连边,然后如果是奇数个叶子节点,就把多的那个向
阅读全文
摘要:嘟嘟嘟 很自然的想到先tarjan把强联通分量缩点,因为对于一个强联通分量,要么不选,要么全选,所以可看成一个点。 然后转化成了求DAG上的一条最长路(每一个点都有权值)。刚开始我想用dijkstra写:先把所入度为0的点都放进优先队列里,然后跑dijkstra,把所有的小于号改成大于号。 结果就W
阅读全文
摘要:嘟嘟嘟 这道题一看就是跟tarjan有关的,又因为题中说某一个挖煤点坍塌,那也就是图中删去一个点以及和这个点连接的所有边,所以肯定跟割点有关。对于将割点删去后图中剩下的联通块,我刚开始想只要每一个联通块有一个救援出口就行了。但后来发现这不符合出口最少(然后样例还过了),因为如果一个块连接大于等于2个
阅读全文
摘要:嘟嘟嘟 建图还是很明显的。 接着分两种情况: 1.图中不存在环:那么只要收买那些入度为0的点。如果这些点有的不能收买。就不能控制所有间谍。 2.图中存在环,那么对于这些在环中的点,我们只要收买数额最少的间谍。 于是我们用tarjan缩点:这样把第二种情况就变成了第一种情况。 所以大体流程是:用tar
阅读全文
摘要:嗯,提前声明一下,这三道题的正解我现在一个写不出来,顶多T2懂一个思路……于是我就谈谈题解之外的事儿吧。 首先花了15分钟看完题。 T1起手10分钟O(n3)30分暴力很开心。直接跳T2。T2连暴力都没思路,于是就去看T3,然后发现T3O(n2)的暴力也不是很好写,想了一会儿又回去搞T1。突然就想到
阅读全文
摘要:过了一周,终于迎来了第二次模拟(这不是期待的语气),看第一周毒瘤程度,我就觉得接下来的模拟只能更毒瘤。 花了10多分钟读完了三道题,觉得暴力还是挺好写的,然后在每一道题都思索那么几分钟后,觉得还是写暴力靠谱一些……不过还好,一个半点就把暴力都写完了。 然后我就接着想正解…… T1 game 这道题刚
阅读全文
摘要:嘟嘟嘟 这应该算一道树形背包吧,虽然我还是分不太清树形背包和树形dp的区别…… 首先dp[i][u][j] 表示在u的前 i 棵子树中,留了 j 条树枝时最大的苹果数量,而且根据题目描述,这些留下的树枝一定都连在u上。 然后我们从1~j 枚举 k,于是 dp[i][u][j] = max(dp[i
阅读全文
摘要:嘟嘟嘟 一看完题我就知道是树形dp,状态都想出来了:dp[i][j]表示以 i 为根节点的子树,选了 j 个用户时的最大利润。然后我就卡住了……直到看题解的那一刻…… 题解说:树形背包。于是我就知道为什么gg了:我总共就做了一道树形背包。 思路大概是这样的:对于一个节点u,枚举他的儿子v,然后dfs
阅读全文
摘要:嘟嘟嘟 这好像是一种树上背包。 我们令dp[i][j] 表示在 i 所在的子树中(包括节点 i)分离出一个大小为 j 的子树最少需割多少条边。 那么转移方程就是 dp[u][j] = min(dp[u][j], dp[u][j - k] + dp[v][k] - 1) (v是u的一个儿子) 理解起来
阅读全文
摘要:嘟嘟嘟 题说的很明白,就是求树的重心。 我们首先dfs一遍维护每一个点的子树大小,然后再dfs一遍,对于一个点u,选择子树中size[v]最小的那个和n - size[u]比较,取最大作为删除u后的答案Max[u]。 然后再O(n)遍历一遍取min(Max[i]). 写代码的时候两次dfs可以合并。
阅读全文
摘要:嘟嘟嘟 树形dp。 首先一个很常规的想法就是如果u到v有一条边,那么建立cost(u, v) = 0, cost(v, u) = 1的两条边. 可以两遍dfs。 先任选一个点作为根节点,第一遍从下往上dfs,维护节点u到他的所有子节点的距离,很容易得出dis[u] = ∑dis[v] + cost(
阅读全文
摘要:嘟嘟嘟 题目大意就是对于一个m面的骰子,回答这么两个问题: 1.求连续扔n次都是同一数字的期望次数。 2.求连续扔n次每一次数字都不相同的期望次数。 对于期望dp特别菜的我来说,这道题已经算是很难了。反正是抠了一天…… 我们先看第一问。 令fi表示连续 i 次数字都相同的期望,那么要考虑他能转化到什
阅读全文
摘要:嘟嘟嘟 虽然分类是期望dp,不过好像是最水的 因为在陆地上的时间和概率是固定的,所以只用考虑过河的期望时间。 对于一条河p, l, v,p好像没什么用……不管了,首先期望时间我觉得可以这么算:期望时间=期望距离 / 速度,又因为船停的位置和方向都是等概率随机的,所以期望的距离就是平均距离,很显然最长
阅读全文
摘要:嘟嘟嘟 这道题很显然是dp,刚开始我是设dp[i][j]表示到第 i 个时间段,申请了 j 个课程耗费的体力值的总和的最小期望值,但是想了半天也没有推出转移方程,现在想想觉得应该是无法表示他第 i 时刻在哪一个教室。 于是我们加一维dp[i][j][0/1]表示第 i 时刻我们是否申请了换教室。那么
阅读全文
摘要:嘟嘟嘟 看这种图上摆放方案的题,以及 m <= 10,就一定能猜到是状压dp。 考虑当前第 i 行放一个3 * 2的方块,只会受到 i - 1行和 i - 2行的影响, 所以设:0:表示上两行都空闲。 1:i - 2行有块,i - 1行空闲。 2:i - 1行有块,因此 i - 2行的状态就不用管了
阅读全文
摘要:嘟嘟嘟 看来状压dp入门题都是这个难度的。 令dp[i][j]表示到了第 i 行,状态为 j 时的方案数。 然后枚举这一行和上一行的状态,则dp[i][j] += dp[i - 1][k]。 预处理合法的种植状态。 还有,判断种植状态符不符合草地状态只能一位一位比较,因为位运算不能辨别两个数的二进制
阅读全文
摘要:嘟嘟嘟 做完[NOI2001]炮兵阵地这道题,顿时觉得此题好水~~15分钟AC 令dp[i][j][k]表示到第 i 行放了 j 个国王,该行状态为 k 时的方案数。然后dp的时候第一层循环枚举 i,第二层 j,如果j 合法的话,再枚举第三层 i - 1行的状态 k,然后如果k合法且 j 和k不冲突
阅读全文
摘要:嘟嘟嘟 看到 m <= 10,就知道这道题可定是状压dp。 还是一行一行dp,可见当前第 i 行能否放炮兵,除了和第 i 行的地形有关,还和 i - 1, i - 2行炮兵的放置状态有关。 因此dp要开三维,dp[k][j][i] 表示第 i 行的放置状态为 j, i - 1 行的放置状态为h时最多
阅读全文
摘要:嘟嘟嘟 这道题感觉和昨天的凉心模拟有点像,不过这一次n和m都是手动输入的,所以矩阵自己画不出来。 但总体的思路还是一样的:状压dp,每一行为一个状态。 考虑每一个状态:对于每一个1 * 2的方块,要么横着放,要么竖着放。竖着放对于这一行相当于这一块的一半。因此,第k位为1表示第 i 行第k列有一个一
阅读全文
摘要:嘟嘟嘟 dfs后,如果 low[v] >= dfn[u],则 u 就是割点。 不过如果 u 是搜索树的根节点的话,还要判断他至少有两个出边,而且这个判断必须加在v没有被走到的前提下。这样就表示有一些点只能通过根节点走到,那么如果这种点多于1个的话,根节点就是割点了。 1 #include<cstdi
阅读全文
摘要:嘟嘟嘟 首先求树的直径两次bfs即可,实际上bfs就是最短路,因为树上路径是唯一的,所以用任何一种遍历方法都行(spfa和dijkstra当然也可以)。 可以证明,只要求出任意一条直径就行了,为什么呢?考虑一下,如果我们在直径上选了一段,那么最远偏心距可肯定是到直径两端的最大值,和直径外的点无关,只
阅读全文
摘要:昨天学姐又说Day2难度是Day1两倍,反正我都无所畏惧了…… T1 forging Day2果然毒瘤啊,T1就出一道期望dp,然后我期望基本忘得差不多了…… 不过这道题其实不难。先考虑这个问题:抛一枚硬币,如果为反面就接着抛,求抛到正面的概率。设抛到正面的期望为x,首先要抛一次,然后有1/2的概率
阅读全文
摘要:毒瘤的九校联考的终于开始了,而且学姐还说这两天的题出的特别“好“,我就感觉离爆零不远了…… T1 restaurant 这道题其实真的是一个完全背包送分题,然而当时的我就是不知咋的没想出来:一看题就觉得此题很难(难个矩阵啊),然后又感觉T2好像可做(实际上并不可做),就先贪心打了个暴力…… 实际上这
阅读全文
摘要:嘟嘟嘟 这道题他会卡spfa,不过据说加SLF优化后能过,但还是讲讲正解吧。 题中有很关键的一句,就是无向边都是正的,只有单向边可能会有负的。当把整个图缩点后,有向边只会连接在每一个联通块之间(因为图中没有环),而且缩点后的图一定是一个DAG,DAG的最短路就可以拓扑排序后直接求出最短路。 因此,对
阅读全文
摘要:嘟嘟嘟 换句话说,就是寻找一条从1到n的路径,使路径上两点x, y(先经过x再经过y)使val[x] - val[y]最大。 还可以用dp的思想来做这道题:令dis1[x]表示1到x的所有路径中val最小的点,dis2[x]表示从t到x的所有路径中val最大的点,这样答案就是max(dis2[x]
阅读全文
摘要:嘟嘟嘟 题意概括一下,就是在无向图上求一条1到n的路径,使路径上第k + 1大的边权尽量小。 考虑dp,令dp[i][j] 表示走到节点 i,路线上有 j 条电话线免费时,路径上最贵的电缆花费最小是多少。则对于一条从u到v,长度为w的边,转移方程是: 1.这条电缆要付费:dp[v][p] = min
阅读全文
摘要:嘟嘟嘟 第一眼就觉得肯定某种是最短路,然后想了半天也不知道。然后就把送的50分写了,然后就爆搜,结果因为一个错误的剪枝竟然90分?!只能怪数据太水…… 考完试后听bin哥讲,说就是普通的最短路,只不过一个dis[i]表示1到 i 的最短路,step[i]表示1到 i 要有几个点,然后判断点v是否加入
阅读全文
摘要:嘟嘟嘟 这道题刚开始尝试自己写网络流,然后改来改去最终就写炸了……然后就看了题解,发现好多篇题解都是由一篇衍生出来的……甚至笔误都是一样。 所以我参照完题解后还是觉得应该自己写一篇最能让人看懂的题解。 首先,第一问就是比较简单的dp,不过我们令dp[i]表示以a[i]结尾(不是到第 i 位)的最长不
阅读全文
摘要:嘟嘟嘟 做了几道网络流的题后,就感觉这道题还是挺简单的了…… 这是一个二分图多重匹配问题,关键还是在建图:图的右侧是k个节点,代表每一个类型的试卷,然后都连一条容量为该类型题数通往汇点的边。图的左侧是每一个试题,因为每一个试题只能用一次,所以和源点连一条容量为1的边。然后如果试题 i 属于第 j 类
阅读全文
摘要:嘟嘟嘟 这里就讲怎么做……因为为什么这么做以及证明我都不知道…… 首先,我们将原图的每一个点 i 都拆成 i 和 i +n 两个点。接着把所有 i 都和源点相连,边的容量为1,;把所有i + n 都和汇点相连,容量也为1。然后对于原图中的一条边(u, v),就在新图中连一条(u, v + n)的边。
阅读全文
摘要:嘟嘟嘟 这道题建图还是很明白的:一个二分图,左边是单位,右边是餐桌,然后源点都向单位连一条容量为单位人数的边,每一个餐桌和汇点都连一条容量为餐桌容量的边(都叫容量~)。然后每一个单位向每一个餐桌都连一条容量为1的边,跑最大流即可。本来以为复杂度会很高,然而数据范围小,加上dinic玄学,很快就跑过了
阅读全文
摘要:嘟嘟嘟 这道题如果不看题解,我是绝对想不到二分图匹配的。 咱们先不想二分图匹配的事,先想想什么状态是有解的:只要每一行都有一个黑块,且每一个黑块都在不同的一列,那么一定有解。因为即使这些黑块不在主对角线上,我们也可以通过交换行(列)来达到这个最终状态,这就像不断交换两个数来给一个序列排序一样。 然后
阅读全文
摘要:嘟嘟嘟 这道题我其实是拿来练网络流的,用dinic。建图不说了(都给你建好了……)。 1 #include<cstdio> 2 #include<iostream> 3 #include<cmath> 4 #include<algorithm> 5 #include<cstring> 6 #incl
阅读全文
摘要:好久没有模拟了,然后一模拟就gg…… T1 高维宇宙 因为模拟标题上写的noip,所以当时我就压根没往二分图匹配想,而是生成了了一个像邻接矩阵的表,t[i][j]表示 a[i] + a[j],然后在倒三角矩阵里爆搜……虽然加上了如果加上当前最大值仍小于ans就返回的剪枝,但还是稳稳地30分……果然搜
阅读全文
摘要:嘟嘟嘟 太水了,大佬们就绕道吧…… 就是m, b数组分别排个序,然后更改对应位置的m[i]和b[i],就行了。 因为如果m[i]不改为b[i]而是b[i + 1]的话,那么必定要将m[j] (j > i)改为b[i],而这一定比m[i]改为b[i]更劣。 1 #include<cstdio> 2 #
阅读全文
摘要:嘟嘟嘟 题面说的有点问题,应该是向后看齐。 于是我们维护一个单调递减栈,如果当前a[i]比栈顶元素大,就执行pop操作,然后把pop出来的元素的答案都用 i 更新即可。 1 #include<cstdio> 2 #include<iostream> 3 #include<cmath> 4 #incl
阅读全文
摘要:嘟嘟嘟 这个是一个很明显的dp,遇到这种倍数的问题的,就令dp[i][j]表示选到了第 i 只牛(不是选了 i 只牛),sum(Ri) % f == j 的方案数,则, dp[i][j] = dp[i - 1][j] + dp[i - 1][(j + f - a[i] % f) % f] 等式右边第
阅读全文