ACM杂项
poj,洛谷各种结题经验
Ordinary_yfz
知乎个人主页zhihu.com/people/zyf-98-4,现在涉及CV,transfer learning,unsupervised,GAN,REID,OOL很多研究方向,会经常写一些综述/论文阅读笔记。
展开
-
poj1723 Soldiers(中位数)
题目链接题意给出n个点的坐标,它们只能往上、下、左、右一格一格地移动,求使其移动至水平线上的最小步数。题解因为我们最终安排的纵坐标是固定的,设纵坐标为yyyyyy,那么我们希望min∣y[i]−yy∣\min |y[i]-yy|min∣y[i]−yy∣,这是一个货仓选址问题,yyyyyy取y[N]y[N]y[N]中位数的时候该值最小。 sort(y, y + N); if (N % 2 == 1)yy = y[N / 2]; else yy = (y[N / 2 - 1] + y[N转载 2020-06-23 11:13:45 · 217 阅读 · 0 评论 -
Poj 2013 Sequence【贪心|迭代】
题目链接开始时取b[i]=a[i](1<=i<=n)b[i] = a[i](1 <= i <= n)b[i]=a[i](1<=i<=n)若存在iii使b[i]<>Mid(b[i−1],a[i],b[i+1])(2<=i<=n−1)b[i] <> Mid(b[i - 1], a[i], b[i + 1]) (2 <= i <= n - 1)b[i]<>Mid(b[i−1],a[i],b[i+1])(2<转载 2020-06-23 08:59:16 · 166 阅读 · 0 评论 -
3295-Tautology【递归构造|位运算枚举】
K, A, N, C, E题目中代表,且,或,非,C不知道叫什么,但是根据题中给的表如果w为0,x为1就是0,否则就是1,E代表是否相等,相等就是1,p,q,r,s,t是题目中给的元素。思路:递归枚举每一个字母,将其分为运算符与操作数两类,遇到操作数时返回该操作数本轮的值,遇到运算符时返回运算结果。递归就像栈一样,因此总是与操作数最近的运算符会先运行,即符合我们需要的顺序。#define ll long long#define vec vector<int>#define P pair.原创 2020-06-07 15:23:25 · 244 阅读 · 0 评论 -
1363:Rails:(stack)判断入栈出栈是否合法
题目大意题目以1,2,3,,,n的顺序入栈,问你出栈的顺序合不合法。思路分析怀疑自己题解看多了,现在独立思考的能力越来越差,基础的数据结构使用都很不自信,照这样下去机考要凉啊/(ㄒoㄒ)/~~输入数组记为aaa,其实就是将1-N依次入栈,使用两个指针i,ji,ji,j分别记录当前到了数iii入栈,要判断的是a[j]a[j]a[j],如果栈顶元素和a[i]a[i]a[i]相等,说明对上了,i...原创 2020-04-07 14:30:12 · 221 阅读 · 0 评论 -
1611 The Suspects:新冠肺炎来了!并查集简单使用+并查集基础附送
题目大意题目链接严重急性呼吸道综合症(SARS)是一种病因不明的非典型肺炎,在2003年3月中旬被认为是全球性威胁。为了最大程度地减少向他人的传播,最好的策略是将嫌疑犯与其他人分开。在不蔓延疾病大学(NSYSU)中,有很多学生团体。 同一组中的学生经常互相交流,一个学生可以加入多个组。 为了防止可能的SARS传播,NSYSU收集所有学生团体的成员列表,并在其标准操作程序(SOP)中制定以下规...原创 2020-04-03 20:25:52 · 334 阅读 · 0 评论 -
2524:Ubiquitous Religions:宗教信仰:并查集简单使用+并查集基础附送
题目大意世界上有许多宗教,你感兴趣的是你学校里的同学信仰多少种宗教。你的学校有n名学生(0 < n <= 50000),你不太可能询问每个人的宗教信仰,因为他们不太愿意透露。但是当你同时找到2名学生,他们却愿意告诉你他们是否信仰同一宗教,你可以通过很多这样的询问估算学校里的宗教数目的上限。你可以认为每名学生只会信仰最多一种宗教。输入输入包括多组数据。每组数据的第一行包括n和m...原创 2020-03-31 13:50:18 · 306 阅读 · 0 评论 -
POJ 1001 Exponentiation:大数乘法
大数相乘问题1.将输入的字符串转化化成整型存储在number 中,运算时每次乘以number2.将输入的字符串逆向存储在整型数组a[]中,用于存储每次乘以number后的结果3.具体运算过程就是求number的n次方,每次运算以a[]中的每一位数字乘上number4.用point计算小数的位数,输出时逆序输出a[],并且处理小数个数即可#include <stdio.h>#...转载 2020-03-10 22:55:13 · 184 阅读 · 0 评论 -
空间平面计算集合(一):空间线段相交判定(思想+模板)
判断 2 个线段相交有很多方法,最直接的方法就是直接计算两条直线的交点,然后看看交点是否分别在这两条线段上。这样的方法很容易理解,但是代码实现比较麻烦。还有一种常用的方法是通过向量叉积来判断的,这种方法不需要算出直线方程,在代码实现上比较简便。用这种方法判别线段是否相交一般分为两步:快速排斥实验跨立实验快速排斥实验我们首先判断两条线段在 x 以及 y 坐标的投影是否有重合。也就是...转载 2020-03-05 12:27:07 · 3456 阅读 · 0 评论 -
逆序对问题小计-爆搜,分治(Poj 1007,洛谷 P1908 逆序对)
求逆序对是一个经常遇到的问题,很久之前做过一道,今天又遇到一个类似的,用了大半个小时才把分治写好,写篇文章记录一下。典型题-Poj 1007爆搜这道题由于数据范围很小,简单的暴力搜索也可以AC。对字符串中每一个字符,都要遍历其后的所有字符,统计逆序对,O(n2)O(n^2)O(n2)#include<iostream>#include<cmath>#inclu...原创 2020-03-05 11:04:48 · 193 阅读 · 0 评论 -
POJ刷题顺序
转载一份刷题顺序激励自己准备夏令营https://blog.csdn.net/thestoryofsnow/article/details/40942009POJ从简到难(按照AC数目排序)的列表如下,作为小弱的刷题顺序。大牛们可以看后面倒排的hard表,还有四道题没人拿到first blood.表格属性依次为:ID,Title, Ratio, AC, Submit1000 A+B Prob...转载 2020-03-03 23:02:05 · 5741 阅读 · 0 评论 -
Poj 2135:Farm Tour-最小费用流模板题
如果只考虑去或者回的情况,那么问题只不过是无向图中两点之间的最短路问题而已。但现在既要去又要回,并且有不能经过相同的道路这一限制。那么,如果先计算去时的最短路,然后将所用的道路删去,再在剩下的图上计算回来时的最短路,这样是否可行呢?应该马上就能找到反例证明该方法不总能得到最优结果吧。于是,我们放弃把问题当作去和回的这种想法,转而将问题当作求从1号顶点到NNN号顶点的两条没有公共边的路径又如何呢?...原创 2020-03-03 10:42:32 · 205 阅读 · 0 评论 -
POJ-3496 Dual Core CPU:最小割建模CPU调度
用最小的费用将对象划分成两个集合的问题,常常可以转换成最小割后顺利解决。这道题目就是这类问题的一个经典例子。考虑把NNN个模块按照在哪个核上执行分成两个集合。记在核AAA上执行的模块集合为SSS 而在核BBB上执行的模块集合为TTT考虑以模块为顶点,并且还有额外的源点sss和汇点ttt的图。我们也记图的 s−ts-ts−t割所对应的包含sss的顶点集合为SSS,包含ttt的集合为TTT然后来考...原创 2020-03-03 09:34:51 · 192 阅读 · 0 评论 -
网络流学习笔记(4):Dinic 算法详解+代码模板
之前介绍过求解最大流的一种方法:Ford - Fulkerson 算法,大多数情况下这个算法已经足够高效了,但当顶点数或最大流流量非常大时,这个算法就显得不够快了。事实上,与其守着一个算法过日子,不如多学几个,万一用到了就赚了,介绍一下实现起来比较简单,实际运行也比较快速的 Dinic 算法。Ford-Fulkerson 算法是通过深度优先搜索寻找增广路,并沿着它增广。与之相对,Dinic 算法...原创 2020-03-02 22:44:28 · 871 阅读 · 0 评论 -
POJ3281-Dining 最大流解决匹配问题
如果只是分配食物的话,那么用二分图最大匹配就能够解决了。但遇到这种需要同时给一头牛分配所喜欢的食物和饮料的情况,就不能很好的处理了。不过,我们可以将食物和饮料所对应的两个匹配通过下面的方法联合起来求解。图的顶点在食物对应的匹配中的食物和牛,饮料对应的匹配中的饮料和牛之外,还有一个源点sss和一个汇点ttt在两个匹配相同的牛之间连一条边,在sss和所有食物,ttt和所有饮料之间连一条边边的...原创 2020-03-02 21:21:50 · 457 阅读 · 0 评论 -
POJ 3041-Asteroids-小行星二维快速打击:二分图最小顶点覆盖
原题链接光束的攻击选择可以是横坐标从x=1x=1x=1到x=Nx=Nx=N和纵坐标从y=1y=1y=1到y=Ny=Ny=N, 一共2N2N2N种。显然,同样的选择没有必要执行多次,而攻击的顺序对结果没有影响,所以总的攻击方案共有22N2^{2N}22N。我们只要在这个解空间中,寻找能够摧毁所有小行星的最小的解就可以了。要破坏某个小行星,只能通过对应水平方向或竖直方向的光束的攻击。利用攻击方法只...原创 2020-03-02 19:03:14 · 300 阅读 · 0 评论 -
网络流学习笔记(3):最小费用流与其反向弧详解+算法模板
关于最小费用流反向边的花费为什么是负数的较为详细的解释,与超详细注释的代码和图例。原创 2020-03-02 15:41:01 · 1258 阅读 · 0 评论 -
图的匹配--二分图,一般图以及二分图的边覆盖、独立集和顶点覆盖
最经典的二分图匹配问题:这个问题可以像下面这样转化为图论模型来分析。我们可以像下面这样来定义无向二分图,G=(U∪V,E)G=(U\cup V, E)G=(U∪V,E)。UUU是代表计算机的顶点集合,VVV代表任务的顶点集合,对于任意的u∈Uu\in Uu∈U,v∈Vv\in Vv∈V,计算机uuu能处理任务vvv,那我们就在u,vu,vu,v之间连一条边,(u,v)∈E(u,v)\in E...原创 2020-03-02 15:24:52 · 1804 阅读 · 0 评论 -
网络流学习笔记(2):最大流问题的各种变体
多源点多汇点我们已经介绍了如何求解恰有一个源点和一个汇点的网络流。那么,如果有多个源点和汇点,并且它们都有对应的最大流出容量和流入容量限制时该怎么做呢?答案很简单,只要增加一个超级源点sss和一个超级汇点 ttt,从sss 向每个源点连一条容量为对应最大流出容量的边,从每个汇点向 ttt连一条容量为对应最大流入容量的边。不过,如果源和汇之间存在对应关系(从不同源点流出的流要流入指定的汇点)时,是...原创 2020-03-02 14:58:11 · 3492 阅读 · 0 评论 -
矩阵快速幂详解--用矩阵幂解决的多种问题
最经典的题目以及洛谷一大堆相似题斐波那契升级版,广义斐波那契等等,都是相关的题目。一般而言我们求解斐波那契无非是不断地向前迭代,但是这样的效率实在是太低了。对于nnn的规模如此之大的题目应该如何求解呢?可能有人会认为通过递推式求出通项,就可以求解了。可是斐波那契数列的通项公式是这谁能找出个规律来,由于式中包含无理数,无法简单求得模之后的结果。况且,在其他问题中有一些很难直接求得通项公式。不...原创 2020-03-01 16:43:13 · 1624 阅读 · 0 评论 -
状态压缩DP(2)--Poj2686 TRSTAGE - Traveling by Stagecoach
原题链接题目大意有一个旅行家计划乘马车旅行。他所在的国家里共有 mmm 个城市,在城市之间有若干道路相连。从某个城市沿着某条道路到相邻的城市需要乘坐马车。而乘坐马车需要使用车票,每用一张车票只可以通过一条道路。每张车票上都记有马的匹数,从一个城市移动到另一个城市的所需时间等于城市之间道路的长度除以马的数量的结果。这位旅行家一共有nnn张车票,第iii张车票上的马的匹数是tit_iti, 一...原创 2020-03-01 12:44:44 · 205 阅读 · 0 评论 -
初学状态压缩DP
所谓的状态压缩DP,一般指的是针对集合的DP,特别地,对于集合我们可以把每一个元素的选取与否对应到一个二进制位里,从而把状态压缩成一个整数,大大方便了计算和维护。关于集合的整数表示看这里。最经典的问题当属于旅行商问题洛谷也有类似的状态压缩的栗子题TSP问题是NP困难的,没有已知的多项式时间的高效算法可以解决这一问题。不过在程序设计竞赛中还是有可能出现这种范围较小的题目的。所谓的s&g...原创 2020-03-01 11:04:23 · 298 阅读 · 0 评论 -
集合的整数表示
在稍微有难度一点的动态规划或者其他问题中,经常会使用用整数表示集合。在程序中表示集合的方法有很多种,当元素数比较少时,像这样用二进制码来表示比较方便。集合{0,1,2,...,n−1}\{0,1,2,...,n-1\}{0,1,2,...,n−1}的子集SSS可以用如下方式编码。f(S)=∑i∈S2if(S)=\sum_{i\in S}2^if(S)=∑i∈S2i,即{0,1,10,100,....原创 2020-03-01 10:26:43 · 1912 阅读 · 0 评论 -
POJ-1222:EXTENDED LIGHTS OUT-翻转灭灯问题-非高斯消元
首先有一定的反转问题的基础基础反转原题传送题目大意灭灯:有6 * 5的灯,一把下去可能关掉或点亮上下左右中5个灯,希望灭掉所有的灯,求灭灯方案。灭灯思路乍一看蛮复杂的,其实可以从第一行开始,先确定第一行的灭灯策略,然后从第二行开始分析,如果(i−1,j)(i-1,j)(i−1,j)位置是没关的,那么(i,j)(i,j)(i,j)位置就必须关,只有他能影响到(i−1,j)(i-1,j)(i...原创 2020-02-28 17:52:34 · 442 阅读 · 0 评论 -
尺取法小计
尺取法简介尺取法:顾名思义,像尺子一样取一段,借用挑战书上面的话说,尺取法通常是对数组保存一对下标,即所选取的区间的左右端点,然后根据实际情况不断地推进区间左右端点以得出答案。之所以需要掌握这个技巧,是因为尺取法比直接暴力枚举区间效率高很多,尤其是数据量大的。那么,用”尺取法“做上面这道题思路应该是这样的:其实,这种方法很类似于蚯蚓的蠕动。1)用一对脚标i,ji, ji,j。最开始都指向第...原创 2020-02-28 08:53:44 · 227 阅读 · 0 评论 -
二分搜索总结
所谓二分法,在C++ STL中就一句话,lower_boundlower\_boundlower_bound,但是写了几道题,发现真正使用的时候其实充满了技巧。假定一个解并判断是否可行的问题最大化最小值的问题这两个问题其实联系很大,他们有着共同的思路,即(1)将所要求的结果当做二分查找的对象,确定[l,r][l,r][l,r]区间,(2)确定某个mid=(l+r)>>1m...原创 2020-02-27 11:33:44 · 235 阅读 · 0 评论 -
Aggressive cows (POJ No.2456)--二分法例题
题意农夫约翰搭了一间有;NNN间牛舍的小屋。牛舍排在一条线上,第 iii号牛舍在 xix_ixi的位置。但是他的 MMM头牛对小屋很不满意,因此经常互相攻击。约翰为了防止牛之间互相伤害,因此决定把每头牛都放在离其他牛尽可能远的牛舍。也就是要最大化最近的两头牛之间的距离。2≤N≤1000002\leq N\leq 1000002≤N≤1000002≤M≤N2\leq M\leq N2≤M≤...原创 2020-02-27 10:51:43 · 327 阅读 · 0 评论 -
POJ-1064:网线主管 二分搜索
原题传送门题目大意有 NNN条绳子,它们的长度分别为 lil_ili,如果从它们中切割出KKK条长度相同的绳子的话,这些绳子每条最长能有多长?答案保留到小数点后 2位解题思路白书中所谓典型的二分搜索题,左边界从0开始,右边界从所有绳子中最长的开始,每次统计(l+r)/2(l+r)/2(l+r)/2能切割出来多少绳子,注意以下事项:(1)由于要保留满足条件的最大长度,因此如果在midmi...原创 2020-02-27 09:58:54 · 456 阅读 · 1 评论 -
并查集小计
最近写到一道并查集的题,发现自己记得还是不太清楚,写一篇加深记忆并查集–合并与查询元素分组并查集是一种用来管理元素分组情况的数据结构,并查集可以高效地进行一下两种操作:查询两个元素是否在同一组合并两个元素所在的组不过并查集虽然可以进行合并操作,却无法进行分割操作,需要注意结构:树形结构-每组对应一颗树每个元素对应一个节点,每个组对应一棵树。在并査集中,哪个节点是哪个节点的父亲以...原创 2020-02-25 08:41:33 · 308 阅读 · 0 评论 -
POJ-1703:发现它,抓住它 -关系并查集的基本运用+坑点分析
又写了一个并查集,runtime error多次,最后玄学AC。原题传送门这道题其实与食物链题解非常之像难度比食物链稍低,这里的难点在于并查集只能进行集合之间的合并,如何操作能正确的合并不同组的犯罪团伙呢?答案是开两倍的数组,0-nnn的kind[i]kind[i]kind[i]表示iii属于一类罪犯,n+1−2nn+1-2nn+1−2n的kind[i]kind[i]kind[i]表示ii...原创 2020-02-25 09:53:58 · 1174 阅读 · 1 评论