随笔分类 -  ACM

上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 36 下一页
大二到大三不堪回首的记忆....
摘要:原题链接 考察:LCA+Tarjan 思路: 因为N<=1e5,所以上个算法N2 不适用.这里仍然是上道题的思路,枚举所有不在最小生成树的边.求出边两端点u,v.找到u,v在最小生成树的最大值d1和次大值d2.然后通过sum-d1(d2)+road[i].w求解答案. LCA优化的是求两端点之间的最 阅读全文
posted @ 2021-05-10 21:56 acmloser 阅读(53) 评论(0) 推荐(0)
摘要:原题链接 考察:贪心+思维 原来是贪心...还以为是dp 思路: m个已知信息将n个元素序列分成了n+1段.对于每段端点求峰值即可. 但是注意第一天的起点是任意高的. 1 #include <iostream> 2 #include <cstring> 3 #include <algorithm> 阅读全文
posted @ 2021-05-10 01:30 acmloser 阅读(81) 评论(0) 推荐(0)
摘要:原题链接 考察: 思维+构造 错误思路: 以451为例.这道题不是从大到小枚举,再取余,存在取小的数更优的情况.dfs一定超时,完全背包不便记录路径. 思路: 我们的集合只包含0与1的数.如果要表示451的4一定需要4个100,5需要5个10.以此类推,由此n每位数字的最大值就是答案的最小长度. 然 阅读全文
posted @ 2021-05-09 23:45 acmloser 阅读(59) 评论(0) 推荐(0)
摘要:原题链接 考察:差分约束+二分 这题太呕了,调bug调了几个小时. 错误思路: 贪心,根据已经确定成绩的A,B求解最大值T. 可能存在这样的情况:a要k+T倍杀b,c要被b k-T倍杀,已知a、c的分数。那么有可能b无论取什么分数,这两个flag至少会不满足一个,也就是说可能会这样:b取大了a不能k 阅读全文
posted @ 2021-05-09 12:59 acmloser 阅读(96) 评论(0) 推荐(0)
摘要:原题链接 考察:差分约束 艹,我太菜了,想了半天不知道源点在哪里,结果是每个点都试一遍... 思路: 看了其他大佬的博客,实际我是没有理解差分约束的,这里不需要求最值解,只需要求可行解,而无需管它们的实际意义, 假设所有解都<=0,那么根据条件求出所有解,而所有解+d是满足解<=d的可行解.所以直接 阅读全文
posted @ 2021-05-09 01:45 acmloser 阅读(80) 评论(0) 推荐(0)
摘要:原题链接 考察:差分约束+二分+前缀和 思路: 某个区间有多少个,考虑前缀和. 那么: s[i] - s[i-1] >= 0 , s[i] - s[i-1] 表示第i小时雇佣的人,s[i] - s[i-1] <= sum[i] sum[i]表示可以在i时刻开始工作的人数. 注意r[i]表示第i小时需 阅读全文
posted @ 2021-05-08 23:59 acmloser 阅读(50) 评论(0) 推荐(0)
摘要:原题链接 考察:差分约束 错误思路: 设di 为 第i头牛的坐标, 由题可以得到 dB - dA <= L . dB - dA >= D . 两边减少d1 ,设f[i] = di - d1 , 答案是求f[n]的最大值. 这样确实可以建边,但是找不到源点.1不能保证到所有的点.如果用 di-1 <= 阅读全文
posted @ 2021-05-08 12:36 acmloser 阅读(44) 评论(0) 推荐(0)
摘要:原题链接 考察:差分约束 对本蒟蒻来说想到怎么建立差分约束系统就即为不容易. 思路: 根据题目,求满足 ai <= x <= bi 至少有Ci个 的最小集合.在某个区间里至少有Ci 个,我们可以联想一波前缀和. 这个式子转化为前缀和为 sum[b] - sum[a-1] >= Ci n个条件就有n个 阅读全文
posted @ 2021-05-08 11:24 acmloser 阅读(48) 评论(0) 推荐(0)
摘要:原题链接 考察:差分约束+SPFA 引入: 什么是差分约束? 差分约束系统是一个n元一次不等式组. 它的作用包括: (1) 求一组不等式的可行解 (2) 求一组不等式的最大值或最小值.(每个变量的最值) 不等式的格式是 : Xi \(\leq\) X j + C (C为常数) 这里联想到最短路问题, 阅读全文
posted @ 2021-05-08 00:01 acmloser 阅读(63) 评论(0) 推荐(0)
摘要:原题链接 考察:01分数规划+SPFA判环 思路: 和之前的最小环没什么区别,本题最难在建边.看题目很想当然的是二重for循环字符串建边,但是明显会TLE并且MLE, 考虑换一个思路, ababc + bckjaca -> aba bc kjaca 只考虑前面两个与结尾两个,就转化为 ab-> bc 阅读全文
posted @ 2021-05-07 00:59 acmloser 阅读(68) 评论(0) 推荐(0)
摘要:原题链接 考察:树形dp+二分 思路: 化为01分数规划后,每个人的贡献是 p[i] - mid*s[i],注意一下后面并非图论问题,因为不需要回到源点.因为取某个人的条件是那个人的推荐人也在队列中,所以是树形背包问题. 普通的树形背包时间复杂度是O(n3),TLE是明显的.(所以本蒟蒻紧急学了树形 阅读全文
posted @ 2021-05-06 22:10 acmloser 阅读(63) 评论(0) 推荐(0)
摘要:原题链接 考察:01分数规划+SPFA 思路: 基本是和观光奶牛一样的题,这题的边权化为 sgma(w[i]) - mid.然后判断是否存在负环. 但是会TLE 5个点,此时可以用玄学优化,如果已经转了5圈就说明存在负环. 1 #include <iostream> 2 #include <cstr 阅读全文
posted @ 2021-05-06 18:13 acmloser 阅读(45) 评论(0) 推荐(0)
摘要:原题链接 考察:01分数规划+01背包 错误思路: 二分求最大值,check函数里对 t[i] - mid*w[i]排序,从大到小选,只要和为sum就一直选,最后检测选择的W是否>=m 这个思路错在不能从大到小选,因为存在t[i] - mid*w[i]很小,但是w[i]很大使原本从大到小的W>=m 阅读全文
posted @ 2021-05-06 16:37 acmloser 阅读(73) 评论(0) 推荐(0)
摘要:原题链接 考察:01分数规划 思路: 由奶牛观光所说,01分数规划基本是在考察二分与其他算法的结合.这里也可以化为累加 a[i] - mid*b[i] 注意原式子*100,所以mid需要/100 我们用C数组保存a[i] - mid*b[i]的值,然后选出最大的n-k个,如果和>=0就说明正确. 1 阅读全文
posted @ 2021-05-06 10:35 acmloser 阅读(53) 评论(0) 推荐(0)
摘要:原题链接 考察:二分+SPFA 引入:形如 ${\sum_1n f[i] \over \sum_1n g[j]}$求其最大值,称为01分数规划问题.通过二分最大值,检验解的存在性,这样的存在性具有单调性,所以可以用二分解决. 思路: 想到二分之后,我们可以假设最大值 = mid,对于每一个环,检验$ 阅读全文
posted @ 2021-05-06 01:12 acmloser 阅读(49) 评论(0) 推荐(0)
摘要:原题链接 考察:次小生成树 思路: yysy,切模板题很爽,但是莫得进步555 时间复杂度:O(T*(mlog2m+n2+m)) 1 #include <iostream> 2 #include <cstring> 3 #include <algorithm> 4 using namespace s 阅读全文
posted @ 2021-05-05 15:13 acmloser 阅读(52) 评论(0) 推荐(0)
摘要:原题链接 考察:次小生成树 思路: 模板题,这里我用的方法一,时间复杂度O(N*M+Mlog2m) 1 #include <iostream> 2 #include <cstring> 3 #include <algorithm> 4 #include <vector> 5 using namesp 阅读全文
posted @ 2021-05-05 13:25 acmloser 阅读(50) 评论(0) 推荐(0)
摘要:原题链接 考察:次小生成树 思路: 求免去费用道路两端玩具之和A/生成树权值B的最大值. 按贪心思想,应该是让B尽可能的小.对于A可以枚举每一条边,对于B是先求最小生成树的权值和. 如果免费的边在最小生成树中 ans = max(ans,A/最小生成树的权值和-road[i].w) 如果免费的边不在 阅读全文
posted @ 2021-05-05 13:00 acmloser 阅读(44) 评论(0) 推荐(0)

上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 36 下一页