自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 9 * 9 数独求解

#include<bits/stdc++.h>#define inf 0x3f3f3f3fusing namespace std;typedef long long ll;const int N = 10;struct node{ int x, y, id;} s[110];int n = 9;int top = 0;int ma[N][N];in...

2020-01-30 18:06:13 769

原创 Computer(求树上所有点的最远点距离)

题目链接:Computer题意:求树上所有点的最远点距离。思路:树上任意点的最远点一定是直径端点,枚举一下端点就好了。#include<bits/stdc++.h>#define inf 0x3f3f3f3fusing namespace std;typedef long long ll;const int N = 10010;struct node{ ...

2019-12-02 21:41:51 455

原创 树论相关

树的直径定义:对于一颗无根树,找到两个点,使得他们之间的距离最远,这个距离就是树的直径。求法:两次bfs或dfs(O(n)):第一次以任意节点 x 为根,求出距离最远点 y,这个点一定在树的直径上(证明:树的直径求法及证明),第二次以这个点为根跑出来的最远点 z,y 与 z 的距离,就是树的直径。树形 dp(O(n)) :dp[ i ]表示经过 i 点的最长链长度。性质:直径两端...

2019-12-02 21:36:16 263

原创 Tree(树形dp)

题目链接:Tree题意:给你一棵树 ,让你求树的直径的长度和数量。思路:如果单纯求树的直径的话, 可以用两次dfs解决, 但是这样只能求出直径,无法求出数目了, 要想连同数目一起求出来, 还得枚举所有的叶子, 这样肯定超时, 所以用树形dp, 在记录直径的同时记录数量。 记录直径的原理就是, 任取一点当根, 一直搜到底, 然后开始往上更新长度, 当碰到一个点有不止一条链的时候,开始更新他的...

2019-12-02 18:23:43 211

原创 Rainbow Roads(dfs序 + 差分)

题目链接:Rainbow Roads题意:给你一个 n 个节点的树,给你 n - 1 条边,以及每条边的颜色。定义彩虹路:路上的相邻的两条边颜色不同。定义彩虹点:以这个点为起点,其他所有点为终点的所有路都是彩虹路。问你有多少个彩虹点并从小到大输出编号。#include<bits/stdc++.h>#define inf 0x3f3f3f3f#define lowbit(i...

2019-11-29 20:31:00 193

原创 Swap Free(求最大团)

题目链接:D. Swap Free题意:给你n个长度相同,包含字母种类相同,每种字母数量相同,让你确定一个字符串集合,集合中的任意一个串不能通过交换任意两个不同的位置变成集合中的另一个串,问你集合最大有多个字符串。...

2019-11-26 21:34:48 487

原创 图论相关

无向图概念:定义一个图无向图G团:G的一个完全子图。最大团:G中最大的团。独立集:任意两点都不相连的顶点的集合。最大独立集:G中两两顶点之间都不相连的最多个数的集合。性质:无向图的最大团 == 该无向图补图的最大独立集二分图概念:顶点集V可分割为两个互不相交的子集,并且图中每条边依附的两个顶点都分别属于这两个互不相交的子集,两个子集内的顶点不相连。二分图的最大匹配:...

2019-11-26 20:29:16 102

原创 The Contest(思维+前缀和)

题目链接:E. The Contest题意:三个人,每个人有一些数字,组合起来是一个排列,现在给你三个人手中数字的数量以及手中是哪几个数,每次操作可以把一个人手中的数字给另个人,问你最少多少次操作使得第一个人拥有这个排列的某个前缀,第三个人拥有这个排列的某个后缀,第二个人拥有中间剩下的部分。思路:看到三个人操作,我们先看两个人操作时的情况:假设到最后,第一个人拥有1i,第二个人拥有i+...

2019-11-21 16:17:00 300

原创 后缀数组模板

