自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 资源 (1)
  • 收藏
  • 关注

原创 Codeforces Round #666 (Div. 2)D经典博弈(贪心)

D. Stoned Game题意:有n堆石头,两个人轮流拿一个石头。后手不能拿刚刚先手抓的堆.问:最后谁赢。思路1:可以先考虑,假如有一堆的总数>其它的堆的总数.那么先手可以一直抓这一堆,把对手磨死(贪心,抓大堆)。那么假如一般情况,也是贪心抓大堆,log维护一下。思路2:可以先考虑,假如有一堆的总数>其它的堆的总数.那么先手可以一直抓这一堆,把对手磨死(贪心,抓大堆)。sum为偶数,肯定后手赢。反之,先手赢。(菜鸡不会证明)AC1#include <ios

2020-08-31 23:48:24 112

原创 Codeforces Round #608 (Div. 2)(ABCD题解)全是暴力,D是dp和贪心

A. Suits(枚举,老套路了)题意:有四种商品,分别由a,b,c,d个。现在由两种选择。选a和d,盈利是e。选b,c和d,盈利是f问:怎样分配商品可以赚最多。思路:枚举(老套路了)AC(强烈推荐学习枚举,老套路了)#include <iostream>using namespace std;int main(){ int a,b,c,d,e,f; cin>>a>>b>>c>>d>>e&

2020-08-31 23:00:18 87

原创 Codeforces Round #666 (Div. 2)(ABCD题解),E看情况再补

A. Juggling Letters题意:给你n个串,可以进行一种操作。把一个字母移到任意地方。问:最后是否可以使所有n个串都相同。思路:统计字母就可。(老套路了)AC在这里插入代码片B. Power Sequence题意:给你一个数组,进行最小的操作,使得它变成一个等比数列(q>=1)一次操作是+1/-1思路:当n很小时,q(公比)可能的情况很多。相反,当n很大时(假如1e5,上届),q只可能为1.所以两层循环暴力是可以的。反思:本题fst在了界限分析。

2020-08-31 16:22:52 145

原创 AtCoder Beginner Contest 177(ABCDE题解),这次E码歪了,4wa.

A - Don’t be late(转换为乘法)题意:问是否能在时间TTT内,到达终点,距离为DDD,速度为SSS.思路:简单的数学问题。在时间TTT内所能达到的最大距离d=Td=Td=T x SSS如果d>=Dd>=Dd>=D那么肯定可以按时到达。(转换为乘法,当然啦除法也行,不过有浮点误差)AC#include <iostream>using namespace std;int main(){ int d,t,s; cin>&gt

2020-08-30 17:01:06 108

原创 Educational Codeforces Round 94 (Rated for Div. 2)ABC题解

A. String Similarity题意:要求你构造一个串w。思路:对于这些字串,要满足相似,那么就保证每一个子串都至少有一个位置相似即可。那么w【1】=s【1+0】.(保证[1,n][1,n][1,n])w【2】=s【2+1】.(保证[2,n+1][2,n+1][2,n+1])w【3】=s【3+2】.(保证[3,n+2][3,n+2][3,n+2])w【n】=s【n+n-1】.(保证[n,2n−1][n,2n-1][n,2n−1])AC#include <iostream

2020-08-26 01:51:23 111

原创 AtCoder Beginner Contest 176-E - Bomber(套路题)

E - Bomber题意:给你m个坐标,每个坐标有一个target。现在可以消灭一行和一列。问最多消灭多少target?思路:枚举最大行(有num1行),和最大列(有num2行),之后就是配对即可。行列配对的总情况是num1 x num2.之后统计一下所有的m个点,有多少个是交点即可。(cnt)最后假如所有cnt=num1 x num2,那么就是所有可能的点是交点,那么答案就是maxr+maxc-1.否则就是maxr+maxc。反思:与一场gym的一题有异曲同工之妙Cockro

2020-08-24 10:40:29 255

原创 AtCoder Beginner Contest 176(ABCDE)D题撒币了,int写成bool

A - Takoyaki题意:给你n,x,t。其中做x个小吃的时间为t。每次制作都要时间t。思路:就是向上取整就好。AC#include <iostream>using namespace std;int main(){ int n,x,t; cin>>n>>x>>t; int num=(n+x-1)/x; cout<<num*t<<endl; return 0;}B -

2020-08-22 22:19:27 131

