自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 nanchang B A Funny Bipartite Graph

题意是:给你一个二分图,让你在其中选一些边,边和边两边的点构成一个新图,然后问新图的最小代价?新图要满足两个条件:右边的点必须全选,左边的点必须满足互斥关系。原图也满足一些性质,每个点的度小于3,左边的每个点不会向左边编号比它小的点连边。为什么爆搜能过,为什么爆搜能过,为什么爆搜能过。。。。。。而且还比我快。爆搜就是加个剪枝,如果当前的sum比ans大就不继续往下搜了。。。。不会...

2019-12-11 16:32:54 576

原创 GYM 102439 Equal Mod Segments

题意是,给你一个序列,问有多少区间 [l,r] 满足 a[l]%a[l+1]%a[l+2].....%a[r]==a[r]%a[r-1]%a[r-2]...%a[l]?我们考虑一个区间 [l,r] 假设区间内最小值在pos处取得,那么区间的合法性可以表示为a[l]%a[l+1]%a[l+2].....%a[pos]==a[r]%a[r-1]%a[r-2]...%a[pos].因为在mod ...

2019-12-09 17:17:13 230

原创 2014-2015 ACM-ICPC Northeastern European Regional Contest (NEERC 14)

I - Improvements题意:给你一个排列,定义序列中相邻的两个数为一个区间,要求最终的序列不能有相交的区间,问最多有几个数可以保留不动?首先想到了最终序列是个什么样,然后也感觉不会像贪心了。思路还是不够清奇。。。。考虑每个数的下标,如果对一个合法序列重排序,那么可以发现他们下标是一个先递增再递减的。比如 对于原序列 18 7 2 3 6 5 4,按照元素大小对下标重...

2019-12-04 16:50:27 248

原创 Banned Patterns 计蒜客 - A1533

这个题,感觉特别神奇,感觉复杂度是正确的,但是给不出特别正确的证明。题意:给你n个匹配串,给你m次询问,然后问询问串里有没有子串是某个匹配串的映射?最开始就感觉多模式匹配肯定是ac自动机嘛,然后发现映射情况数太多不好处理,就想有没有什么方法能消除字母与字母之间的影响,想了想口胡了一种做法,就是把考虑每个字母上次出现的位置,然后表示成位置差,这样一来每个串就可以o(1)的映射成一个唯一的数字...

2019-12-04 16:49:28 251

原创 Arranging Wine

大概在很久之后,做了一道差不多的题,才回来把这道题给补了。题意是给你n瓶红酒,m瓶白酒,然后把白酒和红酒分成很多堆,红白相间排成一行,然后每堆红酒不超过d瓶,问有多少种方案。题目给的解释特别有迷惑性,其实我们把一堆平着放,就是求所有的酒排列方案(相邻的红酒不能超过d瓶)。然后考虑先放白酒,那么白酒与白酒之间有m+1个空位,只要把红酒插进去就行。就是把n个小球放到m个不同的盒子中,每...

2019-11-23 10:25:25 122

原创 Tree Factory cf596div1D

给以一条链,每次可以把一个点变成它父亲的父亲儿子,问最少多少次可以变成给定的树?考虑将一颗树变成一条链,那么就是把一个点变成兄弟的儿子。而考虑最少需要多少步,每一次操作最多让树高加一,那么最少需要n-max(dep)-1次。那么为了让操作次数达到最少,每次都必须更新最长链。#include <bits/stdc++.h>using namespace std;...

2019-11-20 15:34:05 92

原创 The 2019 Asia Nanchang First Round Online Programming Contest C. Hello 2019

赛后发现是道原题。。。比赛时想到了线段树维护dp,然而dp没有写好。。。考虑如果只对原序列询问一次,那么可以o(n)的dp去做,dp[i][j]表示在i个位置达到状态j的最小花费,第二维的状态有{2},{20},{201},{2019}。发现可以分开考虑在每个位置转移的花费,然后用线段树维护。考虑两个不同区间状态的合并,可以暴力枚举中间转态,k^3的转移。#includ...

2019-09-09 16:18:40 345

原创 Gym - 101190D Delight for a Cat(费用流)

题意:在n个小时中,猫要么在睡觉,要么在吃东西,不能同时进行,但是要求每相邻的k个小时,猫睡觉的时间不能小于ms,吃东西的时间不能小于me,给出每个小时吃东西和睡觉的收益,求最大收益。想了好久的上下限,但是好像没办法做,也可以是我太菜了。看题解也想了好久,果然是我太菜了吗。。。。考虑一开始全在睡觉,那么要求我们找出一些时间点来,使满足限制的条件下,收益最大。我们用第i个点来表示第i...

2019-09-03 17:15:50 171

