自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 [总集] LOJ 分块1 – 9

分块9题出题人hzw的解析(tips.以下代码中IO优化都已省去,想看可以点传送门)数列分块入门 1修改:区间加查询:单点值查询这是一道经典题目,线段树、树状数组等都可以搞,这里讲讲分块分块就是将一定长度的一段数打包成块,统一处理的算法每个块都有自己的信息,自己的标记,统一维护,统一查询我们可以将每个区间修改或查询拆分成在若干个整块,和头尾两个不完整的块中修改、查询后信息...

2019-08-03 19:28:17 562

原创 我的IO优化模板

#define getchar gcchar getchar(){ static char buf[1<<16],*p1=buf,*p2=buf; if(p1==p2){ p2=(p1=buf)+fread(buf,1,1<<16,stdin); if(p2==p1) return EOF; } return *p1++;}template<cl...

2019-08-03 18:53:38 142

原创 CF650A Watchmen(STL+map)

目录1. 手推公式2.算法3.优化4.补充CF650A Watchmen只有三个map的一篇题解1. 手推公式∣x2−x1∣+∣y2−y1∣=(x2−x1)2+(y2−y1)2|x2-x1|+|y2-y1|=\sqrt{(x2-x1)^2+(y2-y1)^2}∣x2−x1∣+∣y2−y1∣=(x2−x1)2+(y2−y1)2​设|x2-x1|=a,|y2-y1|=ba+b=a2+...

2019-07-27 19:22:24 121

原创 P4411&&BZOJ1978 [BJWC2010]取数游戏(动态规划dp)

