自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

binarycopycode

人百我一,人万我十,舒服了

  • 博客(957)
  • 收藏
  • 关注

原创 hdu2121 Ice_cream’s world II 最小树形图

http://acm.hdu.edu.cn/showproblem.php?pid=2121学习了一蛤朱刘算法这种随便找起始点的一般都是设一个超级源点连到所有点然后最后跑完再确定,之前有个插头DP也是这样的套路设超级源点连到每个点一条sume+1的边如果最后答案>=2*(sume+1)说明无解由于超级源点只有连出去的边,那么我们每次都记录一下超级源点的赋值给谁作最小边,那么最后一次一定是超级源点连向某一个缩过的点,把这条边初始连向的点ov找到就行了,边的原始点是记录在数组里不变的

2021-04-08 17:50:32 96

原创 codeforces1493D. GCD of an Array

https://codeforces.com/contest/1493/problem/D被现场一车人过掉的题卡了一万年,一开始直接线段树合并质因数求gcd nlog^3n 超时了后来发现我们关心的质因数事实上很少,必须要每个数字都有才行那么用s[num]这个set维护每个数字num这个因数有多少次幂,s[num].size()=n时,才会被加到答案里用sa[i]维护i这个数字的所有质因数和幂数每次添加就相当于log次修改sa[i]和s[num],所以,总复杂度是O(nlog^2n)

2021-04-08 01:48:14 193

原创 codeforces1493C. K-beautiful Strings

https://codeforces.com/contest/1493/problem/C当时没做出来的div2C,那天打cf太上头了感觉冷静下来仔细分清楚情况想清楚也没那么难因为要>=s且满足条件,所以从后往前枚举分界线,左边相等b[i]=s[i],当前位置b[i]>s[i],后面随意然后我们可以根据左边剩余的字母算出让他们出现时k的倍数最少需要添加多少个,扫一遍26就算出来了然后两种情况,第一种情况需要添加的数量刚好等于分界线后面的位置数量,那么就直接看有没有一个b[i]

2021-04-07 22:43:15 131

原创 checksum 2021Google Kickstart roundA

https://codingcompetitions.withgoogle.com/kickstart/round/0000000000436140确实有点巧妙,我还是菜,去年开始ks难度降低了,还只ak过一次,这次这题没写暴力排名掉到700了比赛的时候想到拆点然后费用流半天不知道怎么办,然而这题用很简单的贪心就能解决首先我们把每一行每一列拆成2n个点,如果(i,j)有一个-1,那就链接(i,j+n)边权为b[i][j]那么我们想到如果一条边有一个点的度数是1的话,他就可以被直接算出来,所以

2021-04-07 16:42:05 164

原创 洛谷 P3523 [POI2011]DYN-Dynamite

https://www.luogu.com.cn/problem/P3523跟https://blog.csdn.net/liufengwei1/article/details/115410709一样改了一点地方,就是只有当前点时关键点时,g[u]初始为0,否则则为-inf。这题还有点卡常,第一次没点O2优化超时了,因为用了vector,点了O2后900+ms,洛谷评测姬3e5 nlogn都这么慢的么。。。#include<bits/stdc++.h>using namespac

2021-04-07 15:12:08 130

原创 Tree Constructer 2020ICPC济南 随机化

https://ac.nowcoder.com/acm/contest/10662/J有生之年第一次在训练赛用随机过题对于这棵树,我们只要让每个儿子都跟父亲配对就行了,关键的问题在于如何让每个点与其他不与他相连的点配对我们考虑随机,s=2^60-1一共有60位,首先给根节点1随机一个有30位是1的数字,然后他的儿子们首先就必须有s^a[1]这30位上必须是1,然后为了让他们互不相同,我们再给他们随机加上10位1,那么1的儿子有C(30,10)种可能,一样的可能性非常小,这就相当于每个点都是特殊的

2021-04-07 01:58:57 268

原创 K-Riichi!! ICPC昆明区域赛

https://ac.nowcoder.com/acm/contest/14383/K暴力是天,剪枝就是垃圾nju1半小时过,我一算复杂度T*14*14*34*34=2e9?然后加了一车剪枝赛后发现加完剪枝跟暴力跑得一样快nju1的还是用dfs,没用贪心去搞,更快#include<bits/stdc++.h>using namespace std;const int maxl=1010;int anscnt;struct tile{ int id,val;

