自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(76)
  • 收藏
  • 关注

原创 错误cnt

初始化inf与INF: 1多组输入:1

2019-07-26 19:19:23 306

原创 codeforces刷题日记(无题解)

4.19题数1104.2910天我只刷了20题 从今天起开始对比我关注的kmjp刷题量,另外每天目标先3道题。题数130

2019-04-28 22:27:38 359

原创 背包问题

01背包问题时间复杂度O(n*v),空间复杂度O(v) 其中n是物品个数,v是背包大小。(x, y) 表示物品大小为x,价值为y设置状态dpij,表示考虑到前i个物品用大小为j的背包所能装的最大价值A. 考虑第i个物品可以不要这个物品。dpij = dpi-1j比如已经用(1, 2)(1, 3)两个物品装进背包,那么此时背包大小为2的时候我们最大价值为5。现在考虑第三个物品(2,4)...

2020-03-29 11:34:49 486

原创 图论题收集

ZJOI2017 :https://www.cnblogs.com/ARZhu-NOIpAK/p/6596879.htmlhttps://blog.csdn.net/ike940067893/article/details/98180164

2020-03-14 15:42:18 235

原创 Codeforces Round #607 (Div. 2) 训练总结及A-F题解

A题 :没什么总结的,就是根据题意去做。代码:#include <bits/stdc++.h>using namespace std;#define ll long long#define forn(i, n) for(int i = 0; i < n; ++i)#define for1(i, n) for(int i = 1; i <= n; ++i...

2020-03-02 19:12:31 193

原创 2-sat 学习笔记

这个ppt讲的很好:链接

2020-03-01 17:43:28 168

原创 双连通学习笔记

双连通是对无向图所说的边双:对于一个图G,和子图G2,如果去除图中任意一个边子图G2仍然连通的话,G2中的边就是边双联通关于边双点双桥割点的DFS做法跟OIwiki学的:链接对图跑出一颗DFS树。如图,图源OIwiki,黑边绿边为树边,红边为非树边。被红边所关照两点的树上路径必然不是桥,除此之外的就都是桥了,所以求桥的方法就是用差分。对于非树边u-v, 假设v为更深的树点,那么开个差...

2020-02-29 17:07:05 615

原创 拓扑排序学习笔记

1. 输出字典序最小的拓扑序:在BFS算法方法中用优先队列2.题意:N个点M条边DAG求删去每个点后1-n最短路N,M3e5做法:首先在DAG中可以跑拓扑排序,跑完拓扑排序有什么好处呢?拓扑序上的一个点k作为划分线,前半段的点的集合设为x,后半段点的集合设为y,那么从点1到x中的任意一个点的最短路,一定没有经过k点;同理,从y中任意一个点到n一定也没经过k点。...

2020-02-29 15:25:01 171

原创 最小生成树学习笔记

1. 题意:这里 解法:这道题需要知道欧拉路径。显然整张图奇度点<=2的时候我们只计算一次就OK了。但对于绝大多数情况,我们要想办法构造一条欧拉路径,这样的话,每条边走的次数<=2,但是每条边走的次数至少为1。如果要构造两个点从奇度边偶度,我们需要把他们之间的一条路径重复添加一次,这样才能满足。题目第i条边权为2^i次方,也就是说前i-1条边相加的权值依旧没有第i条边的权值大...

2020-02-29 14:38:25 140

原创 学习笔记-最短路

1. 正权无向图最小环问题(floyd)引用链接:点我 抛开Dijkstra算法,进而我们想到用Floyd算法。我们知道,Floyd算法在进行时会不断更新矩阵dist(k)。设dist[k,i,j]表示从结点i到结点j且满足所有中间结点,它们均属于集合{1,2,⋯ ,k}的一条最短路径的权。其中dist[0,i,j ]即为初始状态i到j的直接距离。对于一个给定的赋权有向图, 求出其中...

2020-01-28 06:28:26 511

原创 1.6-1.12 训练总结

1. 每日训练内容:周一: 打了CF div2 round 612,白天09:00 – 17:00补了3道2000+分题,刷了两道st表的板子题,AK了一场以前的div3和div2。 晚上和新生讲ak了一套div3。8道题周二:白天刷了一道题,晚上VP CF div2 round 606 Rank 300/7k。5道题周三:白天搬宿舍回家,晚上计蒜客讲课,切了STL的水题5道...

2020-01-12 08:52:44 157

原创 Codeforces Round #594 (Div. 1) B. The World Is Just a Programming Task (Hard Version)

这题太妙了,我是看b站qscqesze(搜这个up主)+这个聚聚讲的学会的:https://www.cnblogs.com/LLTYYC/p/11718968.html写这篇博客不是写题解,只是记录一下,日后比赛前看题解可以看看。题解的话看我上面推的就懂了代码:#include <bits/stdc++.h>using namespace std;#define ll...

