自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 旅行

旅行这题也太坑了,如果我现场打这题估计要挂掉,不过部分分还是很好拿的其实本题记住一个原则,考虑的是断掉的那条边,这样讨论就不会错,具体来说,对于一个基环点,如果下一点不是基环点,就要直接走(参见图一),而影响当前是否走基环点的只有上一个有环的基环点(参见图一)其实本题记住一个原则,考虑的是断掉的那条边,这样讨论就不会错,具体来说,对于一个基环点,如果下一点不是基环点,就要直接走(参见图一),而影响当前是否走基环点的只有上一个有环的基环点(参见图一)其实本题记住一个原则,考虑的是断掉的那条边,这样讨论就不

2020-11-27 18:10:19 193

原创 跑路

跑路#include<bits/stdc++.h>using namespace std;const int N=110;int n,head[N],cnt=0,m;struct edge{ int link,v;}q[N*N];void put(int u,int v){ q[++cnt].v=v; q[cnt].link=head[u]; head[u]=cnt;}bool dp[N][N][32],f[N][N];bool vis[N];int dis[N]

2020-11-24 22:25:50 245

原创 组合数问题

组合数问题本题是考前缀和,需要注意的是边界的判定,比如本题,并不是取余为0就为0(如0)所以对于Cii,C00,C10,C01要特殊计算所以对于C_i^i,C_0^0,C_1^0,C_0^1要特殊计算所以对于Cii​,C00​,C10​,C01​要特殊计算#include<bits/stdc++.h>using namespace std;const int N=2020;int n,m,k;int C[N][N],ans[N][N];int main(){ int t;

2020-11-20 18:39:50 194

原创

卷本题就是一个思路,dp数据(乘法)过大时,可以考虑取log,比较的时候再计算答案#include<bits/stdc++.h>using namespace std;typedef long long ll;int mod=1e9+7;const int N=2e5+5;int w[N],n,head[N],cnt=0;struct edge{ int link,v;}q[N<<1];void put(int u,int v){ q[++cnt].v=v;

2020-11-20 17:40:03 99

原创 wxh-a

wxh-a#include<bits/stdc++.h>using namespace std;typedef long long ll;int mod=1e9+7;const int N=1e5+5;int n,a[N],jc[N];int cnt=0,ans=1;int main(){ scanf("%d",&n); jc[1]=1; for(int i=2;i<=n;i++)jc[i]=1ll*i*jc[i-1]%mod; for(int i=1;i

2020-11-20 17:37:22 125

原创 wxh-b2

wxh-b2本题虽然很容易想,但就像CSPT2一样多坑本题虽然很容易想,但就像CSPT2一样多坑本题虽然很容易想,但就像CSPT2一样多坑———————————————————————————————只要一行一列中有一个就可以用这一列判断一行一列要用或——————————————————————————#include<bits/stdc++.h>using namespace std;const int N=502;int n;char s[N][N];vector

2020-11-20 17:35:31 96

原创 vector

发现vector居然这么容易忘,还是写篇博客记录一下发现vector 居然这么容易忘,还是写篇博客记录一下发现vector居然这么容易忘,还是写篇博客记录一下最常忘的写法vector <int> ::iterator it还要注意的是vector下标并不是从1开始,所以不能直接扫下标链接一份大佬的博客...

2020-11-20 17:03:12 75

原创 wxh-b

wxh-b细节比较多,主要思路就是转换为找最短路#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=5e5+5,M=1e5+5;//int head[N],cnt=0,a,b,c,d,e,m;struct edge{ int link,v,l;}q[M<<1];void put(int u,int v,int w){ q[++cnt].v=v; q[cnt].

2020-11-17 18:16:53 269

原创 骑行

骑行这题解法很简单,但思路很难想对这种题,其实考虑枚举最大值,然后最大值链配对即可#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=3e5+5;int n,cnt=0,head[N];struct edge{ int link,v;}q[N<<1];void put(int u,int v){ q[++cnt].v=v; q[cnt].link=head[

2020-10-30 22:07:26 131

原创 逆流

逆流#include<bits/stdc++.h>using namespace std;const int N=1e5+5;int n,l,t;int x[N],w[N],st=1;int main(){ scanf("%d%d%d",&n,&l,&t); t%=l; for(int i=1;i<=n;i++){ scanf("%d%d",&x[i],&w[i]); if(w[i]==1) x[i]+=t; if(