2021-04-06 02:23:08 487

原创 化学方程式 CCF-CSP认证201912

http://118.190.20.162/view.page?gpid=T98这题搞了差不多快两个小时然后第4,5题直接GG,身败名裂预处理系数,递归下降法// INFO BEGIN//// User = 201911507842(刘峰玮) // Group = C/C++ // Problem = 化学方程式 // Language = CPP11 // SubmitTime = 2019-12-15 15:21:46 //// INFO END#include&l

2021-04-06 01:36:56 138

原创 密信与计数 CCF-CSP202009

http://118.190.20.162/view.page?gpid=T109当时把这题写完调了一万年,没时间搞第4题了ac自动机维护数位DP转移注意要fail链要预处理成sqrt(n)转移,详见https://codeforces.com/contest/1437/problem/G的题解#include<bits/stdc++.h>using namespace std;const int maxl=1002;const int mod=998244353;

2021-04-06 01:30:49 452

原创 C-Cities ICPC昆明现场赛

https://ac.nowcoder.com/acm/contest/12548/C可惜麻将写太久了,可惜了先缩点,让相邻两个都是不同的dp[i][j]表示i,j变成一种颜色的最小操作数是多少,首先min(dp[i+1][j],dp[i][j-1])+1转移过来接下来我们考虑左端点(由于前一种左右能左右转移,所以所有区间都只考虑最左边的节约一次的合并) 是否能由一个相同的转移过来dp[i][j]=min(dp[i][j],dp[i+1][mid-1]+dp[mid][j]+1); ..

2021-04-06 01:06:53 311

原创 codeforces1503A. Balance the Bits

https://codeforces.com/contest/1503/problem/A经典不会做1600的构造这种题要由已知信息推测。已知n是偶数,()括号数量一定要严格等于n/2,si=1的ai=bi,此时是不影响a,b中左右括号的数量差的si=0时,ai!=bi,此时在这一位上会影响括号的数量差,所以我们必须要让si=0的数量为偶数,才能让a,b中左右括号数量都等于n/2可以预见最后的结果就是左边的si=1 ai=bi=( ,右边的si=1, ai=bi=) ,此时我们可以推想出我.

2021-04-05 03:30:56 373

原创 AtCoder Regular Contest 116 E - Spread of Information

.https://atcoder.jp/contests/arc116/tasks/arc116_e学习自https://blog.csdn.net/RealKing_sblog/article/details/115359363这题一眼就是二分答案转判定,然而不知道怎么得到最少的关键点数我们维护每个子树的根节点到子树内所有非法点的距离,如果某个儿子距离超过了mid,我们需要考虑是否从其他儿子的树合并过来如果最后该子树根节点还是超过mid,则需要在u放一个关键点。最后出去判断一下1是否还要放

2021-04-03 01:11:30 345 2

原创 AtCoder Regular Contest 116C - Multiple Sequences

https://atcoder.jp/contests/arc116/tasks/arc116_c经典不会组合这题关键是想到对于dp[n][pi^ki],方案数是c(n-1+ki,n-1),就是你从(1,1)走到(n,ki)有多少种走法,而且可以连续增加ki,就相当于一次乘以pi的多次幂然后线性筛预处理一下最小质因子,每次把最小质因数分解一下,然后递推就行了也可以线性筛的时候记录一下最小质因子的幂次然后直接O(m)做,但还是O(mlogm)好写#include<bits/stdc

2021-04-01 23:19:25 198

原创 AtCoder Regular Contest 116 D - I Wanna Win The Game

https://atcoder.jp/contests/arc116/tasks/arc116_ddp[k][i]表示当前已经枚举到2^k了,然后背包容量是i的时候方案数是多少每次枚举当前2^k放多少个去填,因为要是异或=0,所以必须偶数个,然后方案数就是n个里面选t个位置放下这些2^k,就是C(n,t)k=logm i=m t=m/2^k ,所以复杂度是O((n+m)log^2m) ,感觉n,m=2e4也能过啊#include<bits/stdc++.h>using na.

2021-03-31 23:45:21 167 2

原创 AtCoder Beginner Contest 197 F - Construct a Palindrome

