随笔分类 -  OI

摘要:题意:给定一张平面图,求其最小割 题解:这里 #include <queue> #include <functional> #include <cstdio> #include <climits> #include <cstring> #include <cstdlib> #include <ios 阅读全文
posted @ 2017-02-28 22:21 WDZRMPCBIT 阅读(140) 评论(0) 推荐(0)
摘要:题意:初始时给定一张图,然后往图上不断加边,每次加边后询问最少需要删除多少条边,使得新加入的边可以出现在最小和最大生成树上 题解: 如果u,v之间不存在路径,直接塞进去就好,着重讨论一下之前已经存在路径的情况。(以下以最小生成树为例,最大生成树随便YY一下就出来了- -) 显然加入新的边之后会形成环 阅读全文
posted @ 2017-02-28 22:19 WDZRMPCBIT 阅读(214) 评论(0) 推荐(0)
摘要:题意:N*M的网格中有K个植物,每个植物可以保护一些格点,如果该植物没被吃掉,则被保护的格点不可到达,每个僵尸只能从最右边进入,从右往左吃,每个植物有一定价值,求一个吃植物的顺序使得被吃植物价值和最大。 题解: 最大权闭合子图+拓扑排序的说…… 首先根据保护关系建边,由保护指向被保护,保护关系有两种 阅读全文
posted @ 2017-02-28 22:16 WDZRMPCBIT 阅读(230) 评论(0) 推荐(0)
摘要:题意:给定N个用户和M个基站,每个基站有建设费用,每个用户由(a,b,c)描述,表示a b基站都建好后能获得c的收益,求最大获利 题解: 推荐论文:胡伯涛-《最小割模型在信息学竞赛中的应用》 然后说一下我的理解,我么按如下方式建图:每条边看作一个点,然后划分成二分图,左边一列是原图中的点也就是发送站 阅读全文
posted @ 2017-02-28 22:11 WDZRMPCBIT 阅读(138) 评论(0) 推荐(0)
摘要:题意:有N种食材,每种食材有两种烹饪方法,存在M组约束关系——A用哪种手法烹饪,B用哪种手法烹饪——问是否存在烹饪序列满足要求。 题解: 所谓2-SAT问题,是指我们有多个集合,每个集合里只有两个元素A,A'(或者是B,B' C,C'……),某些集合之间存在约束关系,比如说选了A就必须选B,选了B' 阅读全文
posted @ 2017-02-28 22:07 WDZRMPCBIT 阅读(175) 评论(0) 推荐(0)
摘要:题意:有N个问题和M种解法,每个问题可以用两种解法,每种解法只能用一次,求最多能解决的问题的数量 题解: 二分图裸题,另附二分图的一些性质: 1 最小覆盖: 最小覆盖要求用最少的点(X集合或Y集合的都行)让每条边都至少和其中一个点关联。可以证明:最少的点(即覆盖数)=最大匹配数 2 最小路径覆盖: 阅读全文
posted @ 2017-02-28 22:04 WDZRMPCBIT 阅读(152) 评论(0) 推荐(0)
摘要:题意:给定一个N*M的网格,每个格子均为白色或黑色,每次可以交换两行或两列,求是否可以通过有限次操作使得从左上到右下的对角线上所有的格子均为黑色 题解:首先,同一列上的格子无论怎么变换都在同一列上,同一行上的格子无论怎么变换都在同一行上,因此问题转化为求既不在同一列也不在同一行上的黑色格子的数量与N 阅读全文
posted @ 2017-02-28 22:01 WDZRMPCBIT 阅读(145) 评论(0) 推荐(0)
摘要:题意:给定一个由1-N不重复组成的序列a,再给出N个数的序列b,求是否存在一个序列c,使得任意一个位置i均满足(ai+bi)%N=ci || (ai-bi+N)%N=ci,并求字典序最小的c 题解: 任意一个ai只能变成两个数,所以我们可以建二分图看是否存在完全匹配来确定是否存在合法序列。 由于方案 阅读全文
posted @ 2017-02-28 21:57 WDZRMPCBIT 阅读(128) 评论(0) 推荐(0)
摘要:题意:给定一个有N个点的环,每个点上有一个数字,每次可以让一个点--然后左边或右边的点++,求最少操作次数 题解: 定义第i个熊孩子向他左边(也就是第i-1个熊孩子)传递的糖果数为Ci,根据题意最后每个熊孩子手里都有A=sum(ai)/n个糖果,因此:a1-C1+C2=a2-C2+C3=……=an- 阅读全文
posted @ 2017-02-28 01:56 WDZRMPCBIT 阅读(200) 评论(0) 推荐(0)
摘要:题意:有N个小矮人,他们从脚到肩膀的高度Ai,胳膊长度为Bi。陷阱深度为H。如果我们利用矮人1,矮人2,矮人3……矮人k搭一个梯子,满足A1+A2+A3+….+Ak+Bk>=H,那么矮人k就可以离开陷阱逃跑了,一旦一个矮人逃跑了,他就不能再搭人梯了,问最多可以使多少个小矮人逃跑。 题解: 由于不管怎 阅读全文
posted @ 2017-02-28 01:52 WDZRMPCBIT 阅读(204) 评论(0) 推荐(0)
摘要:题意:给定B,U和数组c,求在不超过U的情况下,从c中选择部分元素*(1或-1)使得B+所选元素之和最大 题解:太水不想说什么了- -,f[i][j]记录第i个歌曲能否到达音量j #include <cstdio> #include <cstring> #include <cstdlib> #inc 阅读全文
posted @ 2017-02-28 01:49 WDZRMPCBIT 阅读(183) 评论(0) 推荐(0)
摘要:题意:有一个长度为n的整数序列A,将其变为严格单增序列,求:1、最少需要改变多少个数 2、在改变的数最少的情况下,每个数改变的绝对值之和的最小值 题解: 第一问太水,a[i]-=i之后直接跑最长上升子序列即可。 第二问太神,完全没思路,正解 #include <cmath> #include <cs 阅读全文
posted @ 2017-02-28 01:44 WDZRMPCBIT 阅读(135) 评论(0) 推荐(0)
摘要:题意: 给出一个网格图,假设每个格子中有好多财宝,每次从左上角出发,只能向下或右走,而每一次经过一个格子至多只能捡走一块财宝,至少走多少次才能把财宝全部捡完。 题解: 为了方便我们将原矩阵处理一下,将每一行都反转,即swap(g[i][j],g[i][n-j+1])(读入g[i][j]的时候j=m- 阅读全文
posted @ 2017-02-28 01:41 WDZRMPCBIT 阅读(130) 评论(0) 推荐(0)
摘要:题意:对于一个给定的S={a1,a2,a3,…,an},若有P={ax1,ax2,ax3,…,axm},满足(x1 < x2 < … < xm)且( ax1 < ax2 < … < axm)。那么就称P为S的一个上升序列。如果有多个P满足条件,那么我们想求字典序最小的那个。任务给出S序列,给出若干询 阅读全文
posted @ 2017-02-28 01:38 WDZRMPCBIT 阅读(150) 评论(0) 推荐(0)
摘要:题意:一批货物从码头A运到码头B,需要n天才能运完,有的时候某个码头会无法装卸货物。这时候就必须修改运输路线,让货物能够按时到达目的地。修改路线会带来额外的成本。物流公司希望能够订一个n天的运输计划,使得总成本尽可能地小。 题解: 首先定义cost[i][j]=从第i天到第j天都可以使用的港口所组成 阅读全文
posted @ 2017-02-28 01:30 WDZRMPCBIT 阅读(145) 评论(0) 推荐(0)
摘要:题意:在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子。 题解: 对于任意一行,我们都可以将其压缩成一个二进制数,第a位是1表示放置国王,否则不放置。 定义f[i][j][k]为到第i行已经放置了j个 阅读全文
posted @ 2017-02-28 01:27 WDZRMPCBIT 阅读(120) 评论(0) 推荐(0)
摘要:题意:(没图不好说……) 题解: 自己计算出前三种方案后,发现和Catalan数的前三项契合,因此就当Catalan数写了,最后竟然过了- -。(结论就是多背几个数列还是有好处的) AC之后看了题解,才知道具体是怎么证的。 通过包含左下角那个方块的方块,可以将楼梯划成两个部分。也就是说,第i层楼梯和 阅读全文
posted @ 2017-02-28 01:16 WDZRMPCBIT 阅读(158) 评论(0) 推荐(0)
摘要:题意:求最小生成树 #include <cmath> #include <cstdio> #include <cstring> #include <cstdlib> #include <iostream> #include <algorithm> #include <queue> #include 阅读全文
posted @ 2017-02-28 01:14 WDZRMPCBIT 阅读(125) 评论(0) 推荐(0)
摘要:题意:给定一个数列,维护:1、区间求和 2、区间开根号 题解: 线段树,唯一的优化就是如果某区间的和为0和1,就不再向下进行更新。(注意long long) 另外动态开内存真的好慢- -,我的机子上3s(注意是s)才跑完一次,评测机T的不要不要的。 #include <cmath> #include 阅读全文
posted @ 2017-02-28 01:12 WDZRMPCBIT 阅读(158) 评论(0) 推荐(0)
摘要:题意:给定一个N*M的格点图,从(0,0)看最多能看到多少个点 题解: 首先,对于能够从左下角看到的座标(x,y),gcd(x,y)==1。然后就是求x=1->n,y=1->n且gcd(x,y)==1的坐标的数量。就是求x和y互质的坐标的数量。我们只保留左下角的三角形部分,那么就是求phi(i)(i 阅读全文
posted @ 2017-02-28 01:10 WDZRMPCBIT 阅读(130) 评论(0) 推荐(0)