原创 Codeforces Round #665 (Div. 2) (ABC题解)

A. Distance and Axis题意:给定你A的位置,每次都可以改变A的位置一个单位。问:最少改变多少次,可以使得。∣∣OB∣−∣AB∣∣=k||OB|-|AB||=k∣∣OB∣−∣AB∣∣=k思路:根据样例可以猜到。当n的值小于k时,那么只要把n加到k。那么就可以把B放在原点或A上。此时操作0步那么剩下就是n大于等于k时。显然,当相等时,不用操作,就和情况1相同。不等就是n大于k时,细心发现只要n和k同奇偶性,那么操作0步。AC(赛后)#include &l

2020-08-22 01:54:35 73

原创 Educational Codeforces Round 93 (Rated for Div. 2) (ABCD)

A. Bad Triangle题意:给你一个升序序列。问:是否存在一组triple(三元组),不能成为三角形。思路:取最小的两条边,和最大的。a【1】+a【2】<=a【n】时,满足条件。AC#include <iostream>using namespace std;const int maxn=5e4+10;int a[maxn];int main(){ ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);

2020-08-15 12:18:41 83

原创 计蒜客 207传球游戏(喝水dp)

计蒜客 207传球游戏题意:就是普通的传球。思路:类似走阶梯。fib的变式。AC#include <iostream>using namespace std;int dp[40][40];int main(){ ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); int n,m;cin>>n>>m; dp[1][0]=1; for(int i=1; i<=m; i+

2020-08-14 18:38:50 70

原创 LibreOJ 6163合并回文子串(二维区间dp)

合并回文子串题意:给你两个字符串a和b。∣c∣=∣a∣+∣b∣|c|=|a|+|b|∣c∣=∣a∣+∣b∣之后再拼成字符串c。(a字符串内的相对顺序不变,b同样)求c最大的回文子串思路:传送门这里做个dp时的补充。当长度为0时,那么区间不存在,dp时把和区间不存在的标记为1.(只有【a+1,a】时,才赋值1。其他都赋值0.)利用好上面那个条件,可以少写好多状态。AC#include <iostream>#include <cstdio>#includ

2020-08-14 17:14:50 106 1

原创 专题十 匹配问题 POJ 2289 Jamie‘s Contact Groups(二分答案+二分图多重匹配)

POJ 2289 Jamie’s Contact Groups题意:有一个通讯录,要求你把每个好友分组。有m个组 [0,m)[0,m)[0,m)每个好友的所能去的组有限制。使得每个好友都能分到一个组。求min(所有组中largest的人数)min(所有组中largest的人数)min(所有组中largest的人数)思路:最小值中的最大值。(很裸的二分)之后匹配,就是二分图多重匹配。反思:sstream的初始化。 stringstream ss; ss.str("")

2020-08-13 23:06:11 530

原创 专题十 匹配问题 POJ 2594 Treasure Exploration -----DAG最小相交路径覆盖(DAG二分图最大匹配+floyd传递闭包)

POJ 2594 Treasure Exploration题意:在一个DAG(有向无环图)里,求最小路径数点覆盖。(线路可以相交)反思:最小路径覆盖数=n−maxmatch最小路径覆盖数=n-maxmatch最小路径覆盖数=n−maxmatch相关证明1:传送门相关证明2:传送门思路1:先跑一遍floyd传递闭包。之后跑最大匹配。AC1#include <iostream>#include <cstring>#include <algorit

2020-08-13 16:05:17 132

原创 专题十 匹配问题 HDU 1054 Strategic Game(最小顶点覆盖or树形dp)

HDU 1054 Strategic Game题意:给你一个图,要求你放最少的点。使得这些点,都可以看到所有的边。思路1:最小顶点覆盖,即最大匹配AC1#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>#define mst(x,a) memset(x,a,sizeof(x))#define fzhead EDGE(int _to, in

2020-08-11 17:25:54 117

原创 专题10 匹配问题 POJ 3020 Antenna Placement(二分图最大匹配)

POJ 3020 Antenna Placement题意:给你一个图,里面的 * 表示 站点,要求把它们都连接起来,问最少所需要的antennas(电线)。一个antennas可以连接两个基站,要相邻。(特别地,也可以连一个空点)每个基站至少需要1个antenna。思路:建立无向图(先对于每个基站连边)。跑一遍最大匹配。之后可能还有一些没匹配到的点。那么这些每匹配的点,就ans++。(管他连到哪里,直接加一条antenna,即ans++)AC#include <iostr