2019-11-21 12:50:01 165

原创 P1196 [NOI2002]银河英雄传说 并查集

并查集好题,维护两个值,一个是所处队列大小,一个是每个结点队列前面还有几个数。第二个维护需要巧妙的搞一搞,见find函数#include <bits/stdc++.h>using namespace std;#define ll long long#define forn(i,n) for(int i=0;i<n;++i)#define for1(i,n) fo...

2019-11-11 14:04:13 134

原创 CF 1245F Daniel and Spring Cleaning 数位dp

题意:给你一个二元组(l,r),问在[l,r]内有多少组二元组(a,b)满足a+b==a^b。(1,2)和(2,1)算两组。思路:1. 很容易想到当且仅当两数每一位同为1才会出问题,也就是说异或是没有进位的。所以a+b==a^b的条件是a&b==1。2. cal(a,b)函数为[0,a]与[0,b]内符合条件的二元组数。那么求[l,r]区间内的二元组数等价于cal(b,b)-2...

2019-11-05 15:06:00 208

原创 2019 CCPC 哈尔滨

2019CCPC哈尔滨比赛总结总结:1.需要一个人去稳定整个队伍的心态,不能爆交,不能在比赛中途甩锅。2.看榜单会发现,E题很多ac队伍有wa,那么一定代表这题是有一些细节的点去考虑的。此时一定要稳定下多造两组样例,造样例用掉的时间最多10mins,而这种题更需要去造样例。3.要合理分配队内资源,三人开一题的效率太低,可以二一分配。4. 不能出现类似int改ll的信仰提交...

2019-10-15 20:38:47 1365

原创 bzoj3531 树刨+线段树动态开点

题意:一棵树,每个点有颜色,4种操作,1.单点修改权值 2.单点修改颜色 3.查询路径颜色相同的点权和 4.查询路径颜色相同的点权最大值。思路:树刨+线段树动态开点,开1e5个线段树。代码:#include <bits/stdc++.h>using namespace std;#define ll long long#define forn(i,n) for(int i=0...

2019-10-11 11:43:02 174

原创 洛谷 P3960 列队 线段树动态开点

题意:n*m个人,每次从x,y出去一个,第x行统一向左补位,第m列统一向前移位,每次输出当前位置人的编号思路:模拟过程很容易想到用线段树或者BIT维护+vector维护,但是不太行,于是学了动态开点,50行不压行代码。代码:#include <bits/stdc++.h>using namespace std;#define ll long long#define for...

2019-10-09 20:35:57 140

原创 CF85E Guard Towers 二分+二分图染色

题意:坐标轴上n(5000)个点(0<=x,y<=5000),你的目的是把这些点分成两拨,每一拨内两点间哈曼顿距离最大值小于两拨内两点哈曼顿距离最小值。输出这个哈曼顿距离,以及方案数。思路:最大值最小二分哈曼顿距离建边二分图01染色判断是否合理代码:#include <bits/stdc++.h>using namespace std;#define ll...

2019-10-09 11:52:13 412 4

原创 Codeforces Round #548 (Div. 2) E.Maximize Mex

题意:n(5000)个学生,m个社团(5000),每个学生有一个值ai和归属的社团bi,现在领导想让不同社团出一个人,使得出来的人的值可以从0连续排到ans。每天有一个学生会退出自己的社团,问当天的最大ans是多少。思路:如果倒着来的话,那么就成别人进社团了,这样想好像问题简单一些。我们把学生的值作为二分图的一个集合,社团作为二分图的一个集合,这样当天的最大值就成了二分图最大匹配问题。既...

2019-10-08 21:10:32 270

原创 cf-gym100500-b Conference Room

题意:给你4个1000长度的数组,每个数组可以转动(比如a[1] = a[3],a[2] = a[1] ,a[3] = a[2]) ,问能否有种情况使得任意的i(1-n)a[i]+b[i]+c[i]+d[i] = sum,sum是自己给的一个值。思路:能想通sum是求出来的,及所有的4个数组的累加和被n除。那么我们把一个数组转动1000次每次每一位和sum做差压入set里,只要剩下三个数组...

2019-10-08 12:13:44 259 1

原创 Codeforces Round #227 (Div. 2) George and Interesting Graph

题意:有向图500个点,1000条边,删除和添加一些边使得除了一个点以外每个点的入度和出度为2,剩下那一个点跟所有点都有连边,问最小操作数。思路:枚举中心点,然后将剩下的点拆成2个点,入度和出度(精神分裂)。然后二分图跑最大匹配,这样就好搞了。代码:#include <bits/stdc++.h>using namespace std;#define ll long long...