2020-10-30 21:08:43 183

原创 神奇的操作

神奇的操作仔细思考后发现本题没有什么办法,但是仔细想想好像记忆化可以过(因为每次/2或/3,-1的操作尽量不用),但是,1e9好像没办法记忆化,然后就只能碰碰运气,加个优化不记忆化能过吗?qwq——显然过不了可以当个套路来记,用map记忆化#include<bits/stdc++.h>using namespace std;typedef long long ll;int n;int f1[33],f2[25];map <ll ,int > mp; ll ksm(

2020-10-28 18:14:45 86

原创 构造

构造很容易想到的一个思路,然后用插板法即可#include<bits/stdc++.h>using namespace std;const int N=1e5+5;typedef long long ll;int n,m;ll mod=1e9+7;ll ksm(int x,int pow){ ll ans=1,res=x; while(pow){ if(pow&1) ans=ans*res%mod; res=res*res%mod; pow>&gt

2020-10-28 18:09:55 167

原创 密码

密码本题是个结论题,每个数都可以用科学计数法表示,然后对于科学计数法的基数部分取三位就行了本题是个结论题,每个数都可以用科学计数法表示,然后对于科学计数法的基数部分取三位就行了本题是个结论题,每个数都可以用科学计数法表示,然后对于科学计数法的基数部分取三位就行了#include<bits/stdc++.h>using namespace std;typedef long long ll;int n,k;int main(){ scanf("%d%d",&n,&k)

2020-10-21 18:40:58 116

原创 字符串

字符串记一个结论,比较a+b和b+a即可#include<bits/stdc++.h>using namespace std;const int N=1e5+5;string a,b;int main(){ int T; scanf("%d",&T); while(T--){ cin>>a>>b; if(a+b>b+a){ puts(">"); } else if(a+b<b+a)

2020-10-20 18:33:06 58

原创 Prince and princess

Prince and princess本题看起来像LCS,所以先提LCS的解法最长公共子序列发现最长公共子其实就是两个序列不同元素的LIS,然后就能在O(nlogn)的时间内求出长度——————————————————————————再考虑本题,发现是一样的性质,所以套用上面的做法再考虑本题,发现是一样的性质,所以套用上面的做法再考虑本题,发现是一样的性质,所以套用上面的做法需要注意的是本题输出方式为Case需要注意的是本题输出方式为Case需要注意的是本题输出方式为Case#include&

2020-10-16 23:02:44 119

原创 永无乡

永无乡怎么感觉一道省选题比一道模板题还水n<=1e5,所以考虑线段树合并,然后本题直接对每个点建线段树就做完了n<=1e5,所以考虑线段树合并,然后本题直接对每个点建线段树就做完了n<=1e5,所以考虑线段树合并,然后本题直接对每个点建线段树就做完了#include<bits/stdc++.h>using namespace std;const int N=1e5+2;int n,m,tnt=0;int p[N],rt[N],ss[N];int fa[N];

2020-10-13 18:16:35 151

原创 Lomsat gelral

Lomsat gelralCF 600E写几个注意点push_up操作直接在函数内做,不然不好统计空间复杂度是O(nlogn),所以在合并子树时要尽量节省空间#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=1e5+5;int tnt=0,rt[N];int n,colr[N],cnt=0,head[N];struct edge{ int link,v;}q[N&

2020-10-12 18:48:05 127

原创 可持久化线段树

可持久化线段树可持久化线段树就是对[1,n]的每一个i,都建一颗线段树,然后为了省空间就复制了一部分的树#include<bits/stdc++.h>using namespace std;const int N=2e5+5;struct zxs{ int l,r,sum,ed;}q[N*18*4];int n,m,a[N],b[N],c[N],cnt=0;int rt[N];int newnode(int id){ q[++cnt]=q[id]; return cnt

2020-10-08 15:45:44 189

原创 achen

achen#include<bits/stdc++.h>using namespace std;const int N=1e6+4;typedef long long ll;ll mod=998244353;ll ksm(ll x,ll pow){ ll ans=1,res=x; while(pow){ if(pow&1) ans=1ull*ans*res%mod; res=1ull*res*res%mod; pow>>=1; } return