2020-08-11 14:05:32 78

原创 2020牛客暑期多校训练营(第十场)A-E(今天签到了去,菜了菜了)

A----Permutation题意:给你一个范围,【1,p-1】。要求你构造一个排列,使得(xi+1x_{i+1}xi+1​ %p)= (2xix_{i}xi​%p)或者(xi+1x_{i+1}xi+1​ %p)= (3xix_{i}xi​%p)思路:暴力构造即可以了。第一个放1,假如2xix_{i}xi​没用过,那么2xix_{i}xi​可以。假如2xix_{i}xi​用过,那么看3xix_{i}xi​.同理。找不到,就输出-1.是否用过vis以下就可以了。AC#incl

2020-08-10 18:41:41 92

原创 [kuangbin带你飞]专题十 匹配问题 HDU-1038

Courses HDU - 1083题意:有p个课程,n个学生。问:是否存在一种匹配,使得每个课程都要有学生。(且不能有多余的学生)。思路:二分最大匹配。从课程出发去匹配学生反思:初始化别乱用。(mst就mst,其他算了ε=ε=ε=( ̄▽ ̄)) mst(head,-1);mst(vis,0);// for(int i=0; i<=p*n; i++)head[i]=-1,vis[i]=0;之所以wa是因为1*1的情况。对于题目求什么,那就从什么出发二分最大匹配

2020-08-07 23:53:54 111 1

原创 HDU 6638二维扫描线+二维最大子段和+离线

