自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 gym101615 I. Long Long Strings

题解: 删除与插入实际上只要在乎当前下标的值与下一个 下标对应的值是多少就行,那么每次操作最多往map中添加两个数,暴力更新map中的数即可,迭代器还是用不习惯。。。#include<bits/stdc++.h>#define fi first#define se second#define mp make_pairusing namespace std;...

2019-10-03 00:02:39 341

原创 Lucky Pascal Triangle Gym - 102091F(分块+递归)

题解:是以7的倍数为块,进行分配,打出表后,观察可知非7的倍数更好用递归求解。​​#include"bits/stdc++.h"using namespace std;typedef long long LL;const LL mod = 1e9 + 7;LL g[33], res[33];LL inv2;LL dfs(int dep, LL n){ if(dep ...

2019-09-26 23:05:34 212

原创 gym101964A Numbers

题解:搜索剪枝,特殊情况记忆化搜索,这题写了好久啊,例子:99999999999999999,这个跑出来答案有800000000。8亿,单纯的搜索肯定会t的,可以大概验证一下如果两个加数的长度不一样那么,方案数是很少的这种情况考虑搜索剪枝,而如果长度是一样的考虑记忆化搜索。那么如何剪枝呢?我们枚举一个加数(记为a)的位数最高位,那么同样知道这个加数的最低位。同理我会知道另外一个加数...

2019-09-19 23:55:07 290 1

原创 hdu 6712 sakura

公式的话官方题解已经非常详细,这里就不再写公式了,大致推导为n步有x+y步是j,k两维移动,有n-x-y步是在i轴上移动。 在x+y的两维中,有y步是在y轴上移动,x步在x轴上移动。然后算上C(n,x+y)*C(x+y,x)*t1^(x/p)*t2(y/p)。就是每个点的贡献。这题卡常卡的太恶心了。#include"bits/stdc++.h"using namespace std;ty...

2019-08-24 21:59:57 352

原创 Pohlig-Hellman algorithm 解决一类离散对数问题

原理:https://blog.csdn.net/qq_26060285/article/details/90322054适用范围大致为模数P为质数,且(P-1)的最大质因子 <= 1e12。P为合数的情况直接用EXBSGS就好了,因为P为合数的时候大部分情况下求不了原根, 若P有原根,则 P = 2,4,q^a,2q^a(q为质数)。模板如下:洛谷3846#include...

2019-08-09 23:25:41 1773

原创 2019牛客暑假第四场 I string

题解:后缀自动机计算反串的个数,减去回文串的个数后除二即反串的个数。#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>#include <queue>#include <bitset>#include &lt...

2019-07-27 19:56:17 154

原创 2019 牛客多校训练营3 Planting Trees(RMQ预处理)

题解: 很容易想到二维RMQ算法,但是常数实在是太大了,扣掉常数+算法减枝卡可以过。 顺便给个读入挂。#include<bits/stdc++.h>using namespace std;#define rei register intconst int MX = 505;const int INF = 1e9;namespace I...

2019-07-26 16:12:59 162

原创 6583 Typewriter && 5470 Typewriter

后缀自动机博客推荐:https://blog.csdn.net/qq_35649707/article/details/66473069https://blog.csdn.net/liyuanshuo_nuc/article/details/53561527T6583关键: 如何沿着后缀链跑很重要,直接每次暴力的从后缀链往前跑的话,会t(原因是:aaaaaaaaa...

2019-07-23 10:48:27 139

原创 2019牛客暑期多校训练营(第二场)J Subarray

题解: 先算出每一段可能往左往右扩展多少个负数,那么对于负数过于长的一段,它的中间的一部分就被扔掉了。由于每个正数段最多往左右各扩宽自身的长度。所以负数最多只有2e7个。 接下来可以用树状数组统计,但是这样会多一个log。因为每次询问相较于上次只移动了一个单位所以直接统计在上次询问的基础上更改就好。代码挺短的......#include <bits/...

2019-07-21 12:37:56 132

原创 codeforces 1194F. Crossword Expert

