上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 20 下一页
摘要: 传送门 分析 我们知道如果对于模数$P$有$gcd(x,P) = 1$则$x$一定有且仅有一个逆元,可以表示为 $x \equiv \frac{y}{1} (mod P)$ 即为$xy \equiv 1(mod P)$ 所以我们只需要找出与$P$互质的数的个数然后除以二再加上$i*i \equiv 阅读全文
posted @ 2018-10-30 22:41 水题收割者 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 传送门 分析 见正睿10.3笔记 代码 阅读全文
posted @ 2018-10-30 10:55 水题收割者 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 传送门 分析 不难发现集合中的数一定是集合内其它一堆数的$gcd$ 于是我们枚举$i$,统计原来集合中有几个数是$i$的倍数,设这个值为$f(i)$ 之后对于每个$i$如果不存在$f(x*i) = f(i)$则这个$i$合法,答案累加一 代码 阅读全文
posted @ 2018-10-21 14:22 水题收割者 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 传送门 分析 dp[i][j]为考虑前i个位置,[i-j+1,i]中的颜色互不相同,并且ai-j与这段区间中的某一个位置颜色相同 我们枚举第i+1个位置和[i-j+1,i]中的哪一个颜色相同或者全部不同,进行转移 dp[i][j]=dp[i-1][j-1]*(m-j+1) dp[i][j]+=dp[ 阅读全文
posted @ 2018-10-20 14:42 水题收割者 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 传送门 分析 将询问离线,枚举右端点。新加入一个右端点i时,假设离i第t近的同色位置为p,t+1近的是q,则当i是右端点时,(q,p]的点可以作为左端点。 注意对于一个点离它第t近的同色点可以用队列维护求得 之后用树状数组差分一下就可以了 代码 阅读全文
posted @ 2018-10-20 14:07 水题收割者 阅读(284) 评论(0) 推荐(0) 编辑
摘要: 传送门 分析 令f(i,j)表示i点完全图有j个联通块的方案数。 讨论有i-1个点已经固定了,我们拉出一个代表元素然后讨论它的集合大小然后组合数算一下就可以了。 $$ dp(i,j) = \sum_{k=1}^{i-1} C_{i-1}^{k-1} dp(i-k,j-1) dp(k,1) $$ $$ 阅读全文
posted @ 2018-10-20 13:44 水题收割者 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 传送门 分析 将所有字母分别转化为1~26,之后将字符串的空位补全为0,?设为-1,我们设dp[p][c][le][ri]表示考虑le到ri个字符串且从第p位开始考虑,这一位最小填c的方案数,具体转移见代码。 代码 阅读全文
posted @ 2018-10-16 15:46 水题收割者 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 传送门 分析 我们发现这个四元组可以分解成一个逆序对拼上一个顺序对,这个线段树搞搞然后乘一下就可以求出来了,但是我们发现可能有(a,b)为逆序对且(b,c)为顺序对的情况,所以要进行容斥,我们只需要枚举是哪一个点重合然后减掉即可。 代码 阅读全文
posted @ 2018-10-16 14:48 水题收割者 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 传送门 分析 我就是个BT...... 直接排序后开数组记录每条线上的信息,注意由于每个点只会影响前面第一个点和后面第一个点,所以记录每条线的前一个点就行了。 代码 阅读全文
posted @ 2018-10-16 14:39 水题收割者 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 传送门 题目大意 给定一个序列A,求翻转A中一个区间之后的最长不降子序列的长度即翻转的区间 分析 发现直接枚举翻转的区间的话是无论如何都不行的,于是有一个非常神奇的做法。我们再设一个序列B = {0,1,2,3,4,5,6,7,8,9},然后我们枚举翻转B中的哪一段,假设我们翻转[5,8]z这一段, 阅读全文
posted @ 2018-10-15 16:17 水题收割者 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 传送门 分析 论bitset的妙用......我们利用桶排将输入的数据排序,之后分别考虑5维,a[i][j]表示考虑第i个人第j维的情况下于其它人的大小关系。最后将5维的信息并起来求1的个数即可 代码 阅读全文
posted @ 2018-10-10 20:12 水题收割者 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 传送门 分析 二分一个数表示查询位置的数是多少,将序列中大于等于这个数的数赋为1,其余赋为0,对于每一个区间查询区间和(即区间内1的个数),然后区间修改将前/后半部分修改为1,其余修改为0即可 代码 阅读全文
posted @ 2018-10-07 19:16 水题收割者 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 传送门 分析 用线段树维护区间gcd,每次查询找到第一个不是x倍数的点,如果这之后还有gcd不能被x整除的区间则这个区间不合法 代码 阅读全文
posted @ 2018-10-07 09:11 水题收割者 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 传送门 (分析见正睿2018.10.1笔记) 代码 阅读全文
posted @ 2018-10-06 21:11 水题收割者 阅读(205) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2018-10-06 18:47 水题收割者 阅读(7) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2018-10-06 11:03 水题收割者 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 传送门 (分析见正睿2018.10.1笔记) 代码 阅读全文
posted @ 2018-10-04 21:23 水题收割者 阅读(132) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2018-10-03 08:53 水题收割者 阅读(15) 评论(0) 推荐(0) 编辑
摘要: 传送门 (分析见正睿10.1笔记) 代码 阅读全文
posted @ 2018-10-02 21:26 水题收割者 阅读(128) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2018-10-01 09:46 水题收割者 阅读(15) 评论(0) 推荐(0) 编辑
摘要: 传送门 分析 我们可以用dp[i][j][k][0/1]表示A串考虑到第i个,B串考虑到第j个,一共取了k个子串,现在的A[i]是否被选的方案数。我们需要将第一维滚动一下。具体转移见代码。 代码 阅读全文
posted @ 2018-09-29 09:13 水题收割者 阅读(81) 评论(0) 推荐(0) 编辑
摘要: 传送门 分析 快排的原理是以任意一个数为标准,然后把所有小于它的数换到它的左边,所有大于它的数换到它的右边。我们就使用快排的思路,分治整个区间。对于每个区间以排好序的这个数列的中间位置的值为标准,然后继续分治这个区间,将这个区间左子区间中大于标准的移到左子区间的最右边,将右子区间中小于标准的移到右子 阅读全文
posted @ 2018-09-29 08:50 水题收割者 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 传送门 分析 就是飞飞侠这道题...... 我们可以将这张图建成好几层,每一层可以向下一层的上下左右无代价移动,而对于每个点如果付b[i][j]的代价就可以走到比它高a[i][j]的层上。我们用这种方式优化了建边,然后跑个最短路就行了。 代码 阅读全文
posted @ 2018-09-25 15:47 水题收割者 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 传送门 分析 我们先二分一下最终的平均值mid,然后让序列中的每一个数都减去这个mid,之后用新序列的前缀和建一棵线段树,枚举起点i,然后求出此时在i+L-1~i+R-1范围内的前缀和的最大值,用这个数减去pre[i],这就是以i为起点的长度为L~R范围内的序列最大值。如果这个值大于0则表示这个mi 阅读全文
posted @ 2018-09-25 15:33 水题收割者 阅读(236) 评论(0) 推荐(0) 编辑
摘要: 传送门 分析我们可以根据性质将这个序列构造成一个环:0,a[1~n],0,a[n~1] 这中间的0是为了起间隔作用的。 我们又知道b[i]=a[i-1]^a[i+1] c[i]=b[i-1]^b[i+1]=a[i-2]^a[i]^a[i]^a[i+2]=a[i-2]^a[i+2] 所以如果这个环进化 阅读全文
posted @ 2018-09-25 15:13 水题收割者 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 传送门 分析 考场上傻了,写了个树剖还莫名weila...... 实际就是按顺序考虑每个点,然后从他往上找,一边走一边将走过的边染色,如果走到以前染过色的边就停下。对于每一个a[i]的答案就是之前走过的所有边的数量*2-它自己的深度。 代码 阅读全文
posted @ 2018-09-25 14:03 水题收割者 阅读(107) 评论(0) 推荐(0) 编辑
摘要: 传送门 分析 我们不难将条件转换为前缀和的形式,即 pre[i]>=pre[i-1]*2,pre[i]>0,pre[k]=n。 所以我们用dp[i][j]表示考虑到第i个数且pre[i]=j的情况下的方案数。我们发现一一转移的复杂度并不行,于是我们考虑只让dp[i-1][j]转移到dp[i][j*2 阅读全文
posted @ 2018-09-25 13:56 水题收割者 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 传送门 分析 我们知道如果设A,B分别为将两家店从大到小排序之后各自的前缀和,则 Ans=Max{Min{A[i],B[j]}-W*(i+j)}。 为了得到这个Ans我们可以枚举两个数的Min,然后剩下那一个则使用二分求出在另一数列中大于Min的中最小的,这样的原因是为了使得W*(i+j)更小,从而 阅读全文
posted @ 2018-09-24 21:55 水题收割者 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 传送门 题目大意 现在有n个k面的骰子,问在i=2~2*k的情况下,任意两个骰子向上那一面的和不等于i的方案数是多少。 分析 这道题具体做法见这个博客。 至于k2的值为啥是那个自己画画图就明白了。 代码 阅读全文
posted @ 2018-09-24 18:35 水题收割者 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 传送门 题目大意 让你构造一个有向图,使得从1到n有L条不同路径且长度分别是0~L-1。 分析 我们不难想到每一对相邻点之间连一条权值为0的边,之后二进制分解,将每一对点之间连一个权值为2^i的边,但是我们会发现这样在一些情况下还会剩下一些值不能覆盖。如果将剩下的值一一连边肯定会炸。于是我们还是利用 阅读全文
posted @ 2018-09-24 09:33 水题收割者 阅读(276) 评论(0) 推荐(0) 编辑
上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 20 下一页