2019-10-07 22:26:57 142

原创 cf 600f Educational Codeforces Round 2 F Edge coloring of bipartite graph 匈牙利板子理解

题意:一个二分图,两边各1e3个点,1e5条边。求最小染色种类(染色边)方案使得同一个点相连的边没有相同染色。思路:二分图没有奇环1000个点n*m的时间刚好够考虑匈牙利算法,我们每次更新一条边,然后强行配偶,被绿的那个点再去找新欢。那我们染边也一样,因为没有奇环。我们每次找两个点所能连出的最小染色序号,然后强行配偶选择一个最小序号,被绿的那个点再去新点匹配新的最小序号找新欢,0 1 0...

2019-10-07 15:13:13 299

原创 cf 429e Points and Segments

题意:给1e5个区间(区间大小1e9,构造区间01染色,可否构造出每个点被染成0和被染成1的次数一样。思路:想通一点,不可能输出-1差分,染色相当于a[l]++,a[r+1]–设蓝+1,红-1,那么染蓝a[l]++,a[r+1]–;染红a[l]–,a[r+1]++把差分问题转为建图,a[l]++,a[r+1]–变为从l到r+1的有向边,同理染红相反问题可以转换为如何使得每个点入度和出...

2019-10-05 18:50:01 217

原创 cf527 E Data Center Drama

题意:无向图,让你定向每条边,有必要可以加一些边,使得图中每个点的入度和出度%2==0,输出最小加边的构造方式。思路:奇度相连。a-b-c-d-e改为a->b<-c->d<-e,边为奇数任意一个点连一个自环,之后跑欧拉回路。代码:#include <bits/stdc++.h>using namespace std;#define ll long lo...

2019-10-05 15:12:55 273

原创 cf 723e One-Way Reform

题意:给你一个无向图,使其变为有向,让入度==出度的点最多。思路:想通一个点:只有度数为偶数的点可以满足条件。想通这一点之后可以跟奇点建立一些虚边,跑欧拉回路。代码:#include <bits/stdc++.h>using namespace std;#define ll long long#define forn(i,n) for(int i=0;i<n;i++...

2019-10-05 03:05:02 138

原创 cf 36e Two Paths

此题标难度2500,场内ac4人,因为是一开始的cf,段位都不高就给的分低了。可能有2700分。欧拉路径好题题意:给你一个无向图,问能否输出两条路径,使得遍历所有边。思路:很显然,一眼能想到欧拉路径,但是两条看似简单,其实要想很多。m==1 此时输出-1只有一个联通块,那么我们仔细想一下,当度数为0,2,4的时候是可以的,0 和 2很显然。但4怎么搞,这是一个这道题比较难也比较亮的一点...

2019-10-05 00:41:43 146

原创 Luogu P2731 骑马修栅栏 Riding the Fences

圈套圈板子题,详解推荐看这位大佬的博客:https://www.cnblogs.com/acxblog/p/7390301.html#include <bits/stdc++.h>using namespace std;#define ll long long#define forn(i,n) for(int i=0;i<n;i++)#define for1(i,n) ...

2019-10-04 20:20:27 132

原创 Codeforces Round #590 (Div. 3) 训练总结及A-F题解

总结:A5mins ac,B过的慢22mins ac,接着就被c卡了一小时1小时ac,写到了d题,因为打星练了下手速,无板子17mins ac还算不错,e是个差分,f思维题。总结:C题想多一点,就节省了很多代码量。E题要静下心写。题解:A.题意:00个货物,价格不一。使所有货物价格变为一个价格,且新总价格>=原sum且要求变动最小。思路:-1找到平均值+1代码:#inc...

2019-10-02 14:22:01 204

原创 CF1076D 最短路树

题意:n个点m条边,最多可以删除m-k条边,使得剩下的边为构成原图的最短路树。思路:dij之后跑一边dfs最短路树。代码:#include <bits/stdc++.h>using namespace std;#define ll long long#define forn(i,n) for(int i=0;i<n;i++)#define for1(i,n) for...

2019-09-27 14:48:11 212

原创 cf 510c Fox And Names 拓扑排序

题意: n(100)个字符串长度不超过100,按照题目给出的顺序能否重新定义一下字典序。如果可以输出这26个字母思路:拓扑排序代码:#include <bits/stdc++.h>using namespace std;#define ll long long#define forn(i,n) for(int i=0;i<n;i++)#define for1(i,n...

2019-09-22 17:05:02 163

原创 19上海icpc网络赛 G Substring哈希好题

这道题乍一看不能hash实际上最多sqrt(1e5)种长度,所以1e4*sqrt(1e5)就可以了但这种hash第一次见#include <bits/stdc++.h>using namespace std;#define ull unsigned long long#define forn(i,n) for(int i=0;i<n;i++)#define for1(...

2019-09-20 03:05:45 206

原创 2019西北大学新生训练第一弹题解

https://vjudge.net/contest/325824#overview只有后4题和H题的题解,其他题不会的同学去群里问问过的同学。N题 思维题题解:没魔法的时候:按顺序来,用一个cnt来计数,遇到左括号++,右括号就消耗一个–,中间有一次cnt<0那么代表这个串已经不合法了输出No。有魔法的时候其实就是cnt<0有一次机会,那么我们第一次cnt<0不输出No...

2019-09-20 02:20:02 1042

原创 19icpc网络赛补题记录及题解

南京网络赛A题意:一个蛇形矩阵,每个数美丽值等于十进制各位的权值相加,标记一些点,每次问一个矩阵内美丽值之和思路:可以通过根据x,y推出被标记的点数值,再利用二维偏序按x排序,树状数组维护y。每次查询为二维平面的矩阵差分。代码:#include <bits/stdc++.h>using namespace std;#define ll long long#defin...

2019-09-11 09:00:18 214

原创 bzoj4940 树刨+莫队(好题)

题意:一颗树n个点有点权,m次操作。操作两种:换根查询 x点的子树选每一个点,y点的子树选每一个点,如果两点点权相同ans++,输出ansn1e5,m5e5换根是幌子,先按照1来树刨,这个跟bzoj3083结论一样,就是分三种情况:当前根节点与被查询的点一样,那么这个点的子树区间直接是1-n当前根节点与被查询的点x的LCA与x不一样,即lca(root,x)!=x,查询区间是...

2019-09-09 15:09:57 171

原创 Codeforces Round #486 (Div. 3) A-F题解

A.题意:100个数字,大小100,问可否从中选出k个不同数字,输出位置思路:map.count代码:#include <bits/stdc++.h>using namespace std;#define ll long long#define forn(i,n) for(int i=0;i<n;i++)#define for1(i,n) for(int i=1;i...

2019-08-29 11:18:29 130

原创 Poj3237 树刨+线段树(边权转点权)

题意:在树上操作,每次将两点路径值全变负和单点修改。每次求两点间路径的最大值。思路:边权转点权的话,每次把一条边的儿子点作为该边的权值。想起来挺好想,很容易出问题。查询修改的话,要将多算的那条lca去掉就可以了。剩下的就是板子。总结:去掉lca,只需要判断top[x]==top[y]时,x和y是否相等,不等把deep浅的点+1即可。边权转点权,因为你不知道谁是谁的父亲,所以要树刨完或...

2019-08-22 19:09:16 251

原创 hdu3966-树刨+bit区间修改单点查询

题意:对树上两点区间增加或减少每点的权值,单点查询每点的权值。思路:一开始线段树写的,但是我的被卡了2*maxn的空间,优化一下就可以了,但是嫌太麻烦,出题人可能就打算卡部分人的线段树。用bit的话,类似预处理数组,每次查询0-x点的区间和就可以,修改左端点和右端点的权值为v和-v即可。代码:#include <bits/stdc++.h>using namespace st...

2019-08-21 22:47:41 142

原创 bzoj2243 树刨+线段树区间合并

题意:区间修改树上两点间的颜色种类,区间查询树上两点间的线段数。思路:树刨+线段树,区间合并是第一次写。思路为线段树维护左端点和右端点的颜色,合并时相同就–。具体实现不太好写。代码:#include <bits/stdc++.h>using namespace std;#define ll long long#define forn(i,n) for(int i=0;i&l...

2019-08-21 22:24:14 177

原创 bzoj 2342-manacher板子理解O(n)

题意:给一个5e5的字符串,求最长满足双回文的子串的长度。双回文的定义为:一个字符串长度为4,回文,且前半段和后半段单独为回文串。思路:若已知条件的回文边界超过覆盖了新统计点,且该点的回文半径可以达到上一次的点,那么统计一次答案。代码:#include <bits/stdc++.h>using namespace std;#define ll long long#defin...

2019-08-17 20:26:56 225

原创 bzoj2084 hash||manacher

题意:给一个01串,现在定义一个新的回文方式为0和1相等,而00,11不等。求有多少子串满足这种新的回文方式。思路:求多少子串其实就是求每个点最大回文串半径。manacher很好写O(n)hash的话,我们计算两个哈希值,一个s的一个翻转s后01再反转的哈希值。之后二分判断即可。manacher:#include <bits/stdc++.h>using namespac...

2019-08-17 15:33:36 125

空空如也

空空如也

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

TA关注的人

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