2020-10-08 15:12:22 151

原创 luck

luck没什么好说的,就是一道裸题但需要注意的是时间是O(n*k),1e7级别,这个级别是会卡常的,所以要进行优化这是90分代码#include<bits/stdc++.h>using namespace std;typedef long long ll;ll ans=0;int mod=1e9+7;const int N=5e4+5;int y,z;int dp[N][505];ll dfs(int dep,int state,int p){ int tmp=y-s

2020-10-08 15:09:31 153

原创 最大后缀值个数

最大后缀值个数本题看看数据范围其实就大概知道怎么做,然后发现是单调的,直接单调栈就行了本题有个很坑的细节(其实是我打得太烂了,调了很久没跳出来,一直80分)#include<bits/stdc++.h>using namespace std;const int N=1e6+5;int n;int val[N],f[N],head[N],tnt=0;struct edge{ int link,v;}q[N<<1];void put(int x,int y){

2020-10-06 23:17:48 336

原创 石头

石头这题我没想到(连正解的边都没挨上),所以直接复述题解这题我没想到(连正解的边都没挨上),所以直接复述题解这题我没想到(连正解的边都没挨上),所以直接复述题解首先发现n太大,所以我们要想办法找到一些答案的限制首先发现n太大,所以我们要想办法找到一些答案的限制首先发现n太大,所以我们要想办法找到一些答案的限制然后我们发现3∗n2−3∗n+1=6∗(n2)+1然后我们发现3*n^2-3*n+1=6*\tbinom{n}{2}+1然后我们发现3∗n2−3∗n+1=6∗(2n​)+1任意一个正整数都能写成

2020-09-22 17:38:18 88

原创 洗衣服

洗衣服我记住了1e7要卡常本题随便推一推,发现有许多奇怪的性质,但好像都没什么用(实际上是我没想出来重要的性质)本题随便推一推,发现有许多奇怪的性质,但好像都没什么用(实际上是我没想出来重要的性质)本题随便推一推,发现有许多奇怪的性质,但好像都没什么用(实际上是我没想出来重要的性质)随便搞一搞之后发现前面一连串的数取或不取对答案没有影响所以我们知道最终取得的答案一定是取最后连续几个的答案这时可以记一个后缀算最后连续几个的答案然后我们发现决策点是单调的(很简单证明,这里就不推了)计算答案就是mi

2020-09-21 18:47:09 229

原创 蘑菇

蘑菇仔细思考,发现一个dp就做完了(显然我没想出来)仔细思考,发现一个dp就做完了(显然我没想出来)仔细思考,发现一个dp就做完了(显然我没想出来)好好想一下,树的操作好像就那么几种,想这种求和的怎么看都像树形dp,所以我们就做完了好好想一下,树的操作好像就那么几种,想这种求和的怎么看都像树形dp,所以我们就做完了好好想一下,树的操作好像就那么几种,想这种求和的怎么看都像树形dp,所以我们就做完了f[x][0]表示不包括x联通块的乘积,f[x][1]表示包括x连通块的乘积,随便搞一搞就做完了#inc

2020-09-18 22:16:19 163

原创 PiPi 家族

PiPi 家族仔细想想,好像排序挺管用的,所以就对depth[s]+a[s]排序,因为可以发现若v∈son[s],其中son[s]表示s的子树,仔细想想,好像排序挺管用的,所以就对depth[s]+a[s]排序,因为可以发现若v∈son[s],其中son[s]表示s的子树,仔细想想,好像排序挺管用的,所以就对depth[s]+a[s]排序,因为可以发现若v∈son[s],其中son[s]表示s的子树,若有a[s]+depth[s]>a[v]+depth[v],因为子树要先被访问,所以v一定不会为答

2020-09-18 22:12:01 137

原创 CodeForces 1020C

CodeForces 1020C这题其实挺好像,发现数据范围很小,直接模拟就行了这题其实挺好像,发现数据范围很小,直接模拟就行了这题其实挺好像,发现数据范围很小,直接模拟就行了but这题我不是在CF上打的,看不到数据点,有个细节真的没想到but这题我不是在CF上打的,看不到数据点,有个细节真的没想到but这题我不是在CF上打的,看不到数据点,有个细节真的没想到#include<iostream>#include<cstdio>#include<vector>.