https://atcoder.jp/contests/abc197/tasks/abc197_f过了一车人的套路我不会。。。把题目转化成二维平面的模型,dis[u][v]表示从1到u,从n到v,一直走相同字母的距离然后我们枚举每个点u:{s,e}的所有边,得到u:{s,e}->v:{s.v,e.v}这样的边,且他们走是相同的字母,这样枚举最大是m^2的然后bfs就可以了,然后枚举中间dis[i][i]*2和dis[i][j]*2+1,i,j,中间有边,答案取最小方案就可以了注意答

2021-03-31 21:22:00 251

原创 gym100753 M - Sums 同余最短路

https://codeforces.com/gym/100753/problem/M经典做过模板题想不起来https://blog.csdn.net/liufengwei1/article/details/103997675这题比那题更模板#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxl=5e4+10;const int inf=1e9+10;int n,m;

2021-03-21 23:26:24 177

原创 gym102916K. Bloodseeker

https://codeforces.com/gym/102916/problem/K首先对于所有h=min(h,m)对于t<=h的,由于它可以更换攻击目标,反正我可以让他们只剩最后一滴血,然后留着最后一滴血的时候再用,就等于备用血包然后对于t>h的,按h下降顺序排序In what order should we process enemies from the second group? The right answer is by decreasing hi values.

2021-03-19 21:49:49 321

原创 gym102916B. Fakes and Shidget

https://codeforces.com/gym/102916/problem/B就是每个选一种,要求金子总和/时间总和最大经典0/1分数规划要精确到1e-9,外面的二分要从1e9二分到1e-9,没开long double 死循环了2发#include<bits/stdc++.h>using namespace std; const int maxl=2e5+10;const double eps=1e-10; int n; int a[maxl],b[max

2021-03-19 21:41:00 179

原创 codeforces1469D. Ceil Divisions

https://codeforces.com/contest/1469/problem/D这题观察发现一个比较优的策略我们选择一个基数c,然后让n/(n/c), (n/c)/(n/c/c)....这样下去,把这些数字都变成c,然后最后再来一遍用c把他们变成1,最后用2把c变成1,那么最后就剩2这个2了,其他都是1其他不在这中间考虑的数字我们就首先让他们全部/n变成1所以对于3-n这些数字,只有c要让他不断/2,然后 n/c,n/c/c这些数字要先变c再变1,其他的数字都是1次变1,所以这

2021-03-11 16:33:59 967

原创 AtCoder Beginner Contest 194 F - Digits Paradise in Hexadecimal

https://atcoder.jp/contests/abc194/tasks/abc194_f太菜了又碰到不会的数位DP题了这题的关键是我们并不用在dp数组中存下当前已经用了哪些数字只要令dp[pos][cnt][up][lead]=dp[枚举到哪一位了][有几个不同的数字][是否顶着上界][前面是否有非零位了]只要其中pos,up,lead,对了,那么对于不同的st有相同的cnt,他们的答案是一样的,所以具体的st并不需要存到dp里面,只需要存位数就行了#include<b

2021-03-10 00:20:35 295

原创 gym102920A. Autonomous Vehicle 2020 Asia Seoul Regional Contest

https://codeforces.com/gym/102920/problem/A考虑到每段路最多被两个方向走两遍,所以只要把每一段路起点终点,时间,方向,转向到哪段路都跑出来就行了,考虑每条线段最多被其他线段分成n段,那么我们最多只需要记录n*n*2段路就行了最后时间%跑一遍循环的时间然后线性扫一遍#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxl=510;i

2021-03-09 15:11:46 269

原创 codeforces1464C. Poman Numbers

https://codeforces.com/contest/1464/problem/C这个规律也没推出来,知道最后两个是固定符号,前面随便选就是水题了代码学习自roundgod#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxl=3e5+10;int n,m,k,cnt,tot,cas,ans;ll x;int a[maxl],num[maxl],ned[max

2021-03-06 02:29:04 173

原创 codeforces1464B. Grime Zoo

https://codeforces.com/contest/1464/problem/B草啊这题也没猜出结论,ivegetable exploded当x<y的时候,显然就要01多点,10少点,那么对于?来说,肯定是前一部分全放0,后一部分全放1具体证明挺难想到的,题解里有#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxl=3e5+10;int n,m,.

2021-03-06 01:42:33 144

原创 codeforces1464A Peaceful Rooks