原创 Solid Dominoes Tilings HDU - 5731 (轮廓线 容斥 )

比较好玩的容斥,,,如果不加限制的话,是一个经典的轮廓线dp。加上限制之后,考虑利用容斥求出不合法的方案数。最开始想的时候,想的是求出所有的方案数,减去所有列不合法的方案数,减去所有行不合法但列合法的方案数。。但是好像过去麻烦,可以考虑再求得时候就保证行合法,这样就只需要减去列不合法的方案数。只需要容斥一下,枚举所有可能的列状态,减去一列不合法的方案,加上两列不合法方案,,,...

2019-08-28 16:13:52 128

原创 2019牛客多校赛 第九场 I KM and M

首先,可以按位考虑,对于第i位有多少个m的倍数满足这一位上为1?对于一个数x,我们判断这一位上是否为1,参考十进制的做法,即 ;那么将公式变一下型:后半部分是一个等差数列整除一个整数的求和式。很久之前就存过这个板子了,但比赛时还是不会做。。。。#include <bits/stdc++.h>using namespace std;#define ll lon...

2019-08-21 20:59:58 190

原创 2019hdu多校六 Ridiculous Netizens(点分治)

大概题意是: 给你一颗无根树,每一个结点有点权, 有多少颗子树的结点乘积不超过m?子树的定义是树上的连通块。首先我们考虑另一个问题,假设给你一颗有根树,所以包含根的子树有多少种满足乘积不超过m?考虑树形dp的做法,定义dp[i][j]是在i被选取后这颗子树中乘积为j的子树方案数,这样每次将两颗子树合并的复杂度是m*m的。但实际上子树大小限制了状态数不会那么多,所以每次计算一个点的贡献的复...

2019-08-08 10:56:28 257

原创 2019牛客1 i

大致题意:给你n个点,第i个点在的位置为(xi,yi),有两个属性值(ai,bi)。现在让你把这n个点划分为A和B两个部分,使得最后不存在i∈A和j∈B,使得xi>=xj且yi<=yj。然后对于所有的划分方法,找到并输出 比较巧妙的dp思路吧。。。。...

2019-08-02 14:25:26 111

原创 DSU on tree CodeForces - 741D

dsu on tree主要还是去学了一下这个东西,大概就是利用的轻重链的性质,把暴力的复杂度优化到了(nlogn)。非常神奇的算法。题目还是略板的。题目意思就是问每棵子树上有多少权值异或和为0或者二进制最多1个1的链。#include <bits/stdc++.h>using namespace std;#define N 500005#define go(...

2019-08-02 14:20:54 174

原创 2019牛客第一场h xor

应用了线性基的性质。一个基可以表示向量空间里任意一个数。所以任意求一组基,计算每一个基之外的数的贡献,就是这个数必选,其他数可选可不选基之内的数,如果这个基不可被替代,那么贡献为0,否则贡献与基之外的数一样。​#include <bits/stdc++.h>using namespace std;#define N 300005#define pii pai...

2019-07-26 21:09:11 89

原创 Wavel Sequence HDU - 6078 (dp)

这个题,做的时候想了个cdq的做法,但是o(n^2 lognlogn)的,感觉上就会T死。正解还是很巧妙的。。。定义dp[i][j],1<=i<=n,0<=j<=1,表示以a[i]为结尾,大于或小于的情况。枚举第二个数组的元素,对于每个元素,遍历第一个数组,用前缀和统计一个大于和小于的情况,遇到相等遍进行修改。#include <bits/stdc+...

2019-07-14 10:48:58 177

原创 RXD and numbers HDU - 6064(欧拉回路路径数)

BEST定理答案为T1(G)∗∏i=1n(di−1)!T1(G)∗∏i=1n(di−1)!其中T1(G)=T1(G)=(出度矩阵-邻接矩阵)去掉第一行第一列后行列式的值这道题固定了起点是1,所以答案要乘上1的出度,可以理解成把一条回路从1点断开。又因为这道题两个点之间的边被认为是相同的,还需要对答案除以∏mi=1∏mj=1(Di,j!)。#include <bits/s...

2019-07-13 09:50:51 162

原创 HDU-6065 RXD, tree and sequence(dp+LCA)

主要利用了LCA 的性质——一个区间的LCA等于区间内相邻点的深度最低的LCA。所以这个问题就转化成选取k个相邻点的深度 或 单点的深度。#include <bits/stdc++.h>using namespace std;#define N 300005#define go(i,a,b) for(int i=(a);i<=(b);i++)#define i...

2019-07-12 10:12:39 128

原创 牛客5 G Glad You Came

