自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

tlyzxc的博客

我看到到处是阳光,快乐在城市上空飘扬

  • 博客(17)
  • 收藏
  • 关注

原创 CodeForces 546E :Soldier and Traveling 网络流 +拆点

传送门题目描述题意大概就是给定 nnn 个城市,mmm 条边。 然后人只能从走相邻边相连的城市。 现在给你初始城市的每一个人数,再给一组每个城市人数。询问是否可以从当前人数变换到给定人数。如果能,输入“YES”并输出方案,不能则输出“NO”。分析我们去把每一个点拆成一个入点和一个出点,源点到入点连一条容量为aia_{i}ai​的边,出点到汇点连一条容量是bib_{i}bi​的边,然后每个点的入点和出点连一条容量为infinfinf的边,相连的两个星球之间连边,求最大流即可最后需要注意前后人数是否相

2021-03-29 10:45:53 91

原创 HDU - 3605: Escape网络流 + 状态压缩

分析这道题挺巧妙的看题干是一个裸的二分图匹配,但问题是点数已经到达了10610 ^ 6106的规模,众所周知dinicdinicdinic算法只能处理104∼10510 ^ 4 \sim 10^ 5104∼105之内的网络,所以我们得想办法去优化这个网络观察一下可以发现,左边的点数有10510 ^ 5105个,右边的点数有101010个,右边每一个点都对应着210(1024)2^{10}(1024)210(1024)种状态,所以,我们可以优化建图方式源点和每一种状态相连,流量为每一种状态出现的次数,

2021-03-27 19:42:17 114

原创 HDU - 3277: Marriage Match III 网络流拆点 + 二分 + 并查集

分析跟上一题差不多,把每个女生拆成两个点,如果男生女生之间可以配对就第一个点链接,不能配对就第二个点之间链接,最后两个点之间连一条流量是kkk的边代码#include <iostream>#include <cstring>using namespace std;const int N = 2010,M = N * N * 2;const int INF = 0x3f3f3f3f;int n,m,S,T,k;int h[N],ne[M],e[M],f[M],id

2021-03-27 14:55:31 75

原创 HDU - 3277: Marriage Match II 网络流 + 二分 + 并查集

分析二分一下可以跑xxx轮,然后源点到每一个女生连一条流量为xxx的边,每个男生到汇点连一条流量为xxx的边,最后可以配对的男女生之间连一条流量为111的边如果判断男女生之间能否配对呢,用邻接矩阵表示关系,然后用并查集判断两个女生之间的关系即可代码#include <iostream>#include <cstring>using namespace std;const int N = 2010,M = N * N * 2;const int INF = 0x3f

2021-03-27 14:37:19 58

原创 POJ - 3417 : Network LCA +树上差分

分析我们可以尝试去记录一下每一条附加边能覆盖多少主要边,这样,我们砍掉一条主要边,一条附加边就可以用树上查分维护就可以了,两个节点的权值+1,LCA的权值-2,最后判断是不是被唯一覆盖即可代码#include <iostream>#include <cstring>#include <algorithm>#include <cstdio>#include <queue>using namespace std;const in

2021-03-24 12:07:33 105

原创 POJ - 3728 :The merchant 在线LCA + 倍增

分析设z=lca(x,y);z = lca(x,y);z=lca(x,y);三种情况1.1.1.从zzz点前买入,zzz点后卖出2.2.2.从zzz点前买入,zzz点前卖出3.3.3.从zzz点后买入,zzz点后卖出所以我们需要倍增维护每个点的2i2 ^ i2i的各种信息即可代码#include <iostream>#include <cstring>#include <algorithm>#include <cstdio>usin

2021-03-24 01:14:30 74

原创 CodeForces 1484C : Basic Diplomacy 网络流

传送门题目描述给你nnn个小朋友,你需要在mmm天内每天选一名小朋友,每个小朋友被选中的次数不能超过⌈mx⌉\lceil \frac{m}{x} \rceil⌈xm​⌉,每一天只能选择给定的几个小朋友,问你最后是否有合法方案分析这个题正解应该是贪心,但是网络流可以直接秒我们从SSS点到1~n1 ~ n1~n每一个点连一条流量为⌈mx⌉\lceil \frac{m}{x} \rceil⌈xm​⌉ 的边,1~n1 ~ n1~n每一个点到(n+1)~(n+m)(n + 1) ~ (n + m)(n+1)

2021-03-23 16:15:47 189 3

原创 CodeForces 489E : Hiking 01分数规划

传送门题目描述分析01分数规划的板子题我们二分一个midmidmid∑∣l−r∣∑b=mid\frac{\sum \sqrt{\lvert l-r\rvert}}{\sum b} = mid∑b∑∣l−r∣​​=mid ,变形可得∑∣l−r∣=mid∗∑b\sum \sqrt{\lvert l-r\rvert} = mid * \sum b∑∣l−r∣​=mid∗∑b∑∣l−r∣−mid∗∑b=f(mid)\sum \sqrt{\lvert l-r\rvert} - mid * \sum

2021-03-20 15:35:17 110

原创 POJ - 3228:Gold Transportation 网络流 + 二分

分析求最大值的最小值,所以就应该是用二分来做我们可以建立一个源点和汇点,源点到每一个点的流量为每个点的黄金数量,每个点到汇点的流量为每个点的黄金储存量,然后二分距离建图,判断汇点的流量是否等于源点的流量即可代码#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>using namespace std;const int INF = 0x3f3

