- 博客(73)
- 收藏
- 关注
原创 毒瘤(指题目名)
首先如果我们不考虑复杂度的话,直接主席树二分就能轻松解决了但是3e5的数据范围会让的算法跑得很慢,而且常数也比较大所以我们考虑换一个思路假如我们从小到大把点按权值排序,然后开始用并查集合并,记录下合并时的位置的值,最左边的位置,以及所在块的权值接着我们考虑把询问的权值从大到小排序,那么对于每一个询问,就可以把所有权值比他大的合并点都加进来我们设询问的左端点l作为左边界时,右...
2019-04-01 19:05:06
350
原创 数字重排
很容易就能发现当最小值只有一个时的贪心策略剩下的可以用dp解决,很容易就能发现就是要选出一些数使得在模最小值的情况下最大那么就可以有一个很简单的O(N*C)的DP了,用bitset优化一下就可以了而且这个手写bitset的板子也很漂亮啊,以后我要多封装(雾...
2019-03-06 15:04:53
1170
原创 关于FMT以及子集卷积
zjp_shadow的博客讲的很详细了其实主要是学习子集卷积因为已经有FMT的基础在前面了,现在操作跟以前一样,只是再加一位作为1的个数当且仅当1的个数和等于最后或出来的个数和,才能够表示成子集卷积所以就把不满足条件的改成0就行了子集逆卷积就是一个简单的求逆就可以了,因为N其实是非常小的,所以可以直接做具体的可以看博客233...
2019-03-04 16:59:50
684
原创 省选准备
省选前要学习的一些知识点Miskcoo’s Space神仙博客SFN1036讲的Cipolla算法sunshine讲的三维凸包的题目西域狂猪讲的半平面交斯特林数的众多性质–百度百科万能的一天更新不知道多少题的yyb大佬博客...
2019-03-01 21:15:07
279
原创 神O的法法序列
很简单的一道题(虽然我没有做出来)我们可以大致分一下块,dp[i][j]表示在对于i这个位置假设询问的状态为j,只考虑后面2^8位,那么答案是多少利用lucas定理可以发现如果位置用i+k表示的话,k为j的子集时这个数才有贡献那么就高位前缀和处理dp,剩下的枚举子集就做完了#include<bits/stdc++.h>using namespace std;...
2019-01-09 22:02:08
234
原创 神O和神牛
这是一道状压dp题dp[i]表示状态为i时最小的时间那么我们考虑什么时候可以办护照就是下机和登机的那个时间,那么我们枚举这一次办哪个签证,再找一下他能放的最靠前的位置就可以了如果我们能够把签证办理时间排序,可以发现最优位置单调不降,那么就可以O(2^n*n)做出这道题了代码写炸了好几次,还看错了题,实际上也不难#include<cstdio&...
2019-01-09 21:58:08
287
原创 常系数齐次线性递推学习
这是一种对于矩阵快速幂的优化方式因为我很菜不会正常的证明,只能用同学教我的比较清真的证明了我们通过举例来说明,假设有一个递推公式是f[i]=2*f[i-1]+f[i-2];我们考虑把的过程与把递推公式往下化的过程可以发现取模的每一步对应的是把递推公式往下化一层那么再思考一下普遍情况下应该安排对什么取模如果递推公式是那么取模的多项式就应该是那么多项式取模时如果n比较小...
2019-01-04 21:12:11
300
原创 咋肥似呀(joke)--发了一堆tarjan论文...
一道十分巧妙的分治题,很明显是需要离线的那么我们看看时间轴分了类后,一条边有贡献当且仅当连接的两个点在左边没有形成环如果前半部分在左边能够形成环,我们就把他们加入下一层的左边,否则就加入右边然后递归tarjan处理,已经成环的就可以直接并查集合并为一个点,那么可以发现复杂度就是mlogm理解了之后就是非常简单的一道题了#include<bits/stdc++...
2019-01-03 19:18:15
356
原创 扫雷大师
表面上看是一道交互题,但是实际上可以把所有数据存下来比较看一下它的种子是哪一个就可以了,找的办法非常简单#include <bits/stdc++.h>#include "minesweeper.h"using namespace std;static const int dx[] = {1, 1, 0, -1, -1, -1, 0, 1};static ...
2019-01-02 16:22:29
367
原创 几何高手(geometry)
我们发现0这个位置肯定是0剩下来的n个位置如果确定了,那么整个序列就可以确定了那么这些位置决定的根据是什么呢,当然是最后输出的字典序了所以我们先随便赋值,sort时直接改一下cmp就可以得出最后的答案了比较时如果相同那么交不交换都对它的位置没有影响,否则交换后对应位置的数就会改变把dp[i]位置的1改到i位置再输出就可以了#include<bits/stdc++...
2019-01-02 16:17:28
260
原创 电影(movie)
这个就是我思想出现了一点偏差。。。反正B序列放过去的都是可以固定有序的,那么现在我们只需要考虑把A中原来的变为有序即可以每个数的值为下标,位置为值,重新建一个数组并离散那么现在我们只需要一段连续的单调上升区间了,而要去掉区间外的值所以我们优先考虑去掉这个区间左右端点的值包含的值,这些去掉都是没有任何影响的如果去掉后就可以了,那自然是皆大欢喜,如果不行,那么我们优先去掉一边,...
2019-01-01 18:25:41
343
原创 绳子(rope)
绳子(rope)有一根绳子,从左到右分为 n 段,每一段长度相同,厚度为 1。共有 m 种颜色,第 i 段的颜色为 ai。有两种操作:(1)将绳子从某相邻两段的交点处折叠,将对应的段拧在一起。必须保证对应的段颜色相同,拧在一起之后的厚度为原先两段之和。例如,现在绳子的颜色为 1 2 2 1 3,厚度为 1 2 1 3 1,我们可以在第 2、3 两段的交点处折叠绳子,颜色变为 2 1 3...
2019-01-01 18:20:08
776
原创 序列
最近真的该好好反思一下,今天的题思路都是对的但是不是写错了,就是看错了,或者想的偏了,没有看到题的重点这道题如果没有单调递增的限制,不过就是一道简单的斜率优化那么有了过后呢,用树状数组来满足这个限制,我们现在就是一个单点修改区间查询每个点维护一下斜率优化时的东西,开个vector就可以了听说这道题也可用CDQ分治做,可以再思考一下#include<bits/st...
2019-01-01 18:11:29
205
原创 AGC 016 F - Games on DAG(状压dp)
AGC 016 F - Games on DAG(状压dp)题意给你一个有 个点 条边 DAG 图,点的标号和拓扑序一致。现在有两个人进行博弈,有两个棋子分别在 号点上,需要不断移动到它指向的点上。如果当前两个点都无法移动,那么就视为当前操作的人失败。问有多少边集满足先手必胜。 这是一道思维非常困难的状压题我们考虑转化问题,两个棋子是独立的,那么我们如果求...
2018-12-28 15:15:09
312
原创 最小圆覆盖
易证,最后 最小的圆一定有三个点在圆的边界上(只有两个点的时候会有两个点)所以我们把点rand_shuffle随机排一下那么现在这些点就都不确定了然后按照最小圆覆盖的算法,下一个点在前i个点中是作为边界的概率只有3/i而一旦概率高了过后,那么能够一次覆盖的点又会变多所以期望的复杂度其实只是O(nk)的#include<bits/stdc++.h>using ...
2018-12-27 10:22:49
206
原创 BJ80中集训--踢罐子
真实计算几何题目首先三个点的点对我们是可以直接计算贡献的那么剩下的贡献我们分为四边形来考虑对于每一个凸四边形,可以发现贡献都是2,凹四边形则没有贡献所以这道题其实是统计图中凸四边形的个数我们考虑枚举每条线段,如果是一个凸四边形,枚举后有四条线段是剩下两个点均在同一侧两条线段是两个点分布在两侧,而凹四边形则是3比3所以我们只需要统计每条线段左右有多少个点就可以解方...
2018-12-26 19:48:51
166
原创 BJ80中集训--多线程
这算是一道比较综合的思路题吧,考场上只想出了后半部分的贪心考虑如果我们已经求出了一种可行情况,那么其他的答案不过只有三种:1.上升序列给一个给下降序列2.下降序列给一个给上升序列3.两个序列交换一个元素因为如果超过一个元素的操作,就会在另一种里面形成不合法的情况接下来只需要求出一个可行解即可O(n)求答案了如果两个序列已经相交过了,就已经互不影响了否则如果新加...
2018-12-26 19:38:11
211
原创 BJ80中-串后缀
这是一道非常简单的后缀数组既然与LCP有关,我们考虑在height数组上解决这个问题我们找到最小的height位置h后,二分到两边,都看作满足期望为1的条件时解决那么对于左边最小贡献设为f1,右边最小贡献设为f2我们现在就是分配期望到两边,考虑一个点在左右需要的贡献f1*p1+f2*h==f2*p2+f1*h,p1+p2==1那么就可以解出p1和p2的具体大小最后...
2018-12-26 07:36:13
288
原创 超现实数surreal number学习
Hold_My_Own dalao关于超现实数的博客这是一篇非常详细的证明,生动形象的图片发人深省看的我都想去看看《surreal number》这本书了虽然可能没有中翻而且我看不太懂英文之后可能会添加一些学习的笔记吧...
2018-12-23 20:33:41
2245
原创 yjqcc--BJ80中集训
题目背景wxh0l0910给了rncfx一个N∗M的棋盘,一开始所有各自的颜色都是0,然后共价爷依次进行K次操作,第ii次操作要么是把第Li行到第Ri行的所有格子全部刷成颜色Ci, 要么是把第Li列到第Ri列的所有各自全部刷成颜色Ci。 在依次进行完所有操作后,wxh0l0910向rncfxrncfx提出了一个问题:“有多少个无序的角相邻或者边相邻的格子对,他们的颜色相同?”输入格式第...
2018-12-23 19:43:50
295
原创 yjqaa--BJ80中集训
给定一个非负整数x,你每次可以对x执行两种操作,要么令x=x−1,要么令x=x−2^i(前提条件是x&2^i≠0。令f(x,y)表示从x变成y的最小操作次数。求1<=x<=n,1<=y<=n,的所有f(x,y)的和对1000000007取模的结果。输入格式一行一个另一串表示询问的N的二进制表示(保证合法,没有前导0)输出格式一行一个整数表示答...
2018-12-23 19:13:22
314
原创 BJ80中--连续区间查询
给出一个1到N的排列,定义一个区间是连续的区间当且仅当这个区间的值域也是个区间。例如[1,3,2]是连续区间,但是[1,3]并不是。再给出M次询问,每次询问一个区间[L,R],需要求的是包含这个区间的长度最小的区间。如果有多个,请输出左端点最小的那一个。输入格式第一行一个整数N,表示排列长度。 接下来一行N个整数,用空格分开,表示给出的排列。 接下来一行一个整数M,表示询问个数。 ...
2018-12-21 21:10:42
522
原创 BJ80中--YJQ二分图
题目背景给定一个二分图,两个部分我们称之为A部和B部。对于一个A部的点Ai,其在B部中相邻的点是一个连续的区间,记为[Li,Ri]。现在你需要找一个尽量大的匹配,使之在具有匹配的性质的前提下,所有匹配边互不相交。(即不存在两条匹配边(Ai,Bx),(Aj,By),使得i<j,x>y)。输入格式第一行一个整数N,表示A部点数。 接下来N行,每行两个整数Li,Ri表示对...
2018-12-21 21:04:43
469
原创 BJ80中--电梯
题目背景有一栋大楼和N个访客,第ii个访客会在TiTi的时间到达第0层,他的目标是Ai层。 这栋大楼只有一部电梯,一开始电梯在第0层楼,每个访客会在能进电梯的时候就进入电梯,并按下自己所要去的楼层。每当电梯回到第0层楼的时候(包括一开始),电梯会一直打开门,直到你在后台控制电梯关门。在关门后,电梯会前往被按下的最高的楼层(过程中每个访客会在其目标楼层出电梯),然后回到第0层,同时清空标记(即让...
2018-12-21 20:28:45
383
原创 支配树
支配树的semi是最好求的一条边(x,y),如果dfn[x]<dfn[y],则x是y semi 的一个候选否则如果dfn[x]>dfn[y],则x的semi都可以作为y的semi,我们选取一个dfn最小的就行了至于semi怎么推导idom,还得容我再推导一下#include<bits/stdc++.h>using namespace std;int t...
2018-12-20 20:50:26
197
原创 BJ80中集训---程序锁
这是一道思路题,话说这次集训特别喜欢考思路题我们考虑一个字符串什么时候不合法当且仅当当前值为0且两边均为P时然后我们发现当我们遇到P时我们是可以一直保留P的所以问题转化为对于两个字符串,分别求出f[i]表示前缀和最小为i且前缀和最小时,后一个字母为P此时的方案数是多少然后两个字符串的f[i]和f[j],如果i+j>=0,对答案就有f[i]*f[j]的贡献那...
2018-12-19 19:05:21
340
原创 犬犬制作礼物
可以发现状态是三个三个的转移的问题变为三种颜色固定数量,求相邻颜色不同的组合方案数枚举开头的颜色A,另外两个颜色BC可以插在中间有奇数和偶数的两种情况B,C,或者BC然后讨论一下统计方案就行了#include<bits/stdc++.h>using namespace std;int t,m,r,g,b,ans;const int mod=1e9+7;...
2018-12-18 19:36:57
216
原创 喵喵国的游走
这是一道很简单的dp题,但是思路比较难想主要方法就是枚举每个点走i次走回自己的方案数然后略微容斥一下,就可以A掉了#include<bits/stdc++.h>using namespace std;int mod,n,m,c[2005][2005],w[2005],dp[2005];int moc(int x){ if(x>=mod) return ...
2018-12-18 19:32:52
231
原创 省选模拟--取石子(stone)
这道题主要是思路题如果抑或和为0,则答案显而易见是Draw,石子对两边的贡献相同否则显然只考虑抑或后的最高位的贡献,题目转化为01序列,问先手是否能拿奇数个1就可以开始讨论,情况1:如果n为偶数,则必胜,先手可全拿偶数位置或奇数位置上的数情况2:如果n为奇数,当序列两端有1是可以继续讨论,否则回到Bob先手的情况1之后Alice必须和Bob拿相同的0或1,否则又会转化为...
2018-12-14 19:57:34
345
原创 省选模拟赛--折纸(paper)
这是一道探究性质的题目,但是思路很清晰明了性质:对于一个满足要求的子矩形,他的折叠方式的顺序是可以任意改变的证明:其他的情况也可以类推了因此我们只需要考虑这个大矩形横着划分的方式*竖着划分的方式就是答案了然后对于每一个划分的位置,都是可以合并的如果翻折时越过了除大矩形边界外的边界是没有影响的可以证明此时一定可以先自行翻折成较短的长度剩下的就是简单的MAN...
2018-12-14 19:45:38
467
原创 KM算法及一道例题
这道题乍一看没有什么性质,但是我们众所周知也很容易推出来的有一个性质这种矩阵的每一项a[i][j]是可以表示成a[i]+b[j]的也就是说我们可以构建一个二分图对于a[i][j],左边的点i向右边的点j建一条权值为a[i][j]的边我们现在的要求是对于每 一条边,要求它两边的点权必须加起来大于等于边权只要学过KM算法的人,就会突然发现:这怎么和KM算法的实现流程这么像?...
2018-12-14 18:50:27
1004
原创 洛谷P4921 情侣?给我烧了!
一道莫名其妙的黑题这道题其实我开始的思路是容斥的,然而我写的容斥减去了一些重复的部分导致最后的答案很奇怪然后就换换思路ans[i][j]表示i对情侣中有j对和睦的方案数考虑ans[i][j]的转移,那么可以得出表示i对情侣中选j对情侣的方案数,乘上在i排座位里选j排座位的方案数,乘上这j对情侣坐j排座位的方案数,乘上每对情侣各有两种做法的方案数,而其他的i-j对情侣...
2018-12-13 20:00:53
298
原创 FWT(快速沃尔什变换)学习
https://www.cnblogs.com/cjyyb/p/9065615.htmledo直接看大佬的博客吧不仅有证明之类的还有板子呢
2018-12-12 14:20:09
262
原创 能力强化!!!--NOI爆零赛
数据范围 n,m,k<=100首先我们得知道有一个东西叫MIN-MAX容斥然后我们可以知道只有一个能力时f[i]表示对于一个能力强化i次后,不强化到满级的方案数那么dp[i][j]表示对于i个能力,总共强化j次,没有任何一个能力强化到满级的方案数那么dp[i][j]每次用f来转移一下,相当于做个背包,乘上组合数就是新的方案数然后我们把dp[i][0]-dp...
2018-12-11 17:17:56
344
原创 字母(letter)
字母(letter)【题目描述】给定一个字符串。取出的所有子串,并按字典序从小到大排序,然后将这些排完序的字符串首尾相接,记为字符串。有次询问,每次询问中的第个字符。是被加密的,每次询问给出两个正整数,设为之前所有询问答案的ASCII码之和。初始时为。则该次询问的。 【输入格式】输入第一行包含一个字符串,第二行包含一个正整数。接下来行,每行两个正整数P,M。 【...
2018-12-10 19:30:41
6028
原创 山东省选训练day2--gift
这道题首先对于0个物品是一个常数项此后每增加一个物品,dp[i]的最高次项便增加1所以对于每一个dp值,最后都是可以用一个多项式表示的考虑这个多项式什么时候构成一个循环设所有物品的最小公倍数为lcm,则lcm就会形成一个循环则dp函数的s也会在lcm时形成一个循环因为lcm很小那么我们可以考虑拉格朗日插值法来求出这个多项式代码如下#include<c...
2018-12-07 17:13:57
171
原创 [TJOI2018]教科书般的亵渎
总的来说呢,这道题真正难处理的地方不过是求那么我们就考虑怎么求这个东西其实有很多种做法,但是最简单的还是直接推式子也就是Fizzmy的这种方法,最后直接就可以每次 的复杂度解决这个问题了代码如下#include<bits/stdc++.h>using namespace std;const int mod=1e9+7;int dp[105],inv[105...
2018-12-04 18:37:30
1180
原创 合并石子--Garsia-Wachs贪心
题意:有n堆石子,每次可以合并相邻两个石子,代价为两堆石子的和,求将这堆石子合并为一堆的最小代价。这道题可以用平衡树做,只是维护的东西很多很多,会非常难受所以我就退而求其次,选择了ZJC大爷的卡常做法1e5的数据范围也能在1s内轻松卡过啦!!!思路与Garsia-Wachs算法一致代码如下#include<bits/stdc++.h>using name...
2018-12-04 15:44:28
341
原创 CDQZ多校集训题目--盛夏
题意:给一个有向无环带权图,每条路径上最多只能割一条边,最后使1到n无路径,问最小割边边权和是多少。题意很清楚,但是这道题的题解其实是只适用于很少的情况的我们考虑的做法是网络流最小割对于所有边的反向边,流量均为inf那么如果具体分析原因其实是这条路径割上游,那条路径割下游,然而可以走这条路径的上游和那条路径的下游,如何避免?考虑到那条路径的上游和这条路径的下游是没有割的,中...
2018-12-04 11:24:40
248
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人