长度为n的数组,m次操作, 每次操作把一个区间内小于v的数更新成vm很大,但是据说mlogn能卡过去,也只能说一句随机数据真的蛮快的正解是rmq的变形?用倍增的思想把一个区间分成nlogn个区间,这样每一个区间都能分成2个区间。每次更新直接更新他所在的区间。全部跟新完后按区间从大到小逆向更新一遍。真是神奇的操作。#include <bits/stdc++.h>...

2019-07-04 10:30:08 105

原创 牛客第一场多校H Longest Path &&斜率dp

题意:给你一颗树,每条边有边权,定义每条路径长度为路径上相邻边 权值差的平方和。树dp加斜率优化#include <bits/stdc++.h>using namespace std;#define N 200005#define ll long long#define go(i,a,b) for(int i=(a);i<=(b);i++)#define de...

2019-07-01 10:05:25 193

转载 Coloring Tree

考虑这样一个推广问题:有一个无向图,给每个点染色,有k种颜色,任意两个距离<=d的点不能相同颜色,问有多少种染色方案这个问题是不好解决的,但我们可以解决一些特殊的拓扑结构如果是个链,那显然从左往右计算每个位置可以染多少种颜色然后乘起来就行了 如果是个树,那就是这个题目了,主要是要类比链的情况寻找一个合适的拓扑序进行计算,找这个拓扑序的关键就是轮到某个点x的时候,已经拓扑过的与x距离&...

2019-06-14 20:20:35 184

原创 牛客多校第一场 B Symmetric Matrix

链接:https://ac.nowcoder.com/acm/contest/139/B来源:牛客网题目描述Count the number of n x n matrices A satisfying the following condition modulo m.* Ai, j ∈ {0, 1, 2} for all 1 ≤ i, j ≤ n.* Ai, j = Aj, i...

2019-06-05 19:49:48 192

原创 E.F(cf div2 Round 66)

E.Ehab and the Expected GCD Problem题意:对n的一个排列,使这个排列中前缀的不同gcd个数最大,问有多少种这样的排列?思路:考虑gcd的衰减,所以第一个数一定有最多的质因子个数。那么它一定是形如2^x*3^y,(其中y<=1)。因为任何比3大的质数都至少可以提供2个2,而3^2可以提供3个2。所以我们可以考虑如下的dp:dp[i][j][k]...

2019-06-04 06:47:46 139

原创 Master of Data Structure Gym - 102220D(虚树)

题意:给以一颗有n个节点的树,给你m次操作。n<5e5,m<2000操作有:对一条链加x,异或x,减x,求和,求异或和,求最大值减最小值,求和k最接近的数思路:因为m只有2000次,所以需要操作的点不会特别多,可以参考离散化的思想,把重要的点建一颗虚树,虚树的大小是o(m)的。原树除了重要点之后剩下了一些链接重要点的链,我们可以把这些链缩成一个点,因为这些链上每个点的值都是相同...

2019-05-29 16:51:02 614

原创 Neko and tree HDU - 6540 (树形dp)

