首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
紫书 习题8-3 UVa 12545 (构造法)
】的更多相关文章
紫书 习题8-7 UVa 11925(构造法, 不需逆向)
这道题的意思紫书上是错误的-- 难怪一开始我非常奇怪为什么第二个样例输出的是2, 按照紫书上的意思应该是22 然后就不管了,先写, 然后就WA了. 然后看了https://blog.csdn.net/wcr1996/article/details/43774331 发现是题意是错误的. 是从1到n的排列变成给的排列, 而不是反过来 其他人的博客都是逆向思维来写, 也就是我原来写误打误撞的那样, 只不过操作反过来, 以及最后 输出是反的.这种方法很值得学习 其实正向也不难, 无非是设置了一种新的优…
紫书 习题 8-24 UVa 10366 (构造法)
又是一道非常复杂的构造法-- #include<cstdio> #include<algorithm> #define REP(i, a, b) for(int i = (a); i < (b); i++) using namespace std; const int MAXN = 1123; int L, R, LHs[MAXN], RHs[MAXN], LH, RH, LHi, RHi; int solve() { int lt = 0, rt = 0, t; for(i…
紫书 习题 11-8 UVa 1663 (最大流求二分图最大基数匹配)
很奇怪, 看到网上用的都是匈牙利算法求最大基数匹配 紫书上压根没讲这个算法, 而是用最大流求的. 难道是因为第一个人用匈牙利算法然后其他所有的博客都是看这个博客的吗? 很有可能-- 回归正题. 题目中只差一个数字的时候可以匹配, 然后求最少模板数. 那么肯定匹配的越多就越少, 也就是求最多匹配多少. 这个时候我就想到了二分图最大基数匹配. 那么很容易想到可以匹配的一组之间就连一条弧. 但问题是怎么分成两类??分类的目的是让同一类之间没有弧, 这样才是二分图. 后来发现因为匹配的一组只有一个数字不…
紫书 习题 11-9 UVa 12549 (二分图最小点覆盖)
用到了二分图的一些性质, 最大匹配数=最小点覆盖 貌似在白书上有讲 还不是很懂, 自己看着别人的博客用网络流写了一遍 反正以后学白书应该会系统学二分图的,紫书上没讲深. 目前就这样吧. #include<cstdio> #include<vector> #include<cstring> #include<queue> #include<algorithm> #define REP(i, a, b) for(int i = (a); i <…
紫书 习题 8-21 UVa 1621 (问题分析方法)
知道是构造法但是想了挺久没有什么思路. 然后去找博客竟然只有一篇!!https://blog.csdn.net/no_name233/article/details/51909300 然后博客里面又说貌似UVa数据有问题过不了, 而他的代码我也懂, 就没有自己写一遍了. 但是它这篇博客分析问题的方法很值得我学习. (1)简化问题.先分析只有1和2的简单情况, 然后就同理推出三了.我想的时候一直在三个一直 考虑, 所以把问题变的很复杂, 自然想不出来. (2)转化.这里在讨论三的时候试图把用三把前…
紫书 习题8-12 UVa 1153(贪心)
本来以为这道题是考不相交区间, 结果还专门复习了一遍前面写的, 然后发现这道题的区间是不是 固定的, 是在一个范围内"滑动的", 只要右端点不超过截止时间就ok. 然后我就先考虑有包含关系的时候怎么选, 然后发现当两个区间只能放一个的时候时间更短而截 至时间更长的时候,显然更优.然后我就试着每个区间放的时候后后面的比较, 如果两个区间只能放一个, 而且 下个区间更优, 那么当前的就不选.然后排除掉这些区间之后, 能选的就选. 交上去WA.然后我发现中间的区间排除了,但是前面和后面的区间…
紫书 习题8-3 UVa 12545 (构造法)
参考了https://blog.csdn.net/catglory/article/details/47188949 最后推出来操作的个数为问号的个数 加上 同一位置上S串为0而T串为1的位置数量 与 同一位置上S串为1而T串为0的位置数量的最大值. 也就是max(ans1 + ans2) + que (que为问号总数, 而ans1和ans2意义如上) 这个公式应该是众多博客里面最简单的了, 让我一步一步推给你看 首先判断可不可行, 如果S串1大于T串中1的个数那么就永远不行 因为S串中1的个…
紫书 习题 11-17 UVa 1670 (图论构造)
一开始要符合题目条件, 那么肯定没有任何一个点是孤立的, 也就是说没有点的度数是1 所以我就想让度数是1的叶子节点相互连起来.然后WA 然后看这哥们的博客 https://blog.csdn.net/trote_w/article/details/79504280 原来连叶子的时候, 有三个叶子的时候, 中间的留到下一次连,左右连起来. 我之前是直接按照顺序连. 按照顺序那么边可能会封闭在一颗子树里面, 比如一颗子树有两个叶子 ,然后他们互相连接. 这个时候把 子树的根 和 子树的根的父亲连的边…
紫书 习题 8-22 UVa 1622 (构造法)
这道题的构造法真的复杂--要推一堆公式--这道题写了几天了--还是没写出来-- 一开始简单的觉得先左右来回, 然后上下来回, 然后把剩下的执行完了好了, 然后就WA. 然后换了个思路, 觉得是贪心, 觉得只要保证当前留下的最多就ok了, 然后又WA. 这里不能每一步贪心, 因为当前最优不能保证以后是最优的. 然后找数据发现, 其实当留下的个数一样多的时候还要有格外的优先级,而且分很多种情况. 然后就去看了很多博客. 发现原来开始还要先判断往南北还是东西, 然后东西完了之后再每次判断南北还是西,…
紫书 习题 11-15 UVa 1668 (图论构造法)
参考了http://www.bubuko.com/infodetail-1276416.html 首先是逆向思维, 向把每条边看作一条路径, 然后再去合并 然后我们讨论怎么样合并时最优的 我们讨论当前的点u 那么首先直观感受, 因为如果要合并一次, 就需要两条边, 所以最多可以合并的不会超过度数(与其相连的边的总权值)的一半. 但这只是直观感受, 并不是所有的情况都可以合并的了这么多. 当与当前点相连的边中有一条边的权值大于度数的一半的时候, 不能合并 这么多. 比如说连了两条边, 一条边权值为…