
ACM_专项训练
文章平均质量分 60
大二下的一段时间,大概5个月,是两年里面训练最系统的时候,也是进度最快的时候,就是那个时候,平均每天的工作时间也不过6小时上下。
I_have_a_world
这个作者很懒,什么都没留下…
展开
-
FZU-2050-Fire Game
传送门!!!!没提交上,只是写下自己的想法。题意:给定一个n*m的图形(1~10),只包含'#'和'.'。保证至少含有一个'#',有两个人,最开始在t=0的时候各选一个'#'点燃(选的位置可以一样),t+1时刻它的上下左右也会点燃,问最少多少分钟能点完,如果不能点完,则输出-1。题解:连通块数cnt>=3时输出-1;=2的时候暴力每个连通块(枚举每个连通块的每个“#‘作为起点);=1的时候每次枚举两个点。1)双起点bfs:最开始queue放入两个点就好了。代码(FZU_OJ有毒,还原创 2021-04-03 10:09:24 · 343 阅读 · 0 评论 -
Island Transport HDU - 4280 ( 最大流+ISAP+gap优化+无向边 )
传送门题意:给定n个坐标点,m条无向边(权值表示一次运送的人——即流量)。问从x最小的坐标到x最大的坐标的最大流量。2<=n,m<=1e5。 (好像)没有说x最大、小的点的数量(弄个超级源汇点即可)题解:要卡Dinic,那就用ISAP(一般来说,看到数据大就用ISAP,不然就试试Dinic——最好直接切换HLPP)建图注意增加反向边的意义在于增加反向边本身,而不是非要弄个add(v,u,0)。这里本身就是双向边,就不用add(v,u,0)了(唯一的意义就是增加复杂度)。 听原创 2021-05-04 15:07:26 · 368 阅读 · 0 评论 -
Dining POJ - 3281 (建图+最大流模板+Dinic)
传送门题意:n(<=100)头牛,F(<=100)种食物,D(<=100)种饮料。每头牛有想吃的食物和想喝的饮料,但是每头牛最多只能吃一种,喝也最多能喝一种,而且每种吃、喝的只能被一头牛吃、喝。求最多有多少头牛能够既有吃的又有喝的。题解:难点还是在建图,除此之外Dinic全搞定。自己想了一会,想了个假图。以下图来源:POJ3281 Dining——最大流(Dinic+建图⭐)源点->吃的->牛->牛->喝的->汇点。(我的小脑袋,还是不原创 2021-05-03 14:29:51 · 202 阅读 · 0 评论 -
UVA-11624-Fire!
传送门题意:给定一个n*m的迷宫(1~1000),包含以下符号:'#':墙(’J'和‘F'都不能到达这个点);'.':'J'和'F'能到达的点;'J':J的初始位置('J'有且只有一个);'F':F的初始位置(可以有很多,也可以没有)。’J'和'F'同时扩散。问J是否能冲出去(超过n*m这个框就ok了),如果冲不出去打印"IMPOSSIBLE"。题解:先bfs‘F'(多起点BFS)——注意:不能任意都能过,比如.#F。如果不考虑’#‘,’.'=2,本来应该到达不了的。然.原创 2021-04-03 11:13:57 · 268 阅读 · 0 评论 -
ACM Computer Factory POJ - 3436 (最大流+建图+Dinic+点权与边权之间的转换)
目录传送门点权转化为边权传送门题意:题意迷得很,最后也是看网友的才看懂。每台计算机有p(<=10)个零件,一个公司有n(<=50)个工厂。每个工厂加工一些半成品,输入(得到)一些指定的零件,最多能够输出指定套(指定的是总输出上限,最多不能输出输入套)指定的文件。n行,第 i 行第一个值是第 i 个工厂的总输出的上限,然后是p个数表示输入的零件,0表示一定不能有该零件,1表示一定要有该零件,2表示无所谓,接着是输出的零件,0表示有该零件,1表示没有。题解:建图(点权转化原创 2021-05-02 21:17:07 · 414 阅读 · 0 评论 -
优先队列注意事项
1.最好永远不要用这种排序方式!!!!struct pii { int dis, i; pii() {} pii(int _dis, int _i) { dis = _dis, i = _i; }} a[maxn];struct cmp { bool operator()(int x, int y) { return a[x].dis > a[y].dis; //小顶堆 }};priority_queue<int, vect原创 2021-04-15 21:22:46 · 117 阅读 · 0 评论 -
Sabotage UVA - 10480 (最小割+求最小割去掉的具体边+ISAP)
传送门题意:给定n个点,m条带权无向边,源点s=1,汇点t=2。去掉一些边之后使s,t不连通,求去掉的这些边(而且还要满足去掉的边权和是所有答案中最小的——最小割)。n<=50,m<=500,边权<=4e7(可能超int) 无重边 有多个答案输出一个,边按两个点的方式输入(不需要按顺序)题解:求最小割去掉的具体的边先正常求最大流(增广路算法EK,Dinic,ISAP等都行)。 最后dfs/bfs最后的残余网络,vis数组分成两块,一块与s相连,一块与t相连,最后边中两点原创 2021-05-04 23:36:13 · 184 阅读 · 0 评论 -
POJ-3414-Pots
传送门题意:给你三个数a,b,c(0~100),分别表示被子x[1],x[2]的容量以及要求其中一个杯子要达到的容量。x[1],x[2]分别不能大于a,b。均不能小于0,初始为(x[1],x[2])=(0,0)。进行以下操作,问最少多少次能将x[1]或者x[2]等于c,并输处操作步骤。1.FILL(i):将x[1]变为a或将x[2]变为b。2.DROP(i):将x[i]变为0。3.POUR(i,re(i)):将i倒入另一个杯子(re(i)满或者x[i]=0)。//re(i)=(i==1)原创 2021-04-02 10:19:50 · 551 阅读 · 0 评论 -
“kuangbin带你飞”专题计划——专题二:搜索进阶
"kuangbin带飞"原创 2021-04-03 15:41:07 · 139 阅读 · 0 评论 -
“kuangbin带你飞”专题计划——专题一:简单搜索
kuangbin带你飞1.难以提升emmmm。试着埋头搞专题,看能不能提升效率。2.顺便当是复习了蓝桥杯了。专题一:简单搜索1.POJ-1321-棋盘问题标签:暴力,搜索题解:直接暴力,注意不要重复搜索代码:我自己看的话点题目的链接就好了。粘贴在这里太繁琐,就没弄了。2....原创 2021-04-01 14:18:42 · 383 阅读 · 0 评论 -
“kuangbin带你飞”专题计划——专题六:最小生成树(MST)
系统学习总结最小生成树...原创 2021-04-07 14:51:36 · 275 阅读 · 0 评论 -
HDU-1495-非常可乐
传送门题意:给定三个杯子容量分别为k,n,m(1~100),k=n+m。最开始水的体积分别为(k,0,0)。问是否可以通过倾倒使某两杯的水的体积都为k/2,如果不能打印"NO",如果能打印倾倒次数(被子没有刻度,所以只能将这一杯倒完或者将另一杯倒满)。题解:常规操作了,直接暴力bfs,就怕遇到题不知道用bfs——暴力出奇迹,简单有好写。代码:#include <string.h>#include <algorithm>#include <cm..原创 2021-04-03 14:17:05 · 677 阅读 · 0 评论 -
“kuangbin带你飞”专题计划——专题四:最短路练习
最短路知识复习&总结(全)Til the Cows Come Home POJ - 2387 :模板题,脑瘫题(题都没说清楚)。1.邻接表要判重,vector不用判重。原创 2021-04-22 16:12:34 · 399 阅读 · 0 评论 -
“kuangbin带你飞”专题计划——专题十一:网络流
写在前面开始时间2021-04-27,结束时间未知。怕又是一周的高效学习,然后又是乏了颓废一周。。。那就一周搞完这一专题,发出咯咯的笑声。1.从未接触过,听说很难emmm。原创 2021-04-27 19:27:03 · 329 阅读 · 0 评论 -
Escape HDU - 3605 (状态压缩+ISPA/Dinic+建图)
传送门题意:给定n个人,m个星球,每个人只能到特定的星球,每个星球只能容纳 ci 个人。求是否所有人都可以被容纳。n<=1e5,m<=10。 先输入n,m。然后n*m矩阵,aij表示第 i 个人是否可以到 j 星球。 最后一行 m个数字表示ci。 输出"YES" or “NO"。题解:参考大佬博客HDU - 3605 Escape 状态压缩最大流1.直接建图s->人->星球->t 一定会爆2.考虑状态压缩:每个人可以到达的星球的情况为一个状态,最多.原创 2021-05-06 15:52:39 · 151 阅读 · 0 评论 -
Minimum Cost POJ - 2516 (费用流+EK+模板+分别建图)
传送门题意:n个商店,m个供货商,共k种商品。n个商店需要一定数量的每种商品,m个商店有一定数量的每种商品,m个商店送每一种商品到n个商店都有一定的单价。问是否能供满货,如果能输出最小费用,如果不能,输出-1。n,m,k<=50,数量值都在0~3,费用值都在0~100 输入:多组输入 n,m,k n行,每行k个数,ai,j 表示第 i 个商店需要商品 j 的数量(0~3) m行,每行k个数,ai,j 表示第 i 个供货点有商品j 的数量(0~3) k个n*m矩阵,ci..原创 2021-05-07 21:49:33 · 119 阅读 · 0 评论 -
Marriage Match IV HDU - 3416 (最短路+最大流)
传送门题意:给定n个点,m条边,还有起点s,终点t。每条边(a,b,c)表示a到b,权值为c。每条边只能够经过一次,只能走最短路,问s到t最后可以选择多少条路。n<=1000,m<=1e5,0<c<=1000。 可能a=b,多条a->b 注意可能题意有点歧义,并不是求最短路径数。而是求最大流,每条边容量为1,只能走为最短路上的边。题解:错把c当作边权,竟然还过了样例emm。后面以为和MCMF的操作超不多,但是发现不知道怎么“反悔”(不知道怎么设置反向边原创 2021-05-12 09:08:10 · 175 阅读 · 0 评论 -
Going Home POJ - 2195 (费用流的使用场景+费用流模板题+建图)
传送门题意:给定一个n*m的矩阵,其中有相等数量的人和房子,每走一个格子花费¥1,最终每个人进入一个房子,问最少花费多少。n,m,人/房子的数量<=100 每个格子上可以站任意个人,包括房子(但是只能进入一个人)。 输入: 多组;n m;n*m的矩阵——'.'表示空格,'H'表示房子,'m'表示人 输出:一个数,表示费用题解:费用流。开始认为可以是最小割,想了想还是不对:代码:#include <algorithm>#include <原创 2021-05-09 09:23:48 · 182 阅读 · 0 评论 -
“kuangbin带你飞”专题计划——专题二十二:区间DP
写在前面:开始时间:2021-06-06博客:我的总结:DP基础知识总结 题意贡献:「kuangbin带你飞」专题二十二 区间DP题目:1.Cake ZOJ - 3537 :2.Halloween Costumes LightOJ - 1422 :3.Brackets POJ - 2955 :4.Coloring Brackets CodeForces - 149D :5.Multiplication Puzzle POJ - 1651 :6.Food Delivery原创 2021-06-06 19:50:30 · 290 阅读 · 0 评论 -
A Plug for UNIX POJ - 1087 (读题的技巧+建图+Dinic+建图标点的技巧)
目录关于读题:关于建图标点:传送门题意:一间房间有n个插座,有m个电器要使用一些插座(有的插座没在n个里面),有k个转换器,每个转换器可以插在相应的插座或者转换器上(插上之后相当于插座变成另一种插座),每个转换器上可以插相应的插头或者转换器(转换器可以当作插头看待)。要求尽可能多的插头能充电,问最少有多少电器充不上点。n,m,k<=100 插座,插头都有不超过24位的字符串表示 n个插座各不一样(题目好像没有明显说) 转换器的种类无穷多 输入:n->n个插座->m->m原创 2021-05-07 17:16:47 · 135 阅读 · 0 评论 -
Food HDU - 4292 (拆点+Dinic)
传送门题意n个人,F种食物,D种饮料,每种食物,饮料的数量都已知,同时还知道哪个人喜欢吃/喝那些食物/饮料。最多多少人能够有吃有喝。1<=n,F,D<=200。 输入:多组输入n,F,D F个整数表示食物i的数量 D个整数表示饮料i的数量 n*F矩阵,aij为'Y','D'分别表示第i个人喜欢/不喜欢食物j n*D矩阵,bij为'Y','D'分别表示第i个人喜欢/不喜欢饮料j输出:一行一个整数表示人数题解网络流,建图难。s->食物->人_in->人_out->饮料->原创 2021-05-10 20:27:32 · 136 阅读 · 0 评论 -
“kuangbin带你飞”专题计划——专题十二:基础DP1
写在前面1.开始时间:2021-05-272.专题传送门:[kuangbin带你飞]专题1-23 题目:1.Max Sum Plus Plus HDU - 1024 :2.Ignatius and the Princess IV HDU - 1029 :3.Monkey and Banana HDU - 1069 :4.Doing Homework HDU - 1074 :5.Super Jumping! Jumping! Jumping! HDU - 1087 :.原创 2021-05-27 19:28:58 · 445 阅读 · 0 评论 -
Leapin‘ Lizards HDU - 2732 (拆点+网络流模板题+建图)
传送门题意:一个n*m迷宫中,有一些Lizard(????)和柱子,每个柱子最多可以跳x次(0~3),求最多有多少只Lizard可以跳出迷宫。输入T<=25表示样例组数 每组由n ,d(1~20)开始,n表示行数,d表示可以跳的最远的曼哈顿距离(题目貌似没说) 一个n*m矩阵,aij表示珠子可以跳多少次 一个n*m矩阵,bij==‘L'表示这个地方最开始有Lizard输出:最少多少只不能跳出迷宫题解:网络流=建图难。ps:很快写好之后找了一个半小时的BUGe原创 2021-05-11 15:31:37 · 152 阅读 · 0 评论 -
“kuangbin带你飞”专题计划——专题十四:数论基础
[kuangbin带你飞]专题1-23 写在前面1.目前还没啥写的。开始时间:2021-05-13(其实博客上看得到该博客创建时间的)2.上一个专题刷的是网络流(博客总结),属于第一次接触。本来想的是一周特别高效,然后一周略划水,结果是五一期间高效,工作日有课略划水。还好,每个题都写了博客,收获很多3.这个专题,我想应该每个题都涉及了不一样的知识吧。也建议每个题都写博客4.写个感受?有与高四刷书的感觉了,激动,期待,轻松辛苦,有时候一本书要一个月才刷完,这不代表我效率低,只能代表这.原创 2021-05-13 14:54:16 · 427 阅读 · 0 评论 -
Bi-shoe and Phi-shoe LightOJ - 1370 (线性筛+欧拉函数)
传送门(发现根本不用注册LightOJ)题意:给定一个数组a,长度为n。bi的欧拉函数满足大于等于ai,求最小的bi的和。ai<=1e6题解:线性筛之后直接暴力(加了个记忆化数组,应该会省一点时间复杂度),遇到大于i的素数一定满足条件,1e6+3为素数代码:#include <bits/stdc++.h>#define int long long#define read(x) scanf("%lld", &x)#define print(a, c原创 2021-05-14 09:51:38 · 160 阅读 · 0 评论 -
Balanced Number HDU - 3709(数位DP+枚举中心点+好题)
传送门题意:求[A,B]之内的平衡数0<=A<=B<=1e18平衡数:以某个点为中心,两边的权值和相等。其中每一位的等于离中心的距离∗*∗该位的数。例如4139以3为中心,左右两边权值和分别为4∗2+1∗1=94*2+1*1=94∗2+1∗1=9和9∗1=99*1=99∗1=9,即为平衡数。特别的,0~9都是平衡数题解:首先一个平衡数只可能以一个数位为中心,递增不解释枚举中心,然后某个数的权值和为0即为平衡数因为权值和可正可负,为避免出现负数,设置key,最初另一原创 2021-07-16 09:14:30 · 192 阅读 · 0 评论 -
2021-07-08-Beautiful numbers CodeForces - 55D(数位DP+模板)
Beautiful numbers CodeForces - 55D1.果然,决心刷一个专题的时候,不需要立即就将正在做的题目理解。可以先多看看其他的题目,有时候,见的多了,思维发散了,自然而然就理解了(其实现在还没有完全理解,但是感受到了数位DP是怎样一个套路)2.题意:给定两个数l,r(1<=l<=r<=9e18),求[l,r]间漂亮数的个数(漂亮数:能被所有非0数位整除的数)题解:1.参考:Beautiful numbers CodeForces - 55D(数位DP)原创 2021-07-08 13:00:09 · 194 阅读 · 0 评论 -
“kuangbin带你飞”专题计划——专题十五 数位DP
写在前面:开始时间:2021-06-07博客:我的总结:DP基础知识总结 难度判断: [kuangbin带你飞]专题十五 数位DP题目:A - Beautiful numbers CodeForces - 55D B - XHXJ's LISHDU - 4352C - 不要62HDU - 2089D - BombHDU - 3555E - Round NumbersPOJ - 3252F - Balanced NumberHDU - 3...原创 2021-06-07 20:39:12 · 288 阅读 · 0 评论 -
旋转卡壳&凸包(不用一下子就学完所有)
目录前言参考博客前置知识1.极角排序2.凸包(默认逆时针)3.对踵点旋转卡壳能解决的各类问题1.计算距离1.1凸多边形直径1.2凸多边形宽1.3凸多边形间最大距离1.4凸多边形间最小距离2.外接矩形2.1最小面积外接矩形2.2最小周长外接矩形3.三角剖分3.1洋葱三角剖分3.2螺旋三角剖分3.3四边形剖分4.凸多边形属性4.1合并凸包4.2找公切线4.3凸多边形交4.4临界切线4.5凸多边形矢量和5.最薄截面5.1最薄横截带前言1.不用总想着一下子就学完所有知识,刷题要紧(能遇到的东西才是重点!!!)原创 2021-07-11 16:31:06 · 2694 阅读 · 0 评论 -
“kuangbin带你飞”专题计划——专题十六 KMP & 扩展KMP & Manacher
目录前言题目(kmp算法实际应该称为前缀函数算法)1. Number Sequence HDU - 1711 (KMP模板题:在另一个字符串中找一个字符串出现的位置)2. Oulipo HDU - 1686 (KMP模板题:求一个子串在另一个子串中出现的次数)3. 剪花布条 HDU - 2087 (KMP模板题:求另一个字符串中最多可以在剪出多少个该字符串)4. Cyclic Nacklace HDU - 3746 (前缀函数模板题:求字符串周期n-pi[n-1])5. Period HDU - 1358原创 2021-08-26 12:17:14 · 605 阅读 · 0 评论 -
2021-07-08-吉哥系列故事——恨7不成妻 HDU - 4507(数位DP+进阶模板题)
传送门如果思维不清晰,尽可以看别人的代码,然后梳理自己的思路,不要总是自己在那里研究(不是说不应该有自己的思维,只是要注意分寸,过度的自己思考只会浪费很多时间,因为我是在学新东西,而不是要造新东西。)所幸对数位DP有了进一步的理解收获&总结:从cnt-1位,即最高位开始dfs在写代码时默认dfs为最有子结构:如果dp[pos][x1][x2],那么我们默认为dfs(pos,x1,x2,limit)为最优解(具体操作交给更小的区间)。dp表示高位一定时的最优解:我们求到的dp[pos原创 2021-07-08 19:20:29 · 163 阅读 · 1 评论 -
2021-07-13-P3187 [HNOI2007]最小矩形覆盖(凸包,旋转卡壳,凸包最小矩形覆盖--求面积及各点)
传送门题意:给定一些点的坐标,要求求能够覆盖所有点的最小面积的矩形,输出所求矩形的面积和四个顶点坐标。3≤n≤500003\le n\le 500003≤n≤50000输入n及n个点输出面积及四个点坐标(按一定顺序,不用纠结)题解:先求凸包,然后再旋转卡壳旋转卡壳具体操作:枚举点,然后卡三个点(怎么卡?建议自己推)收获:除了熟悉了凸包和旋转卡壳之外,还学到了很多有用的新操作,比如点到直线的距离,点到直线的投影,过一点的平行线 以及线的倾斜角,atan ,atan2等。学的新东原创 2021-07-13 14:04:59 · 23665 阅读 · 0 评论 -
Round Numbers POJ - 3252(数位DP+前导0的处理)
传送门题意:求[A,B]间的round数的个数。round数:划为标准二进制形式之后0的个数大于等于1的个数1<=A,B<=2e9题解:怎么设置数组dp?DP[pos][k1][k2],k1,k2分别表示0和1的个数怎么处理前导0,多设置一个像limit的标记数组lead就ok了(地位和limit一样,但是还与k1,k2的值有关)。处理前导0也是比较模板的东西代码:#include <cstring>#include <iostream>原创 2021-07-16 07:53:39 · 172 阅读 · 0 评论 -
Balanced Numbers SPOJ - BALNUM(数位DP+好题+排除前置0的干扰!!!!)
传送门题意:输入A,B(1<=A,B<=1e19),求[A,B]间的平衡数个数。平衡数:数位中每个为偶数的数出现奇数次,每个为奇数的数出现偶数次。例如: 77, 211, 6222 和112334445555677这些数为平衡数,但是351, 21 以及662就不是平衡数。题解:数位dp第一步就是找dp,然后就是套模板的东西了。一般dp知道怎么找,就能直接解出题目了,这一题,显然一个关键字,要来表示0~9的个数的情况。大佬博客SPOJ BALNUM (数位DP)提示三进制。(原创 2021-07-15 15:02:10 · 156 阅读 · 0 评论 -
2021-07-08-F(x) HDU - 4734(数位DP+模板+总结1)
传送门这个专题的前几篇博客熟悉了数位DP的形式。现在慢慢来理解:2.1 关键是找到dp函数2.2 dfs-只需要注意边界操作和剪枝即可(dfs函数本身返回的值我们可以像dp一样把它当作已知值最优解)2.3 之前关注到的,什么时候初始化dp,确实是一个比较大的问题题意:定义数x=AnAn−1...A2A1x=A_nA_{n-1}...A_2A_1x=AnAn−1...A2A1定义函数 F(x)=An∗2n−1+An−1∗2n−2+...+A2∗2+A1∗1F(x)=A_n*2^{n-原创 2021-07-08 15:35:19 · 204 阅读 · 0 评论 -
刷题计划一:概率&期望&统计
前言不一定非要跟kuangbin大大的题单的,遇到想要学的东西,也可以自己去找题,去深入。洛谷题单官方题单8题:【数学2-3】概率与统计大佬题单:xzy的概率期望题单题目1.洛谷官方题单传送门:官方题单8题:【数学2-3】概率与统计1. P3802 小魔女帕琪P3802 小魔女帕琪2.P1297 [国家集训队]单选错位P1297 [国家集训队]单选错位3.P1654 OSU!P1654 OSU!4.P1850 [NOIP2016 提高组] 换教室P18原创 2021-08-01 17:04:45 · 245 阅读 · 0 评论 -
2021-07-08-B-number HDU - 3652(数位DP+模板+深搜dfs)
传送门1.关键是找dp,其他就偏模板了2.模板:int a[N], cnt;int dp[N1][N2][N3];// dp[pos][x1][x2]int dfs(int pos, int x1, int x2, int limit) { if (pos == -1) return xxx; // xxx为0或1,表示以某个数为个位数是否满足 if (!limit && dp[pos][x1][x2] == -1) return dp[pos][x1][x2]原创 2021-07-08 13:36:53 · 151 阅读 · 0 评论 -
Bomb HDU - 3555(数位DP+模板)
传送门1.首次接触数位DP,可以先了解一下它的形式,然后变刷题边思考其原理,最后刷完这个专题之后再总结提炼一下它的思想2.(建议今后总结写在一个博客的最前面)**题意:**给一个数n(1<=n<=2^63-1),然后求出1~n中49子数和(比如49249=2,490302=1)题解:1.参考的带佬博客hdu3555 Bomb (秒懂的数位dp)2.代码:#include <cstdio>#include <cstring>#include <io原创 2021-07-08 09:39:09 · 187 阅读 · 0 评论