题解: 首先可以想到dp[i][j]状态:i代表准备完成第i件事,总共用了j个单位时间的总概率,转移方程为dp[i][j] = 1/2(dp[ i-1 ][ j-t[i] ] + dp[ i-1 ][ j-t[i]-1 ]。第二维T非常大,先考虑优化第二维,第二维有一部分的值总是固定的那就是ti的前缀和。ti前缀和那部分不用算在状态里。所以重新定义状态:dp[i][j]状态:i代表准备完...

2019-07-15 10:20:33 402 2

原创 hdu 5957 Query on a graph

题解: 毒瘤题......首先bfs跑一遍图,生成一棵树,则只有一条边没有用上而且这条边链接的两个点在该树上的深度差为<=1,即深度差为-1,0,1三种情况(因为深度差大于2的话,bfs就会选这跳边当做树边了)。 做完bfs序后就可以直接上线段树了,因为每一层的数刚好是连续了,分情况讨论,k=0,k=1的情况比较好写,但k=2的时候情况很多。。。。特殊边的点跟查找的...

2019-07-12 23:18:54 127

原创 2019 计蒜之道 复赛 大熊猫的“树”?

题解: 先写出最后公式,推导过程以后有时间写,计蒜客官方题解中途开始出错了(不过仅仅是符号问题)。然后这里的C()指的是广义二项式定理。牛顿二项式定理与生成函数的推荐博客 ans = (-4)^(N)*(C((K+1)/(-2),N)-2*C(k/(-2),N+1)+2*C((K+1)/(-2),N+1))#include"bits/stdc++.h"#defi...

2019-07-11 23:49:18 95

原创 2019 计蒜之道 复赛 C. 个性化学习之石子游戏

题解: sg函数打表得出规律,则以作为下标,以在1~n出现的次数作为数组所存的值进行fwt即可。fwt复杂度。但是前面十进制大数转二进制复杂度非常大为。#include"bits/stdc++.h"#define ll long long using namespace std;const int MX = 1e5;const int MAX = 1e9;const in...

2019-07-10 22:18:24 153

原创 2019 计蒜之道 复赛 A. 外教 Michale 变身大熊猫

题意: 求每个数在最长上升子序列中出现的概率。题解: 首先求出最长上升子序列有那些数,通过二分+dp可以求出最长上升子序列中每个数,是出现在哪个位置上,然后出现在同一位置的数的值一定的从大到小的。所以对于位置假设你当前选的是x[i][j]的后一个位置i+1可以选择的数一定是靠前出现的,因为后面出现的数可能比x[i][j]要小。根据此性质从后往前dp算可以填x[i][j]上去...

2019-07-10 16:41:41 141

原创 codeforces 1089A.lice the Fan(记忆化搜索dp)

题解:主要在于第五局的时候比赛次数不一样了,所以多开一维专门代表时候打满了5场。dp[0]代表没打满五场,1代表打满了5场][胜了wa场] [败了wb场] [共赢了na个球] [共输了nb个球]。#include"bits/stdc++.h"using namespace std;const int MX = 202;int dp[2][5][5][MX][MX];struct...

2018-12-04 21:18:12 238

原创 gym 100792E.Entertainment

分别考虑每层的单点贡献,计数。#include &lt;bits/stdc++.h&gt;#ifdef LOCAL#define debug(x) cout&lt;&lt;#x&lt;&lt;" = "&lt;&lt;(x)&lt;&lt;endl;#else#define debug(x) 1;#endif#define chmax(x,y) x=max(x,y)#defi...

2018-12-01 20:45:05 422

原创 codeforces 1076F

题解:dp转移只考虑最后一个以多少个相同的数结尾就好了。如何保证以最少的数结尾需要贪心#include"bits/stdc++.h"using namespace std;typedef long long ll;const int MX = 1e6+7;const int INF = 0x3f3f3f3f;int t[MX],f[MX];int n,k;int get_val...

2018-11-18 15:09:05 205

原创 GYM 101002 G Symmetry

暴力枚举中心点和对称的线段,注意点在线段上的情况,以及许多点都在一条直线上的情况。#include&lt;bits/stdc++.h&gt;#define pb push_back#define fuck(x) cout&lt;&lt;'['&lt;&lt;#x&lt;&lt;' '&lt;&lt;x&lt;&lt;']'&lt;&lt;endlusing namespace std;

2018-11-17 21:28:33 207

原创 gym 100524 E. Ebola Virus

dp[ i ][ j ]状态代表必须要从左走到右,再从右走到左,然后i——j所有村庄救完。#include"bits/stdc++.h"using namespace std;typedef long long ll;const int MX = 3003;const ll INFLL = 0x3f3f3f3f3f3f3f3f;int n;ll dp[MX][MX],f[MX],...

2018-11-15 22:10:02 181

原创 gym 100524B. Bipartite Bicolored Graphs

#include"bits/stdc++.h"using namespace std;typedef long long ll;const int MX = 105;const int mod = 175781251;ll dp[MX][MX],c[MX][MX],sum[MX],res[MX],p3[MX];void init(){ int n = 100; p...

