随笔分类 -  杂--贪心

该文被密码保护。
posted @ 2022-06-28 16:30 __Anchor 阅读(0) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2022-06-25 11:06 __Anchor 阅读(0) 评论(0) 推荐(0)
摘要:A - Cookie Exchanges 看到这种题一般能想到直接枚举一定次数,不行就输出无解。 可以证明是 \(\log n\) 次,没想过证明。 B - Unplanned Queries 观察样例容易发现,或者这类题我好像见过类似的,结论就是如果所有端点都被取偶数次,那么就是可行的,反之不行。 阅读全文
posted @ 2022-01-13 20:53 __Anchor 阅读(104) 评论(0) 推荐(0)
摘要:A - Sorted Arrays 直接贪心地从前往后取即可。 B - Hamiltonish Path 考虑随便取一条路径 \((u,w_1,w_2,w_3,...,w_k,v)\) 。 那么我们对于 \(v\) 的所有没取过的点,随便选一个取下去即可,这样一定会有终点。 然后对于 \(u\) 同 阅读全文
posted @ 2022-01-10 21:09 __Anchor 阅读(62) 评论(0) 推荐(0)
摘要:树上最小路径覆盖 不交路径覆盖 树形dp或者贪心。 可交路径覆盖 经典结论:叶子数量除以二上取整,贪心即可。 DAG最小路径覆盖 不交路径覆盖 现在有这样一个问题:给出一个DAG,求最少多少条不相交路径可以将其覆盖。 解决办法是建立这样一个图,对每个点拆点 \(x,x+n\) ,然后对于每条边 \( 阅读全文
posted @ 2022-01-05 15:13 __Anchor 阅读(144) 评论(0) 推荐(0)
摘要:题目 链接:https://xjoi.net/contest/3536/problem/2 SDOI2009 消防 树网的核线性版本 分析 经典题,有结论:选取的路径一定在直径上。 于是就很好做了,直接dp一下然后再双指针在直径上求一下即可。 代码 #include<bits/stdc++.h> u 阅读全文
posted @ 2021-12-24 18:48 __Anchor 阅读(43) 评论(0) 推荐(0)
摘要:题目 分析 首先发现大的字母如果存在对于小的字母的删除来说一定不优,于是想到可以直接枚举字母 \(z\) 到 \(a\) 依次删除。 删除的过程可以用链表模拟也可以直接 \(vector\) 暴力。 代码 #include<bits/stdc++.h> using namespace std; // 阅读全文
posted @ 2021-11-29 08:52 __Anchor 阅读(44) 评论(0) 推荐(0)
摘要:题目 CF883D Packmen Strike Back 分析 没看懂题意题。 注意,这里说的结束是可以在任意时间结束,即最优显然是在吃到最后一个的时候结束。(直接导致我做法假了) 回到原题。 首先题目很显然是只要有两个人就能全部拿到,所以我们特判一下只有一个人的情况就行了。 然后我们发现这个最短 阅读全文
posted @ 2021-10-28 21:33 __Anchor 阅读(82) 评论(0) 推荐(0)
摘要:题目 CF1336B Xenia and Colorful Gems 分析 nt题,vp时给我wa吐了。 显然可以想到直接枚举第一个数,然后二分第二个数(并枚举几个),然后二分第三个数(再枚举几个)。 然后发现这个玄学做法过不了。 我们发现其实本质就是三个数 \(x,y,z\) 的大小关系,一共六种 阅读全文
posted @ 2021-10-27 21:06 __Anchor 阅读(34) 评论(0) 推荐(0)
摘要:题目 CF1336A Linova and Kingdom 分析 首先很容易想到可以贪心,每次一定先选深度更深的。 于是我们直接 \(dfs\) 一下再排个序取前k大的点就行了。 然后发现假了。 冷静思考一下,发现对于不是叶子的节点如果我们选了会导致我们的贡献减少,因为会“站位”,而且在选这个节点之 阅读全文
posted @ 2021-10-27 21:02 __Anchor 阅读(41) 评论(0) 推荐(0)
摘要:题目 P7915 [CSP-S 2021] 回文 分析 其实想得暴力一点就能发现正解。。。考场上看都没看就是个暴力爬了。。 我们发现,如果第一个数确定了,那么最后一个也就确定了,如果第二个数确定了,那么倒数第二个数也就确定了。 那么我们可以想到,假设现在已经确定了第一个,第二个数显然有两种可能,而倒 阅读全文
posted @ 2021-10-27 20:52 __Anchor 阅读(142) 评论(0) 推荐(0)
摘要:题目 CF1186F Vus the Cossack and a Graph 分析 直接贪心。先定义“需要度数”就是题目中的 \(f\) 。 策略就是每次在优先队列里面找到当前 \(f\) 最小的点,然后遍历出边,并对这些节点按照当前的 \(f\) 再次排序,选取 \(f[v]\) 较大的 \(f[ 阅读全文
posted @ 2021-10-26 20:49 __Anchor 阅读(43) 评论(0) 推荐(0)
摘要:题目 CF700B Connecting Universities 分析 显然是可以直接对于每一条边贪心匹配,也就是对于一条边假设其两点的权值是 \(val[u],val[v]\) ,那么这条边的贡献就是两者较小值。 貌似没有证明为什么一定可以这样选到,但是直接yy一下也确实是这样?不太理解。 实现 阅读全文
posted @ 2021-10-26 20:43 __Anchor 阅读(35) 评论(0) 推荐(0)
摘要:题目 CF1271D Portals 分析 直接讲 \(n\log n\) 做法,没看 \(dp\) 的 \(n^2\) 。 首先我们肯定可以想到这样的一个策略:先尽可能的多攻打,最后再回来考虑到底可以安插多少个获取得分。 而阻止我们安插的其实就是在当前点之后攻占所有城市需要的“已有兵力-需要兵力” 阅读全文
posted @ 2021-10-26 20:40 __Anchor 阅读(40) 评论(0) 推荐(0)
摘要:题目 BSOJ6325【10.17题目】异或doubt 分析 21.10.20考试T1。 首先看到字典序,容易想到按位贪心,然后看到异或容易想到trie/线性基。 于是考虑一个naive的trie的做法,对A建立trie,然后对于每一个B查询异或最小值,全部放进一个小根堆,每次取出堆顶作为当前的c, 阅读全文
posted @ 2021-10-20 20:16 __Anchor 阅读(106) 评论(0) 推荐(0)
摘要:题目 CF101D Castle 分析 期望其实就是求这个平均值。 显然并不能直接贪心,因为涉及到某一个子树可以只走一次。(其实本质是某一条链会只走一次,不用返回根节点) 于是可以考虑 \(dp\) ,既然刚刚说到这个问题,我们就可以直接这样设,那么状态就是 \(dp[x]\) 表示 \(x\) 这 阅读全文
posted @ 2021-10-18 11:26 __Anchor 阅读(45) 评论(0) 推荐(0)
摘要:题目 CF549G Happy Line 分析 排序,性质。 这道题告诉了我们大眼观察法的重要性。 我们发现,无论怎么交换,每一个元素对应的 \(a_i+i\) 总是一个定值。 那么显然交换到最后的最好情况就是所有的值按照从小到大有序。 然后考虑什么情况下无解,显然,如果在最终的序列当中出现了两个相 阅读全文
posted @ 2021-09-15 11:28 __Anchor 阅读(86) 评论(0) 推荐(0)
摘要:题目 CF486B OR in Matrix 分析 首先可以发现,如果有 \(B[i][j]=0\) 那么必然有 \(A\) 的 \(i\) 行和 \(j\) 列都是 \(0\) 。 于是我们可以考虑把这些必须为 \(0\) 的点全部换成 \(0\) ,剩下的能放 \(1\) 就放 \(1\) 然后 阅读全文
posted @ 2021-09-14 09:34 __Anchor 阅读(42) 评论(0) 推荐(0)
摘要:题目 CF484A Bits 给定一个区间,求出这个区间当中二进制表示下 \(1\) 最多的数。 分析 牛逼贪心。 考虑如何得出这个数,直接构造? 因为还要要求最小,似乎并不好直接构造,于是我们可以考虑直接给 \(l\) 的每一位或上 \(1\) ,看能不能行,可以就或上 \(1\) ,不可以就不变 阅读全文
posted @ 2021-09-14 08:45 __Anchor 阅读(65) 评论(0) 推荐(0)
摘要:题目 CF140C New Year Snowmen 给 \(n\) 个雪球,每次从中选出三个半径严格递增的雪球做成雪人,求最多能做多少个。 分析 最开始十分 \(naive\) 地想分成三组来做,然后其实发现只要是选了三个不同种类的,总是可以做一个雪人。 于是考虑贪心,先把尽可能多的选掉同一类雪球 阅读全文
posted @ 2021-09-14 08:29 __Anchor 阅读(63) 评论(0) 推荐(0)