题目链接:【模板】后缀排序学习链接:后缀数组 最详细讲解[知识点]后缀数组#include<bits/stdc++.h>#define inf 0x3f3f3f3fusing namespace std;typedef long long ll;const int N = 1000010;int n, m;int y[N], x[N], c[N], rk[N]...

2019-11-01 19:53:32 106

原创 FFT模板

#include <iostream>#include <bits/stdc++.h>using namespace std;const double pi=acos(-1.0);struct Complex{ double x,y;///实部和虚部 x+yi Complex(double _x=0.0,double _y=0.0) {...

2019-10-14 10:58:06 97

原创 主席树模板

题目链接:【模板】可持久化线段树 1(主席树)学习链接:主席树#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>#include<cmath>#include<algorithm>#include<queue>#...

2019-09-28 21:02:01 100

原创 2018ICPC南京现场赛模拟

A:博弈题意:给你 n,k,代表有 n 块石头,每次每个人只能在任意位置拿连续的 1 - k 块石头,轮到谁无石头可拿时谁输。先手赢输出“Adrien”,后手赢输出“Austin”思路:当 k >= n 时先手赢否则,只要 k 大于 1,或者 k == 1 且 n 为奇数时先手赢。trick: n 可能等于 0,特判。#include<bits/stdc++.h>...

2019-09-25 11:28:47 470

原创 Who is better?(斐波那契博弈+拓展中国剩余定理)

题目链接:Who is better?题意:两个人玩游戏,游戏规则如下:有一堆个数为n的石子,游戏双方轮流取石子,满足:先手不能在第一次把所有的石子取完;之后每次可以取的石子数介于1到对手刚取的石子数的2倍之间(包含1和对手刚取的石子数的2倍)。约定取走最后一个石子的人为赢家,求必败态。现在给你 m 行 a 和 b 表示 n ≡ b (mod a)。让你求出 n 。之后根据求...

2019-09-17 21:32:43 283

原创 so easy(并查集+unorder_map)

题目链接:so easy题意:长度为 n 的序列,m 次操作,每次两种操作 1 x 表示 x 这个下标不可用,2 x 查询 x (包括 x )之后的第一个可用的下标思路:n 是 1e9 所以用 map 代替数组,但是直接用 map 会 T,改成 unorder_map 就OK了#include<iostream>#include<cstdio>#includ...

2019-09-17 21:03:13 132

原创 Largest Allowed Area(二维前缀和+二分答案)

