- 博客(27)
- 收藏
- 关注
转载 题解 P4980 【【模板】Polya定理】
【模板】Polya定理 题解提供一个新算法。。。首先,我们来分析一下题目:给一个有n个点的环图n种颜色,问本质不同的方案数那么,很明显的,这是一个polya定理(废话,题目名说明了一切)我们先来看看这道题的“操作”,很明显的操作就是只有一个——平移(有人说旋转,但我个人更喜欢看成平移。。。)我们就可以开始枚举置换了首先,我们枚举每次平移的单位长度,那么很明显的本质不同的平移...
2019-09-16 14:27:00 257
转载 题解 P4461 【[CQOI2018]九连环】
题解 P4461 【[CQOI2018]九连环】 由于各位大佬已经用各种方法,将公式推得我这里便不再过多阐述,我们来谈谈本题的实现~ 首先,我们先来看公式:$\lfloor\frac{2^{n+1}}{3}\rfloor$ 我们知道,因为n<=1e5,所以$|2^{n+1}|$很小,而且询问也只有10,所以我们如果能较快求出$2^{n+1}$我们再跑个高精除低精便可以通...
2019-03-18 18:37:00 194
转载 玄学最短路算法——Ex Floyd
Floyd再思考 ——by ThinkofBlank一.序言 Floyd,是一个十分常用的图论算法,其作用是在O(n^3)的时间内计算出全源最短路。其实现原理是利用的dp,然而,刚开始接触Floyd的时候,并没有去尝试理解,思路此算法,仅仅记了下打法就跑了,最近无聊时思考了下,得出了些有用的东西,特此来分享 注意:以下说的图都是无负环的,不然,求甚么最短路。。。 当然,...
2019-02-24 18:24:00 250
转载 题解 CF785E 【Anton and Permutation】
题解 CF785E 【Anton and Permutation】一.闲谈听说本题分块可以过而且吊打树套树?orz。。。我果然还是太菜了。。。二.分析1.求逆序对简化题目:给出序列1-n,以及m个操作,每次交换两个数,求当前序列的逆序对数如果,交换的两个数相同,我们直接输出当前答案即可,那么其他的情况呢?假设,我们知道交换前的逆序对数,那么新序列的逆序对数便等于原逆序对数...
2019-02-21 14:47:00 197
转载 题解 P1825 【[USACO11OPEN]玉米田迷宫Corn Maze】
玉米田迷宫题解一.背景 x年x月x日,竞赛老师拿此题问我,然后我玄学过了,于是特来写此题。(谁说dijkstra不能过的??)二.分析 本题,我们先不考虑有传送阵的情况,发现,其实就是一个最短路(bfs)的模板题,随便弄下就能过,不过,这里多了个传送阵,于是我们就要考虑下怎么做题了。。。Method 1 考虑bfs。 通过观察发现,本题的边的权已经不止是我们平常所做...
2019-02-19 21:54:00 302
转载 实现非递归树链剖分
树链剖分,是个很神奇蛇皮的算法,他巧妙的运用了与分块类似的思想,来加速整块代码。不过,对于某些毒瘤题来说,树链剖分很可能会爆栈,如:一本通:染色。不过洛谷还好,不会爆栈。。。 那么这个时候,我们就需要手动模拟来实现非递归版本的树链剖分了。 注意到,整块树链剖分的代码中使用了递归的地方: 1.两次dfs求dfs序 2.线段树 而其中线段树,我们完全不用改。因为,它的...
2019-01-21 09:56:00 112
转载 题解 P3423 【[POI2005]BAN-Bank Notes】
本题有两个问,第一个是求最少硬币数,第二个则是求方案(翻译竟然没写。。。)。 首先,我们来解决第一问。 我们可以很容易想出,这是一个dp,我们设dp[i]表示凑出面值i最少需要多少个硬币,然后打个多重背包就好了。。。于是你就T了。。。 对于多重背包,我们通常使用一种手段:二进制拆分(听说还可以使用单调队列优化,但是本弱鸡并不会。。。QwQ) 二进制拆分,它的原理是:任...
2019-01-21 09:32:00 215
转载 题解 P3871 【[TJOI2010]中位数】
看到此题,顿时兴奋了,因为,我以前yy出了一种排序,叫做二分链表插入排序。详细板子代码见博客结果因为vector的insert太慢而被我GG了跑【模板】快速排序然后,看到此题,找中位数嘛,肯定是要在排好序的数列里面选出嘛。。。支持添加数字,嘛,二分一下就好了啊。。。然后,我就惊喜的发现这个思路与我之前yy出的排序异常相似,于是,我就直接ctrl c+ctrl v。结果就这样只...
2019-01-13 07:45:00 143
转载 【带修改的主席树】理解题解 (P2617 【Dynamic Rankings】题解)
一:前置芝士:1.树状数组(不会树状数组来打这个?(大雾 )2.主席树(不会主席树来打这个?(巨雾 )3.前缀和 (不会前缀和来打这个?(神雾 )4.权值线段树 (不会权值线段树来打这个?(仙雾) )5.看这篇文章的你需要用主席树将求区间kth练得比较熟,并且要理解其原理。二:分(che)析(dan):首先,我们知道,主席树其实是一颗具有n个根的树(介于树与森林之间)。第i...
2019-01-13 07:38:00 93
转载 快速计算高精乘低精---低精优化高精
这是一个普通人都想得出来的超简单但很有用的优化。 -----序言 给一个题: 计算n!的阶乘,n<=10000,时限500ms。一.各种算法 要是你打普通高精乘低精,辣么恭喜您GG,要是您不爽时限,给他加大成1000ms,恭喜您,还是...
2019-01-12 17:20:00 334
转载 【数论】整数分块及详细证明
markdown不会。。。转到:https://www.luogu.org/blog/KingofNight/post-shuo-lun-zheng-shuo-fen-kuai-ji-yang-xi-zheng-ming转载于:https://www.cnblogs.com/ThinkofBlank/p/10183838.html
2018-12-27 11:07:00 506
转载 题解 P4874 【[USACO14DEC] Piggyback_Silver 背负式运输(银)】
此题其实比较水的。。。首先我们来分析题目,我们假设,贝茜和艾尔西在i点相遇后贝西开始扛艾尔西,那么代价为多少呢?显然,代价=贝茜到i点的最小代价+艾尔西到i点的最小代价+贝茜和艾尔西一起到n点的最小代价。我们分开解决,首先贝茜到i点的最小代价=走的最少步数*b,而走的步数,我们跑一遍以spfa(1)就可以轻松求出来了!同理。艾尔西,我们跑spfa(2)就可以求出,而共同走...
2018-12-24 09:25:00 160
转载 题解 P3792 【由乃与大母神原型和偶像崇拜】
这题,主要是维护平方和来判断区间是否连续,但这里任然有两个问题:1.值域为1e9,极限下,long long是一定会爆炸的2.正如讨论区的,平方和可以被hack那么该如何解决这个问题呢?我的想法是——离散化!离散化后,值域的极限就在1e6,假设这5e5个数,每个都是1e6,平方和也才5e17,long long是不会爆炸的。离散化后,虽说hack的几率就减小了,但...
2018-12-23 21:01:00 131
转载 高精板子合集(string版本)
#include<bits/stdc++.h>using namespace std;const int N=100001;int a[N],b[N],c[N];inline string zhuan(int x){//int转化string string ant=""; while(x){ ant=char(x%1...
2018-12-21 10:47:00 216
转载 二分链表插入排序
非常简单的实现没有什么好讲的,主要是链表的插入具有易实现的特点,才弄出的这玩意儿,效率一般...本来估摸复杂度为O(nlogn),但似乎用stl后更高?代码://#pragma GCC optimize()//手动Ox优化#include<bits/stdc++.h>using namespace std;const int N=1e5+1;vec...
2018-12-19 22:00:00 199
转载 素剩倍筛
#include<bits/stdc++.h>using namespace std;const int N=1e8+1;int las[N],nex[N],sta[N],top;bool f[N];inline void fsbz(int maxe){ int over=sqrt(maxe); for(int i=2;i;i=ne...
2018-12-19 21:54:00 127
转载 关于扩展欧几里得中求最小非负x的方法的推导
推导假设,我们已经求出有一对x,y满足ax+by=gcd(a,b)。我们想要求最小非负整的x,那么必须要减去一个能减的 最大值,我们设减去一个D,则方程变为: a(x-D)+by+aD=gcd(a,b)整合一下: a(x-D)+b(y-aD/b)=gcd(a,b)我们知道,gcd(a,b)是整数,我们假设aD/b不为整数。 则对应的’y’(现在的y)为小数,不成立,...
2018-12-19 21:29:00 367
转载 快速模拟暴力组合数
本题解讲的是快速暴力组合数的方法,需要知道以下知识(能做此题的大佬应该都知道吧。。。):欧拉筛,组合数公式,卡速米(这个应该没人会吧?) 否则将引起不适设π(x->y)为从x连乘到y(数学公式编译器崩了。。。)组合数,大家都知道,公式为C(n,m)=!n/(!m*!(n-m)) 我们将它化简一下:π(m+1->n)/!(n-m)(当然,如果n-m>m,我们可...
2018-12-19 21:27:00 128
转载 题解 P1168 【中位数】
看了此题,发现是求中位数,自然而然的想到了求kth求kth有多种,我用的是权值线段树,即记录x的个数,但,我们看题,发现a[i]可以高达1e9,一个数组是开不完的,不过万幸的是n只到了1e5,而求kth只需要知道大小关系就行,不需要知道具体的值,所以,我们可以用离散化来搞定它! 这里说一下stable_sort,它其实跟sort差不多,不过区别在于相同元素sort后的值是一样...
2018-12-19 21:26:00 139
转载 题解 CF47A 【Triangular numbers】
这题其实就是高斯求和问题,即1+...+x=x(x+1)/2。由此,我们就可以用递推的思想来解决问题:include<bits/stdc++.h>using namespace std;int main() { //freopen("ask.in","r",stdin); //freopen("ask.out","w",stdout);...
2018-12-19 21:22:00 167
转载 题解 P4994 【终于结束的起点】
这道题,发现暴力能过时,喷了3k的血。。。本人花了近半小时打表找规律。。。然后真找出来一些了。。。1.f[x^n]=f[x]*(x^(n-1))2.设x,y为不相同的质数,则f[x^a*y^b]=lcm(f[x^a],f[y^b])。3.对于一个质数x,他的f[x]极小(似乎都很小??)对于一个n,我们就可以将他进行质因数分解:设n=x^ay^b...然后我们暴力求出...
2018-12-19 21:21:00 196
转载 题解 P1286 【两数之和】
提供一个新思路这题,我们假设n个数分别为a1,a2,a3,a4,a5...an,且对于任意1<=i<j<=n满足ai<aj而他们两两之和即为输入的各数字,从中,我们不难推出对于输入的数字中(我们把它们按从小到大排序,分别设为m1,m2...)一定满足:m1=a1+a2,m2=a1+a3(我们可以用反证法证明结论)但m3有两种情况:m3=a1+a...
2018-12-19 21:20:00 735
转载 题解 P2340 【奶牛会展】
此题搜索可以过!!!看到此题,第一想法,是01背包,然而,作为一个蒟蒻,我怎么会打正解呢?,于是就开始打dfs!想要完成此题,普通的搜索肯定是过不了的(不然要dp干嘛),所以,我们要考虑剪枝比较容易的,我们可以轻松想出来剪枝:(不吐槽名字我们还是好朋友。。。)1.用数组guji[i]表示搜索到i时,不考虑智商,情商必须大于零的限制,之后能获得的最大智,情商之和。如...
2018-12-19 21:18:00 127
转载 题解 CF450B 【Jzzhu and Sequences】
作为首A的人(?)我来发布下这道大水题的题解了~首先题目给出了f[i]=f[i-1]+f[i+1],我们移下项: f[i+1]=f[i]-f[i-1],所以我们可以知道:第i项等于它前两项之差!即: f[i]=f[i-1]-f[i-2],同时,f[i-1]=f[i-2]-f[i-3],代入得: f[i]=-f[i-3]=f[i-6],所以我们只需将前6项算出,第n%6项就是答案了...
2018-12-19 21:17:00 106
转载 题解 P1470 【最长前缀 Longest Prefix】
首先看题,题目要求我们求最长匹配的长度,我们不妨如下思考: 对于字符串S,我们从第y位开始搜索(保证前y-1位一定可以是匹配) 从第y位开始生成字符串,若此时生成的字符串在P中出现过,则证明 此时的字符串可以被匹配到y+i的位置,我们再从y+i+1开始搜索便好了! 而问题的答案就是我们已到达的最大的一个y。 那么问题来了,如果按照上述说法搜索,...
2018-12-19 21:14:00 158
转载 题解 P2532 【[AHOI2012]树屋阶梯】
此题就是一个卡兰特数列,用个高精就行 = = // luogu-judger-enable-o2include<bits/stdc++.h>define me(a) memset(a,0,sizeof(a))//#pragma GCC optimize(0)//o0优化//#pragma GCC optimize(2)//o2优化//#pragma GCC...
2018-12-19 21:13:00 161
转载 题解 P1008 【三连击】
#include<bits/stdc++.h>usingnamespacestd; int main() { int a,b,c,d,e,f,g,h,i; for(int i1=100;i1<=999;i1++){ a=i1%10; b=2*i1%10; c=3*i1%10; d=i1/10%10; e=2*i1/10%10; f=...
2018-12-19 21:11:00 120
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人