Snowy Smile HDU - 6638题解看这位大佬,讲的很详细了。传送门反思:本题做的时候,已经想到二维子段和了,但不知怎么维护。看了题解,原来要用线段树,之后暴力算答案。先只看纵坐标,即只看y时(即一条水平的扫描线时),那么先暴力枚举所有可能的矩形(这些矩形,只知道上下界,左右边界还是未知的)对于每一次枚举y上界时(即一条水平的扫描线时),可以看一下这条水平扫描线y上是否有点,有就加入到【1,cntx】的线段树里,根据x坐标,往区间里进行点修改(由于数据坐标有1e9,所以要先离线

2020-08-07 01:08:59 216

原创 HDU-5542(树状数组+LIS(dp))

The Battle of Chibi HDU - 5542(dp)题意:给你一个数组,要求你找到有多少组长度为m的严格递增序列思路:先是最长上升子序列。之后就是方案数。dp[i][j]dp[i][j]dp[i][j]考虑第 iii 个位置,长度为 jjj 的值。(这里已经两层for了)那么dp[i][j]=∑p=1i−1dp[p][j−1]dp[i][j]=\sum_{p=1}^{i-1}dp[p][j-1]dp[i][j]=∑p=1i−1​dp[p][j−1](且a【p】

2020-08-05 21:16:24 186

原创 The 2015 China Collegiate Programming Contest(今天睡过头了,干qwq.一点才起来)

A----Secrete Master Plan HDU - 5540(签到)题意:给你两张地图,判断能否把一张旋转成另外一张。思路:三变量交换法。AC#include <iostream>#include <cstdio>#include <cstring>using namespace std;int main(){ int t,kase=0;scanf("%d", &t); while(t--){

2020-08-05 21:05:26 186

原创 [kuangbin带你飞]专题十 匹配问题 HDU 4185(二分最大匹配)

HDU 4185 Oil Skimming题意:给你一个n x n的矩阵。要求找到最多的“##”(2x1)或者”#““#”(1x2)思路:证明:可以先把这个棋盘二分染色。(黑白相间的染色,就像国际象棋的棋盘)之后对于每个2 x 1的矩形,都必然含有一个黑和白的格子。这时候黑格子定义为左集合,白格子定义为右集合。求解:那么求1x2 或者 2 x 1的矩形的数目。 就是求黑格子与相邻白格的最大匹配。而对于有"#"的格子染色时可以标号,本题主要是连边。(本题邻接矩阵会爆内存),所

2020-08-05 00:35:08 121

原创 [kuangbin带你飞]专题10 匹配问题 HDU-2819(二分图最大匹配)

HDU 2819 Swap题意:给你一个n x n的01矩阵。可以行行交换,或者列列交换。问:怎样操作,可以使得矩阵的主对角线都为1.思路:先跑行列的二分图最大匹配。(可以摆棋子,且行列不冲突)跑完后就存答案了反思:跑行列的二分图最大匹配。(可以摆棋子,且行列不冲突)模板记得加used【j】=1;AC#include <iostream>#include <cstdio>#include <cstring>#include &lt

2020-08-04 21:12:54 92

原创 [kuangbin带你飞]专题10 匹配问题 HDU1281(二分图最大匹配)

HDU 1281 棋盘游戏题意:给你n*m的棋盘。有k个位置可以放车要求车不能互相攻击。问:怎样排放可以放最多的车。且求出重要位置。思路:对于行列,去二分匹配。之后就是求最大位置:可以删除这一条边,之后再跑一遍最大匹配。AC#include <iostream>#include <cstdio>#include <cstring>#define mst(x,a) memset(x,a,sizeof(x))using namespace

2020-08-04 20:11:11 87

原创 [kuangbin带你飞]专题10 ---POJ-3189(二分+多重匹配)

Steady Cow Assignment POJ - 3189题意:有b个牛舍,n头牛。每头牛对牛舍的喜爱程度不同。问:怎样分配可以使得牛的喜爱程度之差最小。思路:二分差值,之后枚举下界(牛舍只有20)之后建图,跑最大匹配。AC#include <iostream>#include <map>#include <string>#include <cstring>#include <cstdio>#define m

2020-08-04 16:06:01 160

原创 2020牛客暑期多校训练营(第八场)I-K(最近几天在神游qwq)

Interesting Computer Game题意:给你n组pair。每个pair只能选一个数。问:最后选完后,最多有多少个数。思路1:(并查集维护)。读入每个pair时,并起来。(并且计算这个联通块的边数和点数)对于一个x个点联通块,所有的点都取,的充分必要条件是有x条边 。反思1:对于并查集的维护,如果是联通块的特性,可以直接加减。(eg联通块的点数,联通块的边数)相反假如:是点的特性,则要向量(带权并查集)AC#include <iostream>#

2020-08-04 14:44:45 121

原创 AtCoder Beginner Contest 174 ABCDE(题解)

A - Air Conditioner题意&&思路:if (大于30就)输出yes。else 输出no。AC#include <iostream>using namespace std;int main(){ int x; cin>>x; if(x>=30)cout<<"Yes"<<endl; else cout<<"No"<<endl; return 0;

2020-08-02 22:24:30 208

原创 [kuangbin带你飞]专题十 匹配问题-POJ-2112(二分+网络流or多重最大匹配)

Optimal Milking POJ - 2112题意:有k个机器(产奶)。c头牛。每个机器最多可以接纳m头牛。给你牛机器之间的距离。问:怎样分配可以使牛都可以喝到奶,且走最远路的牛,所走的距离最短。思路:由于牛要走最短路,所以可以先floyd预处理。可以二分答案。由于问题是多重匹配,所以,这时候有两种思路。反思:一边多重,可以跑最大匹配。两边都是,那么就跑网络流吧。大佬的笔记传送门AC1(多重匹配,只适合一个集合多重)#include <iostream&

2020-08-02 17:11:30 148

原创 Cat VS Dog HDU - 3829(最大独立集)

Cat VS Dog HDU - 3829(二分图最大匹配)题意:有n只cat,m只dog。p个children。问:每个小孩有讨厌的,和喜欢的。怎样移除dislike的,可以使最多的children开心。思路:一开始想like连dislike,但假如有两个小孩的喜好是一样的,那么就麻烦了题目求小孩,那么连小孩好了。假如小孩之间有矛盾,那么就连一条边,之后求跑一遍max_match,求最大独立集,就可以了。反思:一开始连了like和dislikewa,后来边没连好wa了。ma

2020-08-01 23:35:34 98

原创 Rain on your Parade HDU-2389 (Hopcroft-karp)

题意:有n个雨伞,有m个人。t min 后下雨。问最多有多少个人可以拿到雨伞(一把伞,只能有一个人)思路:裸的二分图最大匹配。把距离关系,转换一下,建图即可。AC#include<iostream>#include<string.h>#include<vector>#include<math.h>#include<queue>#define fzhead EDGE(int _to,int _next)#define.

2020-08-01 21:41:03 149

一个分解质因数的方法

椭圆曲线质因数分解

2020-12-26

空空如也

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

TA关注的人

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