2020-09-18 22:00:47 88

原创

树这道题虽然已经做过多次,但比赛时还是不会做。看了题解之后,我觉得要是我自己想肯定是做不出来的 qwq————————————————————————————————f[i]表示i到fath[i]的期望步数,g[i]表示fath[i]到i的期望步数仔细想想这个做法挺显然的,因为要输入多组u,v,所以只有这样才能在log的时间里求出期望长度仔细想想这个做法挺显然的,因为要输入多组u,v,所以只有这样才能在log的时间里求出期望长度仔细想想这个做法挺显然的,因为要输入多组u,v,所以只有这样才能在lo

2020-09-14 18:41:43 94

原创 Clock Sequence

Clock Sequence本题一看就不会,但怎么看都像有规律的样子,所以我们考虑打表,但看表看了半天我都没看出规律,所以最后只交了一个暴力本题可以找出规律,以15个为周期,有重复的部分123432,234321,343212,432123,321234,123432,432123,212343,432123,123432,321234,432123,343212,234321,123432最后的数也有规律1,2,3,4,32,123,43,2123,432,1234,32123,43212,3

2020-09-13 10:16:57 172 1

原创 随机

随机发现当端点值差最小时本区间一定不可以更新,所以最终答案一定是一段端点价值差最小的区间本题类似分治的做法,可以先将子区间的答案算出来,然后对于穿过mid的部分,我们只需要找到差比ans小的,记录下来,可更新的答案一定在这些点之间,然后枚举更新即可。#include<bits/stdc++.h>using namespace std;const int N=2e6+5;int n,a[N];struct node{ int x,y;}q[N],tmp[N];int val(

2020-08-03 07:13:53 120

原创 简单的操作

简单的操作本题是个结论题,很容易猜出奇环是一定不行的,然后可以构造出一个二分图,我们发现对于一个点来说,可以将到它距离相等的点合并,所以最后一定可以合并成一条链所以对每个点跑最短路就行了#include<bits/stdc++.h>using namespace std;const int N=1010,M=1e5+5;int ss,n,m,head[N],vis[N],flag[N],tnt=0,cnt=0;bool ex[N];struct edge{ int u,v,l

2020-08-03 02:38:21 100

原创 餐馆

餐馆既然是棵树,肯定就要dp了既然是棵树,肯定就要dp了既然是棵树,肯定就要dp了dp[s][j],表示在以s为根的子树内走j步的最大价值,但我们发现这样没法统计答案dp[s][j],表示在以s为根的子树内走j步的最大价值,但我们发现这样没法统计答案dp[s][j],表示在以s为根的子树内走j步的最大价值,但我们发现这样没法统计答案定义dp[s][j][0/1]表示在以s为根的子树内走j步,最终回或不会s的最大价值,然后就可以转移了定义dp[s][j][0/1]表示在以s为根的子树内走j步,最终回或不

2020-08-03 02:33:19 107

原创 城市猎人

城市猎人手玩样例发现其实如果当两个点已经联通了,那么再连一条边其实没什么用,所以可以不连这条边,然后就构造出了一棵树,然后就不会了事实上,很容易???想到这时候要找LCA,(好吧,我不太熟),算出路径上最大的天数,就是答案事实上,很容易???想到这时候要找LCA,(好吧,我不太熟),算出路径上最大的天数,就是答案事实上,很容易???想到这时候要找LCA,(好吧,我不太熟),算出路径上最大的天数,就是答案#include<bits/stdc++.h>using namespace std;

2020-08-03 02:25:45 186

原创 区间

区间本题看到就直接上高精,结果发现答案的位数大于1000就挂了本题其实是一个前后缀和优化的题目,类似分块(但由于长度为k,所以最多是1个块的长度),所以O(1)可求出答案本题其实是一个前后缀和优化的题目,类似分块(但由于长度为k,所以最多是1个块的长度),所以O(1)可求出答案本题其实是一个前后缀和优化的题目,类似分块(但由于长度为k,所以最多是1个块的长度),所以O(1)可求出答案先预处理出每个块的前缀和后缀,然后l从1扫到n,将以用前缀和后缀算答案先预处理出每个块的前缀和后缀,然后l从1扫到n,将