2021-03-18 16:35:53 67

原创 CodeForces 1496D :Let‘s Go Hiking 博弈

传送门题目描述有一个长度为nnn的排列pnp_{n}pn​,首先QingshanQingshanQingshan选择一个数aaa,DanielDanielDaniel选择另一个数bbbQingshanQingshanQingshan先手,移动到相邻的位置a′a'a′(pa′<pa,a′≠b)(p_{a'} < p_{a},a' \neq b)(pa′​<pa​,a′​=b),然后DanielDanielDaniel移动到相邻的位置b′b'b′(pb′>pb,b′≠a′)(p

2021-03-18 11:28:49 92

原创 CodeForces 1467D :Sum of Paths DP + 贡献

传送门题目描述一个长度为nnn的线段,每个点都有一个价值aia_{i}ai​,每经过这个点都会加上这个点的值,你可以从任意点开始,每次可以向左移动一格或者向右移动一格,问你移动mmm次,所有可能的路径的的值的和是多少qqq次修改,每次都会修改一个点的aia_{i}ai​分析因为涉及到所有的方案,而这个数据范围肯定不会把每条路线弄出来,所以我们可以想办法把把这个路线给抽象出来我们可以计算出每个点的贡献,也就是每个点经过的次数 f[j][i] = (f[j - 1][i - 1] + f[j +

2021-03-09 16:32:08 72

原创 POJ - 3635 :Full Tank? 最短路 + 拆点

分析跟前段时间看的一个拆点求邻接矩阵快速幂的一个题有点像这个题比较朴素的方法就是我把每个点剩余jjj单位的汽油的最低花费处理出来,然后这样写毫无疑问会tle,所以我们需要去进行一些优化首先我们思考一下这个朴素的思想为什么会超时,因为很多状态我们并不需要,但是我们把他处理出来了,所以,我们要尽量缩减我们所需要的状态我们可以把每个单位的汽油看成一个状态,每一步进行两步操作,先给当前状态加一单位的油,或者不加油直接走,用优先队列维护所有状态中花费最少的状态即可,这样就避开了大量的不需要的状态的计算代码

2021-03-09 12:53:16 378

原创 2020 ICPC 上海站

第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(南京)B:MineSweeperII\mathbf{B:Mine Sweeper II}B:MineSweeperII题目大意分析代码C:SumofLog\mathbf{C:Sum of Log}C:SumofLog题目大意分析代码D:Walker\mathbf{D:Walker}D:Walker题目大意分析代码G:Fibonacci\mathbf{G:Fibonacci}G:Fibonacci题目大意分析代码M:Gitignore\mathbf{M

2021-03-08 19:31:43 331

原创 CodeForces 1462E2 :Close Tuples (hard version) 组合数学

传送门题目描述在一个长度为nnn的区间内选mmm个数,要求这mmm个数的最大值和最小值的差大于等于kkk,问有多少种组合情况分析数据范围不大,我们可以记录一下每一个数字出现的次数,然后从小到大开始枚举,枚举到的数字必选,然后在从区间范围内选若干个数字即可这道题卡memsetmemsetmemset是真的狗代码#pragma GCC optimize(3)#include <bits/stdc++.h>#define debug(x) cout<<#x<<

2021-03-04 12:09:11 118 1

原创 CodeForces 1203F2 :Complete the Projects (hard version) 思维

传送门题目描述给定任务个数nnn和初始值rrr,完成每个任务需要有aia_{i}ai​的rrr值,完成后rrr值会改变bib_{i}bi​,问最多能完成多少任务(要保证最后r>=0r>=0r>=0)分析分情况讨论一下,把ai≥0a_{i} \ge 0ai​≥0 he ai<0a_{i} < 0ai​<0的情况分开讨论如果ai≥0a_{i} \ge 0ai​≥0,把aia_{i}ai​从小到大排序,然后去判断能完成多少任务如果ai<0a_{i} <

2021-03-03 22:03:58 89 1

原创 CodeForces 1367E :Necklace Assembly 思维

传送门题目描述给你一个字符串,你从中挑选一些让它们成为一个环,使得这个环朝一个方向转kkk下,与原来看起来一样,找到你能够满足这个条件的可以挑选的最多的字符数量。分析我们去枚举kkk的因子,那么我转过一个kkk,等于转过若干个因子,所以这个相当于循环节的长度,有了循环节,我们只需要去枚举有多少个循环节即可代码#pragma GCC optimize(3)#include <bits/stdc++.h>#define debug(x) cout<<#x<<"

2021-03-02 09:38:30 114

原创 CodeForces 1360H : Binary Median 思维+ 二分

传送门题目描述一共有2m2 ^ m2m个长度为mmm的二进制数,现在要删去nnn个长度为mmm的二进制数,求剩下的所有数中的中位数的二进制形式是多少分析今天上线突然发现有一场d3没补完,点开来看了看感觉,,好水啊我们去暴力把每一个二进制数转化成十进制,然后计算一下如果无视这nnn个数,2m−n2 ^ m - n2m−n的中位数是多少,判断二分一下有多少删除数字在0∼(2m−n)0 \sim (2 ^ m - n)0∼(2m−n)之间,然后往后挪即可,因为nnn最大为606060,所以最多挪动60

2021-03-01 11:04:06 95

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除