题目链接:2018 ICPC Asia Nakhon Pathom Regional Contest (PDF)题意:n * m 的只含有 0 1 的矩阵,找一个正方形使得正方形中的 1 的数量不能超过 1 ,问正方形最大边长。思路:答案是线性的,首先想到二分答案但是判断当前长度是否满足条件的时候我们需要进行暴力,然后就是想到前缀和,求前缀和的方法很容易理解。sum [ i ][ j ...

2019-09-17 20:40:41 169

原创 eclipse常用快捷键

Ctrl + F11 : 编译运行alt+shift+r:重命名Alt+方向键 :将当前行的内容往上或下移动ctrl+.及ctrl+1:下一个错误及快速修改ctrl+m:大显示屏幕能够提高工作效率。Ctrl+m是编辑器窗口最大化的快捷键。格式化 Ctrl+Shift+F先按下Alt+Shift+Q,然后按C 打开控制台其他参考:各种快捷键...

2019-09-09 11:30:16 71

原创 Uniqueness(思维 or 二分 or 暴力)

题目链接:B. Uniqueness题意:n (1 - 2000) 个数,只删除一个子串使得数组中没有重复元素,求删除的子串长度。思路(参考博客cf1208B B. Uniqueness):逆向考虑问题,要删除的最少区间长度对应最多能保留多少个数,又因为区间要是连续的,所以只能删除左端区间,或中区间,或右边区间。利用两个map,第一个存从左往右能保留的每个元素的下标,并用一个数记录最终下标;...

2019-08-27 19:10:39 178

原创 Kirk and a Binary String(思维)

题目链接:D2. Kirk and a Binary String (hard version)题意:给你一个01串,你可以改变某些 1 使得串中 0 的个数尽量多,但是改变后的串的任意一个区间的LIS长度与原串相同。串的长度为 1e5 。参考博客:Codeforces Round #581 (Div. 2)Kirk and a Binary String (hard version)。%%%...

2019-08-21 20:37:15 580 1

原创 LCM from 1 to n(素数筛+位图优化空间)

题目链接:LCM from 1 to n题意:求1 - n的lcm思路:最小公倍数的适用范围:分数的加减法,中国剩余定理(正确的题在最小公倍数内有解,有唯一的解)。因为,素数是不能被1和自身数以外的其它数整除的数;素数X的N次方,是只能被X的N及以下次方,1和自身数整除。所以,给最小公倍数下一个定义:S个数的最小公倍数,为这S个数中所含素因子的最高次方之间的乘积。如:求756,4400,...

2019-08-17 10:02:17 193

原创 哈希与二分

哈希作为一种高效的数据结构,它正在竞赛中发挥着越来越重要的作用。哈希表最大的优点,就是把数据的存储和查找消耗的时间大大降低,几乎可以看成是常数时间而代价仅仅是消耗比较多的内存。然而在当前可利用内存越来越多的情况下,用空间换时间的做法是值得的。另外,编码比较容易也是它的特点之一。*来看几道具体的题目。给定一个 n ,和长度为 n 的数组,数组中每个数大小不超过1e5。有几次询问,...

2019-08-13 16:41:51 602

原创 Keywords Search(AC自动机模板)

题目链接:Keywords Search题意:T组数据,每组数据n个单词,一个串,问串中出现了几个单词。#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>#include<cmath>#include<algorithm>#i...

2019-08-13 11:24:14 115

原创 Pick The Sticks(01背包)

题目链接:Pick The Sticks题意:往长为L的线段上覆盖线段,要求:要么这些线段都在L的线段上,要么有不超过自身长度一半的部分在线段外面,最多有两条这样的线段(在两头)。思路:一眼看上去就是01背包,所以设 dp [ i ] 表示容量为 i 时的最优解。这样显然不能够表示一个状态,因为并非所有线段都完全被覆盖,所以考虑再增加一维。dp [ i ] [ j ]表示容量是 i 时,...

2019-08-12 10:55:39 442

原创 The Battle of Chibi(树状数组+dp)

题目链接:The Battle of Chibi题意:问你序列中长度为k的上升子序列有多少个。思路(转自博客:HDU 5542 - The Battle of Chibi - [离散化+树状数组优化DP]):首先,不难想到应当假设 dp[i][j] 代表以 a[i] 为结尾的且长度为 j 的严格单增子序列的数目,那么自然地,状态转移就是 dp[i][j]=∑dp[k][j−1],其中 k...

2019-08-10 21:07:21 367

原创 树状数组的部分操作

学习博客:树状数组详解这里说的树状数组的操作包括:单点修改,区间查询区间修改,单点查询区间修改,区间查询其中区间的信息为区间和推导过程以及原理在上面那篇博客中有很详细的介绍,在这里只对一些题目给出模板单点修改,区间查询题目链接:敌兵布阵#include<iostream>#include<cstdio>#include<cstring&g...

2019-08-10 10:36:43 123

原创 着色方案(状压dp)

题目链接:[SCOI2008]着色方案题意:有n个木块排成一行,从左到右依次编号为1~n。你有k种颜色的油漆,其中第i种颜色的油漆足够涂ci个木块。所有油漆刚好足够涂满所有木块,即c1+c2+…+ck=n。相邻两个木块涂相同色显得很难看,所以你希望统计任意两个相邻木块颜色不同的着色方案。第一行为一个正整数k,第二行包含k个整数c1, c2, … , ck。输出一个整数,即方案总数模1,0...

2019-08-09 19:41:29 274

原创 Minimal Area(向量叉乘计算三角形面积)

题目链接:Minimal Area题意:按逆时针给你凸多边形的所有点,让你选三个点使得得到的三角形面积最小。思路:不难证明相邻的三个点是面积最小的,然后叉乘直接计算取最小值就可以。不会叉乘,那咋办嘛!#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>...

2019-08-06 20:13:41 1268

原创 Loppinha, the boy who likes sopinha(dp+记忆化搜索)

题目链接:Loppinha, the boy who likes sopinha题意:给你一个01串,然后连续的x个1需要消耗x*(x+1)/2个能量,现在你可以将一些1变成0,问你最少变几个1使得小号的能量小于给定的能量。思路:首先想到的是贪心,每次都找最长的串然后劈成两半,显然这样不是最优的,比如11111,总能量是3,如果贪心的话就是先变中间的,然后变成11011,然后还需要再变两...

2019-08-06 20:07:47 164

原创 Video Reviews(贪心+二分)

题目链接:Video Reviews题意:有n个人(有顺序),a[i]代表i之前有a[i]个人评论了这个游戏这个人才会评论,但是你可以强迫一个人评论(无论他评论的条件是多少人),问你最少强迫多少人评论才能满足不少于m个人都评论。样例解释input7 42 1 3 3 4 2 3output1强迫第一个人评论,那么编号为1,2,6,7的人都会评论,共4个人,输出1思路:首先是一...

2019-08-06 16:33:58 172

原创 Welfare State(ST表 or 线段树)

题目链接:Welfare State题意:一个数组,两种操作,然你输出最终数组,两种操作是x y 表示把x位置上面的数改成yx 表示把所有小于x的数变成x思路:题目要求只输出最终序列,那么对于一个数来说,对他有影响的只有他的最后一次1操作之后的2操作,以为之前不管怎么操作进行1操作之后都会变成一个固定的数,之后的2操作对其有影响的只有最大的那个值,自然想到用ST表维护区间最大值。...

2019-07-31 09:57:11 222

原创 Path(最短路+最小割)

题目链接:Path题意:给你一个有向图,然后删除一条边的代价是这条边的边权,问你最小付出多少代价,使得点1到n的最短路变长(或者不存在通路)。思路:题目意思也就是说要删除一些边使得原本图中的最短路不存在那么我们可以先找出图中所有的最短路,然后用这些最短路建几个新图然后对这个新图求最小割,也就是最大流,因为最小割就是最少割掉多少流量,使得源点与汇点不连通怎么构建新图呢,我们可以先对原...

2019-07-27 10:43:46 201

原创 Sorting It All Out(唯一拓扑序)

转载自:Sorting It All Out POJ - 1094 拓扑排序 (唯一拓扑序)题目链接:Sorting It All Out题意: 给两个整数n, m, n表示从A到第n个字母, 然后给m个偏序关系, 求用到第几个偏序关系就可以求得唯一的拓扑序列,(注意: 是唯一的拓扑序列),如果可以求得唯一拓扑序列, 则输出用到第几个偏序关系就可以求出, 并输出序列。如果不能确定唯一的拓扑...

2019-06-21 21:33:46 719 1

原创 King(差分约束)

题目链接:King题意:给你几个限制条件,问你是否能构建出来一个序列(a1,a2,a3……an)满足这些条件。样例:输入4 21 2 gt 02 2 lt 21 21 0 gt 01 0 lt 00输出lamentable kingdomsuccessful conspiracy解释一下样例:多组输入第一行n(0 < n <= 100)和m(0 &l...

2019-06-18 17:38:36 181

原创 Task Schedule(最大流是否满流)

题目链接:题意:有N个项目,M台机器。给出每个项目的开始时间和结束时间以及在完成这个项目所需要的时间。每台机器每天只能处理一个项目,一个项目在不同的天可以被不同的机器处理。问你是否能按时完成所有项目。思路:将源点和任务相连,容量是需要的天数。然后将任务需要在允许的天数内建边,容量为1。最后将所有的天数和汇点建边,容量为m,因为每天最多有m个,因为每个任务至少一天,如果同时工作,所以最...

2019-06-13 19:45:14 420

原创 Association for the Country of Mububa(dp)

题目链接:Association for the Country of Mububa题意:将这些数划分成n个区间,使得后一个区间里数字的和大于等于前一个区间里数字的和,求最大可以划分多少区间。思路(gxj大佬的):我们知道所有数到最后都会属于某一个区间,某个数结尾的序列最后一个区间值是最大的我们可以这样想,每个数相当于插入到他前一个数形成的序列结尾,然后就变成了一个一个数插入不断取最优值...

2019-06-11 19:45:17 248

原创 The Bigger the Better(memcmp或者字符串模拟)

题目链接:Problem 2267 The Bigger the Better题意:给你两个数组,每次都能从其中一个数组中选取第一个元素来构建一个新数组,选取后这个元素就被删除掉,问你能够构成的字典序最大的数组是什么样的。两个数组都是1e5,T组输入,T<=102样例1//T组数据3 4//n,m第一个数组和第二个数组的元素个数2 5 2//第一个数组内的元素3 6 3 1//第...

2019-06-09 16:31:26 326

原创 【模板】网络最大流 + 最小费用最大流

题目链接:P3376 【模板】网络最大流 这几天敲了几遍最大流的板子,还是有一些细节处理不好在这里总结一下前向星开边的数组的时候记得要开大一点,然后记得初始化head数组与totdfs的时候应该是这篇文章下面贴的代码稍微快一点level数组的用途是判断层次,初始化的值可以灵活变化,不作要求tot的值一定要初始化为0原因:在dfs的时候我们要用到正向边减流,反向边加流,我们是用...

2019-06-07 18:08:31 124

原创 Lost Numbers(简单交互)

import java.util.*;import java.math.*;public class Main { public static int N = 200010; public static void main(String[] args) { Scanner in = new Scanner(System.in); int n; BigInteger modu ...

2019-05-16 19:16:43 441

原创 K-based Numbers(简单dp)

题目链接:1009. K-based Numbers然后还有第三个版本,数据变大,需要用到矩阵快速幂K-based Numbers. Version 3(DP+快速乘+矩阵快速幂)题意:给你n和k,n+k <= 18让你求k进制下n位数连续两位数不为0的数的个数有多少个。思路:这题数据比较小,直接dp就可以,好像是可以数位dp的,但是我交了一发T了,然后想了一下,n == 8 ...

2019-05-14 19:03:15 171

原创 Flags(dp)

题目链接:1225. Flags题意:给你三种颜色的旗帜要求蓝色只能放在红色和白色中间相同颜色不能相邻给你n个位置问你不同放法的方案数思路:对于第i个位置来说,如果我们不用蓝色旗帜,那么自然就是i-1这个状态的方案数因为i-1这个状态的结束只能是红色或白色,我们对应着放就可以了如果我们用蓝色旗帜(当然最后一个位置不可能是蓝色,所以,当前位置用蓝色的意思是放在倒数第二个位置,那...

2019-05-14 16:50:38 108

转载 Java重载(Arrays.sort()从大到小排)

Java中的Arrays.sort()方法默认将数组元素从大到小排序. 要实现从大到小排序java也提供了一种方法:Arrays中的sort(T[] a, Comparator<?super T> c),但是传入的数组类型不能是基本类型(int char double),只能使用对应的类(Integer),因为Comparator接口中的compare()方法默认从小到大排序,我...

2019-05-09 18:27:33 2158 1

空空如也

空空如也

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

TA关注的人

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