2020-08-03 02:20:13 162

原创 简单的区间

简单的区间本题其实是典型的分治的做法本题其实是典型的分治的做法本题其实是典型的分治的做法对于每一个[l,r],我们找出最大值的位置pos,然后扫描[l,pos−1]与[pos+1,r]中较短的一段,然后求出在另一段所需要的值的个数,加入答案就行了对于每一个[l,r],我们找出最大值的位置pos,然后扫描[l,pos-1]与[pos+1,r]中较短的一段,然后求出在另一段所需要的值的个数,加入答案就行了对于每一个[l,r],我们找出最大值的位置pos,然后扫描[l,pos−1]与[pos+1,r]中较短的

2020-08-03 02:10:14 289

原创 Removal

Removal树状数组根据题意,可以看出可以把原题变成一条链,将询问按左端点排序,从1−2n−1扫,再进行树状数组(遇到一个数,就先加进树状数组,如果前面出现过再−1),用树状数组求和统计答案根据题意,可以看出可以把原题变成一条链,将询问按左端点排序,从1-2n-1扫,再进行树状数组(遇到一个数,就先加进树状数组,如果前面出现过再-1),用树状数组求和统计答案根据题意,可以看出可以把原题变成一条链,将询问按左端点排序,从1−2n−1扫,再进行树状数组(遇到一个数,就先加进树状数组,如果前面出现过再−1)

2020-07-27 16:05:53 267

原创 寒假集训day5

T1:修建牛棚看看数据范围就知道一定是O(n)的,仔细观察发现最小值肯定是关键点取中位数的时候看看数据范围就知道一定是O(n)的,仔细观察发现最小值肯定是关键点取中位数的时候看看数据范围就知道一定是O(n)的,仔细观察发现最小值肯定是关键点取中位数的时候分奇偶讨论一下中位数在哪就行了分奇偶讨论一下中位数在哪就行了分奇偶讨论一下中位数在哪就行了#include<bits/stdc++.h...

2020-01-16 14:39:39 151

原创 寒假集训day4

T1:致摸鱼两千年后的你E[k]表示第k年后钱数的期望,E[0]=n直接列出转移式直接列出转移式直接列出转移式考虑多一年,我们发现,E[k+1]的每种情况的概率是E[k]每种情况的概率∗0.5考虑多一年,我们发现,E[k+1]的每种情况的概率是E[k]每种情况的概率*0.5考虑多一年,我们发现,E[k+1]的每种情况的概率是E[k]每种情况的概率∗0.5而每种情况之间是存在联系的,即第k年...

2020-01-16 08:03:23 165

原创 差分

T1:Color the ball本题是差分的模板题本题是差分的模板题本题是差分的模板题差分一下两两之间的差值,区间加影响的差值就是cf[l]和差分一下两两之间的差值,区间加影响的差值就是cf[l]和差分一下两两之间的差值,区间加影响的差值就是cf[l]和cf[r+1],再做一次前缀和就做完了cf[r+1],再做一次前缀和就做完了cf[r+1],再做一次前缀和就做完了#include&lt...

2020-01-15 20:48:58 295

原创 LCA

LCA本篇博客讲解的是倍增求LCA的方法本篇博客讲解的是倍增求LCA的方法本篇博客讲解的是倍增求LCA的方法对于一颗树,我们先给每个点求出各级祖先对于一颗树,我们先给每个点求出各级祖先对于一颗树,我们先给每个点求出各级祖先void dfs(int ss,int fath){ depth[ss]=depth[fath]+1; if(ss!=s)fa[ss][0]=fath;//赋初值 f...

2020-01-14 20:48:37 208

原创 火山哥与打铁传说

火山哥与打铁传说我们发现,其实鱼可以看成括号序列,其中01,11均可配对,但显然01更优,所以我们优先配01,然后再配11我们发现,其实鱼可以看成括号序列,其中01,11均可配对,但显然01更优,所以我们优先配01,然后再配11我们发现,其实鱼可以看成括号序列,其中01,11均可配对,但显然01更优,所以我们优先配01,然后再配11统计答案时,我们先看剩下的1能不能取完大鱼,不能的话将11拆开...

2020-01-14 19:32:55 223

空空如也

空空如也

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

TA关注的人

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