2018-11-15 20:30:29 195

原创 gym 100520E

dp[ i ] [ j ]表示当前考虑在第i个位置填第j个数的最小值,那么dp[ i ] [ k ]应该由dp[ i-1 ] [ j ]转移过来。而不同的位置的后一个数可以填的数是有限制的。根据题意可以填的数,相邻的两个位置,左右一定对应一个相等的区间长度(且一定是2的次幂)。这个范围内表示可以相邻的数。并且这样的情况不会出现(在i这个位置填k,并且k在之前的i'位置出现过)。#includ...

2018-11-11 21:45:14 104

原创 gym 100520 C. Catalian Sequences

bfs打表,状态数有点多,需要剔除掉无用的状态才不会t。i——当前序列长度A——题目中所给,相邻的两个数ai+1 &gt; ai的个数low——下次添加数最低从哪个开始s——用了哪些数last——上一个以哪个数结尾。#include&lt;bits/stdc++.h&gt;using namespace std;typedef long long ll;const ...

2018-11-11 19:02:54 188

原创 gym-100520 K. Kabbalah for Two

就是跟大白279页的题有点类似的模版题而已。​#include"bits/stdc++.h"using namespace std;const int MX = 207;const double eps = 1e-12;int n;struct Point { double x, y; Point() {} Point(double x,double y)...

2018-11-11 14:59:12 196

原创 Gym100608 J. Jinxiety of a Polyomino

(因为是凸多边形)在点(U[i][j], L[i][j])——(i,j)子矩形中所有点到i,j这个点都只需要转一个弯。矩阵前缀和预处理。#include &lt;bits/stdc++.h&gt;using namespace std;const int MX = 2007;int n,m,res;char s[MX][MX];int L[MX][MX],U[MX][MX],sum...

2018-11-11 13:54:29 159

原创 GYM-100520 B. Bayes' Law

题解:区间[L,R]得出的答案我们知道,它最多有一个端点的线段会被截断。故二分的时候固定一个线段的端点就好了。然后枚举最右端的那条线段是否被分隔开。 然后固定右端点,分割左端点的线段。#include&lt;bits/stdc++.h&gt;#define fuck(x) cout&lt;&lt;'['&lt;&lt;#x&lt;&lt;' '&lt;&lt;x&lt;&lt;']'&lt...

2018-11-10 22:10:04 131

原创 GYM100608 D. Decomposable Single Word Languages

全部为同一种字符则为NO不全部为同一字符,则可以分两种情况:①开头字母自己指向自己进行循环,②结尾字母自己指向自己进行循环,中间的直接指向后面一个即可,然后交集便是输入的字符串。#include&lt;bits/stdc++.h&gt;using namespace std;const int MX = 111;const int INF = 0x3f3f3f3f;char s[...

2018-11-09 19:34:29 196

原创 gym101968 J. Restricted Vertex Cover

先二分图染色,求出标号为1的边的联通块个数。然后分两种况讨论,1是联通块内的情况,2是联通块之间的情况。第一种情况很简单,可以直接判断该联通块是选0这种颜色还是1这种颜色。第二种情况用two-sat就好了。#include&lt;bits/stdc++.h&gt;#define pii pair&lt;int,int&gt;#define mp make_pair#define f...

2018-11-06 19:17:48 309

原创 gym 101623 G .Glyph Recognition

二分两个多边形大小。附上一堆板子#include&lt;bits/stdc++.h&gt;#define mp make_pair#define fir first#define sec secondusing namespace std;typedef long long ll;const double eps = 1e-12;const double PI = acos(-...

2018-10-30 23:28:40 184

原创 gym101962 G. Barra Lighthouse

简单计算几何分类讨论一下#include&lt;bits/stdc++.h&gt;#define mp make_pair#define fir first#define sec secondusing namespace std;typedef long long ll;const double eps = 1e-12;const double PI = acos(-1.0)...

2018-10-30 21:10:30 311

原创 codeforces 1031D. Minimum path(bfs+dp)

题解:bfs的时候考虑下那k个可以改变的次数用完没就好了,然后边dp边记录答案,d1代表走到当前格子需要多少步,d2代表走过的格子中有多少已经是'a'了,说明不需要变换,则,d1-d2代表有多少格子不为'a'的。那么当d1-d2 &lt;= k时,之前的全部都能变成'a'#include&lt;bits/stdc++.h&gt;#define mp make_pair#define ...

2018-10-30 15:47:13 286

原创 Gym - 101158J Cover the Polygon with Your Disk

模拟退火+圆与多边形的面积交#include"bits/stdc++.h"using namespace std;//圆在多边形内,或者多边形在圆内都可以算出const double eps = 1e-15;const double PI = acos( -1.0 ) ;inline double sqr( double x ){ return x * x ; }inline i...

2018-10-20 19:09:05 129

原创 csuoj 2171 Steiner Tree

题解:小于n/2的点用steiner tree算法,大于n/2的点用最小生成树。#include"bits/stdc++.h"using namespace std;const int N = 30;const int inf = 0x3f3f3f3f;int n,m;int head[N], sign[N], vis[N];int f[N][1&lt;&lt;14],st[N]...

2018-10-17 21:37:49 258

原创 gym 101775 H - Mr. Panda and Birthday Song

题解:         ①我们要找到是否存在一种(连续元音字母的长度&gt;=x的填字母的方法,或者连续辅音字母的长度&gt;=y的方法)满足一种就存在一种DISLIKE的songs。这种情况直接贪心就好,‘?’的地方全填元音,或者全填辅音。        ②我们还要找到一种情况(连续的元音字母的长度&lt;x并且连续的辅音字母的长度&lt;y)这种填字母方式要同时满足两种情况。考虑到...

2018-10-17 19:52:32 568

原创 gym 101775 D. Mr. Panda and Geometric Sequence(枚举)

题解:枚举所有情况,关键点在于首先我们先只考虑前三个数,那么重点是第二个数不能超过1e5。然后我们假设倍数是,这个式子应该是最简分式,即gcd(q,p) ==1。假设一个变量k,使得第一个数为:k*p*p,则第二个数为k*p*q,第三个数为k*q*q。如此往下枚举。然后往后扩展第4,5,......个的时候判断下k%p是否为0即可。枚举的复杂度大概为O(nlognlogn),因为...

2018-10-16 18:21:24 839

原创 CodeForces Gym 101669 B - Bricks

题解:        手动模拟可以知道其实与事件发生的先后顺序没有关系(所以从左到右枚举就好了),f[i]表示前面位置的方块已经全部落下,并且i位置以前造成了i-s[i]个空位的方案数。而num[i]表示之前决策中包含i个空位置的决策总数。#include"bits/stdc++.h"using namespace std;const int MX = 1e6+7;const in...

2018-10-14 20:26:14 362

原创 牛客国庆集训派对Day6 I-清明梦超能力者黄YY

题解:lca预处理,树上差分套线段树合并复杂度O(nlogn)但是跑起来比树链剖分(nlognlogn)的还慢...........​#include"bits/stdc++.h"#define lson l,mid,ls[rt]#define rson mid+1,r,rs[rt]using namespace std;typedef long long LL;const in...

2018-10-06 20:54:32 273

原创 codeforces 1046I. Say Hell

题目连接题意:两个人沿着直线行走,如果他们之间距离小于d1,就会打招呼,在打完招呼后的某个时间点(共N个时间点),他们两人之间的距离&gt;d2,那么下一次他们之间距离再次小于d1时会再打招呼。题解:可以将两条线段之间的最短距离转化为点与线段的最短距离,然后就是改一下大白上点到线段上距离的模版即可。​#include"bits/stdc++.h"using namespace s...

2018-09-24 15:11:18 220

原创 codeforces960G Bandit Blues

个人认为比较好的题解:题解其实用分治或者还是优先队列都是可以的,之前有一题是用优先队列写的(每次拿长度最短的两个做NTT)#include"bits/stdc++.h"using namespace std;typedef long long LL;const int mod = 998244353;const int MX = 1e5+7;const int P = 9982...

2018-09-21 21:04:06 195

原创 Codeforces 995F Cowmpany Cowmpensation

题解:一般对于多种颜色染色(染色数很大&gt;=1e8),并且染色的点很少的时候(点数&lt;=3000)。设点数为1.可以先求出染色数(1~n+1)时所有的函数值,这样不管是对f()函数求和,还是非求和都能适用。然后套用拉格朗日差值的公式即可。f函数用dp预处理即可。拉格朗日公式#include"bits/stdc++.h"using namespace std;typedef l...

2018-09-19 21:23:31 203

原创 hdu 6270 Marriage

题解:常见的二项式反演,用启发式合并(每次选最小的两个集合作NTT,类比下线段树)加速NTT即可。复杂度(n logn l ogn)#include"bits/stdc++.h"using namespace std;typedef long long LL;const int MX = 4e5+7;const int mod = 998244353;const int P = 9...

2018-09-18 13:11:57 401

空空如也

空空如也

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

TA关注的人

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