https://codeforces.com/contest/1464/problem/A一开始看错题了以为是走的长度总和,然后发现看错了以后心浮气躁不会做了实际上就是个模型转化,首先本身在对角线上的肯定不用动,其次m<n,所以从事可以通过移动2步移动到对角线上,那么就是看有多少个移动2步和多少个移动1步那么每个棋子移动一步就是要么移动到x,x,要么移动到y,y,而他们之间就可以抽象成一个图论问题,类似于2-sat那么就可以用并查集维护,如果它的坐标x,x,y,y都被占领了,也就是并查

2021-03-05 14:58:35 174

原创 ICPC2019徐州 Yuuki and a problem 树套树

https://nanti.jisuanke.com/t/42547学习自https://www.cnblogs.com/zxytxdy/p/12375629.html顺便复习了一下树状数组套主席树怎么写,上一次写好像是17年= =要维护区间有哪些值,所以主席树搞搞,然后又因为要变化,显然就是套个树状数组在外面然后这题关键是怎么求出区间所有值可组成的总和的mex首先1不行的话,然后是2,然后由于12都行了,所以然后是3,再然后就是5,也就是说我们只要判断fibonacci数列上的数是否存

2021-03-04 00:41:38 248 2

原创 codeforces1494E. A-Z Graph

https://codeforces.com/contest/1494/problem/E我就说这题怎么过了200个只比D少100个过。。。大水题卧槽这题的关键是能够走重复的点这题首先根据样例提示发现k&1的时候很简单只需要1->2->1->2->1....下去就行了,所以k为奇数的都能搞出来,那么我们只要记录是否存在从u->v再从v->u的边就行了,因为你就算v1->v2->v3这样3个,由于回文串的性质,还不如在原地两条边来回走

2021-03-03 20:09:03 268

原创 codeforces1494D. Dogeforces

https://codeforces.com/contest/1494/problem/D因为上级严格比下级大,把a[i][j]从小到大排序,然后就能从下往上构造了,并查集模拟一下注意排序的同时,还要把i,j排序,也就是一堆相同的值中,先把i的全部给构造完了,这样就不会出现冲突了#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxl=5e5+10;int n,m,k,c

2021-03-03 00:56:07 2317

原创 codeforces1494C. 1D Sokoban

https://codeforces.com/contest/1494/problem/C这题就正部分的枚举第一个箱子推到哪个特殊的位置,然后看有多少箱子连起来了,再用lower/upper_bound找出有多少箱子在特殊位置,再加上没动的特殊的位置负数部分再搞一遍一样的#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxl=3e5+10;int n,m,k,cnt,t

2021-03-03 00:51:27 517

原创 2019ICPC徐州M Kill the tree

https://nanti.jisuanke.com/t/42552这场终于有道会做的题了。。。我还是只会dp,规律题数学题蛤不清be这个感觉就是求出每个子树的重心啊,然后因为没看到两个重心都要算出来还wa了以后对拍,结果发现经典题目看漏了,然后样例又没有2个的情况。。。子树的重心要么是1个要么是连续的两个那么树形DP就行了,dpf[u]表示当前子树其他所有点到u的距离综合,ans[u][0]表示u的重心中较深的那个,dp[u]表示重心的那个所有点距离之和,son[u]表示子树节点个数,

2021-03-02 17:23:04 167

原创 2019ICPC徐州A CAT

https://nanti.jisuanke.com/t/42540经典签到找规律题不会这题需要发现从每个偶数开始4个都是异或和为0那么就小区间枚举,大区间先把中间的偶数连续4个搞出来,然后枚举左右边边界就行了#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxl=3e5+10;int cas;int a[maxl];bool vis[maxl];char s

2021-03-02 15:44:37 115

原创 codeforces1458A. Row GCD

https://codeforces.com/contest/1458/problem/A本来以为数论只会GCD,结果gcd都不会了这题关键是转化那个答案怎么求,gcd(a,b)=gcd(a-b,b)这是经典的辗转相除法依赖的基本性质然后最后的答案就变成了gcd(a1+bj,a2-a1,a3-a1,an-a1)那么我们先把这这后面一坨求出来就行了啊我好菜啊#include<bits/stdc++.h>using namespace std;typedef long lo

2021-03-01 21:37:00 199

原创 codeforces1458B. Glass Half Spilled