P4411一道dpf[i]表示一定选第i个数的条件下前i个数所能得到的最优值last[i]表示质因数i在数列a中最后出现时的下标状态转移方程为f[i]=max{f[last[j]&MediumSpace;∣&MediumSpace;j∣i}+1f[i]=max\{f[last[j]\:|\: j|i \}+1f[i]=max{f[last[j]∣j∣i}+1复杂度O(...

2019-07-26 16:13:36 112

原创 CF498B Name That Tune(动态规划dp)

CF498B动态规划f[i][j]表示前i秒时间听了j首歌的概率,则有:f[i][j]=∑f[i−k][j−1]∗(1−pj)k−1∗pjf[i][j]=∑f[i-k][j-1]*(1-p_j)^{k-1}*p_jf[i][j]=∑f[i−k][j−1]∗(1−pj​)k−1∗pj​k枚举i秒前的每一秒,要求前i-1秒都不跳歌,且在第i秒跳歌这个方程直接转移的时间复杂度为O(NT2)O(...

2019-07-26 15:12:20 144

原创 CF486B OR in Matrix(构造+思维)

CF486B一道有趣的思维题由于or的性质可知只要a[i][j]为1那么b中第i行,第j列将都变成1相反的,如果b[i][j]是0那么a中第i行,第j列都必须是0根据第二个性质我们可以构造出a矩阵但b能否由a反向得到呢?由于or的唯一性,模拟匹配即可,注意代码效率#include <bits/stdc++.h>using namespace std;int n,...

2019-07-25 23:08:41 140

原创 CF175C Geometry Horse(贪心)

CF175C贪心,注意有不少细节,很容易TLE贪心是显而易见的,每次枚举价值最小的物品,进行销毁操作朴素的枚举每一件物品复杂度为O(∑ki)O(\sum k_i)O(∑ki​),明显超时我们注意到朴素的+1枚举中有很多情况是重复的,那就可以通过乘法来跳过#include <bits/stdc++.h>#define int long longusing namespac...

2019-07-25 23:02:47 208

原创 CF140C New Year Snowmen(贪心+优先队列)

CF140C贪心+优先队列贪心策略:每次取出数量最多的三种球,合成一个答案,再把雪球数都-1再插回去,只要还剩下三种雪球就可以不断地合成雪球数用优先队列维护#include <bits/stdc++.h>using namespace std;const int N=1e5+5;int n,a[N],b[N],nm;struct ball{ int i,n...

2019-07-25 22:54:38 109

原创 CF392BTower of Hanoi(记忆化搜索)

CF392B记搜好题预处理题目给出了将一个盘从x移到y的代价(代码中为a[][]),当我们知道这并不是最优的就像最短路floyd一样松弛操作预处理得到两柱之间最优值b[][]for(int i=1;i<=3;i++) for(int j=1;j<=3;j++) scanf("%lld",&a[i][j]),b[i][j]=a[i][j];for(int i...

2019-07-24 14:04:09 143

原创 POJ2533&&SP1799 The Bottom of a Graph(tarjan+缩点)

POJ2553SP1799我们知道单独一个强连通分量中的所有点是满足题目要求的但如果它连出去到了其他点那里,要么成为新的强连通分量,要么失去原有的符合题目要求的性质所以只需tarjan缩点求出所有强连通分量,再O(E)枚举所有边,是否会成为连接一个分量与另一个分量的边——即一条出度——即可如果一个分量没有出度,那么他中间的所有点都是符合题目要求的点(因为快读快输加了太长所以就不贴了...

2019-07-20 20:32:34 114

原创 UVA1327 && POJ1904 King's Quest(tarjan+巧妙建图+强连通分量+缩点)

UVA1327POJ1904题意:有n个王子,每个王子都有k个喜欢的妹子,每个王子只能和喜欢的妹子结婚。现有一个匹配表,将每个王子都与一个自己喜欢的妹子配对。请你根据这个表得出每个王子可以和几个自己喜欢的妹子结婚,按序号升序输出妹子的编号,这个表应满足所有的王子最终都有妹子和他结婚(一个妹子只能嫁给一个王子)。看到题目时,一脸懵逼,只觉得题面很有(ci)趣(ji)但没办法啊,为了...

2019-07-18 23:26:37 172

原创 总结第一、二类斯特林数(模板)

第一类斯特林数详解看链接,这里给出朴素的打表程序:s[0][0]=1;for(int i=1;i<=n;i++) for(int j=1;j<=i;j++) s[i][j]=s[i-1][j-1]+(i-1)*s[i-1][j];第二类斯特林数详解看链接,这里给出朴素的打表程序:S[0][0]=1;for(int i=1;i<=n;i++) for(in...

2019-07-18 12:39:19 437

原创 总结组合数的几种求法(模板)

目录way1.打表C(n,m)way2. 阶乘无模way3.乘法逆元+快速幂+阶乘way4.Lucas定理way1.打表C(n,m)原理:杨辉三角∑i=mnCim=Cn+1m+1\sum_{i=m}^{n}C_{i}^{m}=C_{n+1}^{m+1}∑i=mn​Cim​=Cn+1m+1​即下图中绿色方框的数等于红色方框内数的总和:空间:O(nm)时间:预处理O(n...

2019-07-18 10:02:33 515

原创 HDU5521 Meeting(dijkstra+巧妙建图)

HDU5521 Meeting题意:给你n个点,它们组成了m个团,第i个团内有si个点,且每个团内的点互相之间距离为ti,问如果同时从点1和点n出发,最短耗时多少相遇很明显题目给出的是个无负环的图,且要跑出单源最短路,那不就是个dij吗大方向定下,但图该怎么建呢?way1:给每个团内的所有点两两暴力建边如图所示:黑的为点,红的为团,相同颜色的边长度相等共∑i=1m12si...

2019-07-17 13:56:12 161

原创 BZOJ4152 The Captain(dijkstra+巧妙建图)

BZOJ4152 The Captain题面很简洁:给定平面上的n个点,定义(x1,y1)到(x2,y2)的费用为min(|x1-x2|,|y1-y2|),求从1号点走到n号点的最小费用。很明显这是道最短路我们知道在求最短路时本身就要不断求min所以相对于拐弯抹角的横纵差的较小值,我们完全可以无视这个求min转为建|x1-x2|,|y1-y2|两条边最后跑一遍最短路即可(ps...

2019-07-16 15:17:39 156

原创 CF1194D 1-2-K Game(博弈论)

CF1194D 1-2-K Game一道简单的博弈论题首先让我们考虑没有k的情况:1. (n mod 3 =0)因为n可以被分解成若干个3相加而每个3可以被分解为1+2或2+1所以无论A出什么B都有方法应对B胜2. (n mod 3 =1)A可以先选择余数1这样问题又回到了第一种情况AB角色互换A胜3. (n mod 3 =2)与2同理,A先选2即胜而现在多出来的...

2019-07-15 11:33:25 368

空空如也

空空如也

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

TA关注的人

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