题意:给你一棵树,树上有一些重要的点,让你选一个只包含重要的点的点集,满足点集里最远的两个点不超过k,问有多少种选法想了好久,题解说得太简略了。。。dp[i][j]表示在i这颗子树中距离i点最远点距离为j的方案数。考虑如何从子树转移,显然 我们遍历到一颗新子树时,要用之前的所有方案乘以这颗子树的方案来更新。即dp[u][max(i,j+1)]+=dp[u][i]*dp[to][j...

2019-05-24 19:26:27 1295 3

原创 Chessboard HDU - 6532 (最大费用流)

题意:给你一个棋盘,棋盘上有一些棋子,有一些规定,规定超过多少行或者多少列后只能取不超过k的棋子。题解:棋盘问题是一个很经典的网络流问题。建图还是比较好想的,但是不会跑最大费用流,赛后补了一下。但是好像这道题有问题,最大费用最大流也能过。但是明显不符合费用最大时流最大。所以想一下最小费用最大流的做法,首先费用取反,这样就变成了最小费用,每次跑一条s到t的最短路,然后减去这条...

2019-05-23 20:52:02 305

原创 洛谷p1399(基环树)

题意:给你一个只有一个环的图,让你选一个点(可以在边上),使得到最远点的最短路最小。思路:如果是一颗树的话,就是求树的直径/2。如果是基环树的话,这道题显然不是基环树的直径,因为是到最远点的最短路的缘故。那我们考虑最终解到其他所有点的最短路中,一定没有环,所以一定是一棵树。所以我们枚举基环树所有可能出现的树,即枚举在环上去一条边,求树的直径。显然最后,我们需要得到的很多解中...

2019-05-22 20:37:50 434

原创 Asa's Chess Problem UVALive - 7670

大意:给你一个N*N的棋盘,每个格子上有白子有黑子,棋子两两配对(配对的棋子一定在同一行或者同一列),配对的棋子可以互相交换位置,要求每行每列的黑子个数不超过不限不低于下限。思路:看到这个问题很容易想到网络流,然而不会建图,参考了巨巨们的思路。大概是:起点向每一行建边,上下限由是行的上下限,无费用,行向列建边,如果这个棋子是黑子,上下限都是1,无费用。列向终端建边,上下...

2019-04-19 20:49:24 231

原创 Discover Water Tank HDU - 5575

题意:一个底面1*n的容器,两边无限高,中间被n-1块板阻断,给你m次观测,每次观测告诉你第i个区域是否有水,问你这些观测中最多有几个是对的。思路:如果水超过板的高度,那么板的两边的区间就可以视为一个区间。所以只要枚举水没有溢出和水已经溢出这两种状态。我们从低到高的角度遍历板子,每次处理好这种状态,然后把这两个区间合并成一个区间,最后合并成一个区间,取一个最大值即可。我们把每个区域的观测存到一...

2019-04-16 16:00:57 235

原创 GCD HDU - 5930

题意·:给你一个序列,然后有q次操作,每次修改一个数,求有所有子区间不同gcd个个数。首先预处理出原序列的子区间gcd个数。枚举每个i为左端点,然后以这个为左端点的区间最多有log(n)个,因为a[i]有不超过log(n)个素因子。然后线段树上二分查找这logn个不同的区间。然后修改i之会影响含a[i]的子序列,因为i为右端点向左最多有logn个不同的区间,向右也最多有logn个不同的...

2019-04-15 16:41:36 222

原创 It's a Mod, Mod, Mod, Mod World

等差数列整除整数向下取整求和找的一个巨巨的板子,,,但是不知道怎么证的。。。。。还是存一下板子吧。。。。#include <bits/stdc++.h>using namespace std;#define ll long long//a 公差 b 首项 c 除数 n 项数ll get(ll a,ll b,ll c,ll n){ if (n<=0)...

2019-04-08 21:13:53 525

原创 Grouping ZOJ - 3795

题意:缩点找最长链#include &lt;bits/stdc++.h&gt;using namespace std;#define N 100005int dp[N],vis[N],f[N];vector&lt;int&gt;path[N],son[N];stack&lt;int&gt;q;int dep[N],low[N],tot,cnt;void tarjan(int ...

2019-03-15 17:21:54 112

原创 Awesome Shawarma Gym - 101991A(点分治)

Fouad has a raw awesome shawarma, and he is in a city which is represented as an undirected tree. He heard that there is a magical oven that will cook the Shawarma, to make it so delicious. However, I...

2018-12-12 14:43:44 267

原创 Mondriaan's Dream ZOJ - 1100

题意:给你一个n*m的矩阵,让你用1*2(2*1)的小矩阵去填充它,问有多少种方案。这题,也是看了别人的博客才有了思路,不过大神们的推导我死活没看懂,,我的想法是,设初始状态为空(第0行为满),末状态为满,一行一行的枚举所有状态(所有状态都是当前航满的状态),如果一种状态能到达另一种状态,就给他们建一条边。所有边建好之后,就是走迷宫问题了。本质上就是换了一种方式的状压dp,只不过自己太...

2018-08-11 09:05:32 154

原创 树状数组小结

虽然线段树可以完美的代替树状数组,但是因为代码的简洁性,还是忍不住去学了树状数组。。。。void add(ll *s, ll x,int n,ll v){ for(;x&lt;=n;s[x]+=v,x+=(x&amp;-x));}ll getsum(ll *s,ll x){ ll ans=0; for(;x;ans+=s[x],x-=(x&amp;-x)); ...

2018-08-09 15:45:24 70

原创 B - Dining (最大流)

Cows are such finicky eaters. Each cow has a preference for certain foods and drinks, and she will consume no others.Farmer John has cooked fabulous meals for his cows, but he forgot to check his me...

2018-08-08 09:25:18 314

原创 C - The Battle of Chibi

Cao Cao made up a big army and was going to invade the whole South China. Yu Zhou was worried about it. He thought the only way to beat Cao Cao is to have a spy in Cao Cao's army. But all generals and...

2018-08-07 19:28:45 278

原创 Gym - 101020H Weekend

You and your friends are going to camping next weekend , because you are the best driver and you are living in this town for ten years , you have to drive the car from your home and pick up each of yo...

2018-08-02 19:40:24 259

原创 HDU - 2586 How far away ? (Lca)

There are n houses in the village and some bidirectional roads connecting them. Every day peole always like to ask like this "How far is it if I want to go from house A to house B"? Usually it hard to...

2018-08-02 19:33:55 115

空空如也

空空如也

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

TA关注的人

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