https://codeforces.com/contest/1458/problem/B经典dp循环边界出问题,A题不会做,B题卡一整场,C题没几个人过也不想看初步观察有个很显然的想法,假设我们二分答案,首先选出来的k个瓶子总容量需要大于这个答案,然后由于其他的瓶子倒过来有损耗,那么我们肯定是优先选剩余水量多的不损耗,水量少的让他倒过来损耗那么很显然就有个DP,dp[k][j]表示用k个瓶子,上限是j的时候,这k个瓶子的最大已有水量是多少那么最后求答案的时候就是遍历所有的j,ans=max

2021-03-01 21:20:11 194

原创 codeforces1476D. Journey

https://codeforces.com/contest/1476/problem/D观察发现向一个方向就一直直走就行了然后把dp[i][j%2][k]表示第j填在i位置向k方向走,把这个dp数组用记忆化搜索处理出来就行了ans[i]就是向左走向右走加起来#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxl=3e5+10;int n,m,k,tot,cnt;

2021-01-30 00:41:03 210

原创 codeforces1476C. Longest Simple Cycle

https://codeforces.com/contest/1476/problem/C这题维护一个前缀可以继承的最大环就行了每次now=max(b[i]-a[i],a[i]-1+c[i-1]-b[i]+now)就是说要么抛弃前面的,又b[i]-a[i]组成左边,要么向上下跑继承前面的#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxl=3e5+10;int n

2021-01-30 00:38:59 373

原创 codeforces1476B. Inflation

https://codeforces.com/contest/1476/problem/B啊艹被这道傻逼题卡了一万年,早点写cd就好了这题只要发现肯定是放在p[1]增加更优,那么就扫一遍就行了#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxl=3e5+10;int n,m,k,tot,cnt;ll tmp,ans;ll a[maxl],sum[maxl],b[ma

2021-01-30 00:36:55 524

原创 gym102136C. Kingdom Partition /Aizu - 2786G - Share the Ruins Preservation

https://codeforces.com/gym/102136/problem/Chttps://vjudge.net/contest/145955#problem/G这两题一样啊。。。维护一个前缀凸包和后缀凸包就行了#include<bits/stdc++.h>using namespace std; const int N=2e5+10; struct P{ long long x,y; long long operator *(const P

2021-01-29 22:34:05 269

原创 codeforces1477B. Nezzar and Binary String

https://codeforces.com/contest/1477/problem/B这题发现最后的字符串是固定的,且每次只能修改严格小于长度的一半那么可以发现从后往前还原回去,每一段是还原成全是1还是全是0就是确定的,因为最多修改严格小于一半那么就是线段树区间查询区间覆盖,还原完第一次以后还要跟初始串比较一蛤#include<bits/stdc++.h>using namespace std;typedef long long ll;const int ma.

2021-01-29 22:32:12 288

原创 codeforces 1477 C. Nezzar and Nice Beatmap

https://codeforces.com/contest/1477/problem/C可以从一个点开始每次找最远点,证明只能脑补一下。。。还有各种乱搞代码这里有份随机代码,他还证明了期望两次随机得到正确的排列#include<bits/stdc++.h> using namespace std; typedef struct{ long long xz; long long yz;}point; point vector_plus(point a,po

2021-01-29 22:29:13 244

原创 Aizu - 2782 C - We don‘t wanna work!

https://vjudge.net/contest/145955#problem/C这题朴素想法就是平衡树模拟操作一下就行了但因为可以离线,而且前后顺序是影响先后的,所以我们可以把所有加入的人搞个离散化,值为第一关键字,进队时间为第二关键字排个序然后他们的下标就可以体现他们的相对大小了,每个人都是不同的,而且对于相同名字不同时间进来的人,也是不同的那么最后就是树状数组上修改查询二分一下的事情了#include<bits/stdc++.h>using namespace

2021-01-29 20:12:43 106

原创 Aizu - 2784 Similarity of Subtrees JAG2016

https://vjudge.net/contest/145955#problem/E一开始想了半天怎么匹配。。。后来发现可以直接对这个值做一个hash,就是个水题了。。。因为每层的个数不超过n,所以bas设个比较大的质数就行了#include<bits/stdc++.h>using namespace std;typedef long long ll;typedef unsigned long long ull;const int maxl=3e5+10;const

2021-01-29 20:06:10 134

空空如也

空空如也

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

TA关注的人

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