组合数学
小菜鸡加油
菜鸡
什么都能折磨
展开
-
P3182 [HAOI2016]放棋子(错排+高精)
https://www.luogu.com.cn/problem/P3182思路:把障碍物看成原本棋子要放的位置,现在题目要求每个棋子不放原来的位置,就是错排。D(n)=(n-1)*(D(n-1)+D(n-2))考虑第n个位置的放对应占的第k个位置放哪递推出来的。#include<bits/stdc++.h>using namespace std;const int MAXN=1e3;typedef long long LL;struct bign { int len原创 2021-05-12 11:11:14 · 138 阅读 · 0 评论 -
E. Phoenix and Computers(组合+计数dp)
https://codeforces.com/problemset/problem/1515/E思路:首先会发现结果的序列方案数会是一段连续的,一个空的,一段连续的,那我们要先知道一段连续的方案数是多少。枚举从哪一台电脑开始打开如果从 1开始,那么剩下的必须按照2,3,…,n的顺序打开。(如果不按照这个顺序,就会有电脑自动开启) 方案数为1如果从2开始,那么2 的右边必须按从左往右的顺序开启,即3,4,…,n而1可以在这其中任意时刻开启。 后面那么多数的位置插一个空 C...原创 2021-05-05 17:46:31 · 267 阅读 · 0 评论 -
B. Hyperset(思维+暴力)
https://codeforces.com/contest/1287/problem/B思路:得知三个串搞定两个最后一个答案就确定了,于是map里算完发现C(2,3)每次是算了3次。#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#include<set>#in原创 2021-04-21 15:39:33 · 243 阅读 · 0 评论 -
ARC117 C - Tricolor Pyramid(思维+杨辉三角结论)
https://atcoder.jp/contests/arc117/tasks/arc117_c思路:讲真..很结论。上youtube看了眼cf上有人给的视频链接。确实是个组合数的应用结论。(帖子下就不要讨论科学上网了再结合官方题解。也就是说通过组合数就可以知道最底下的数对顶端的数的贡献。比如绿色0,蓝色1,红色2.顶端的答案就是 0+1*4+6*0+4*0+1*2=6 6mod3=0;所以是绿色。然后%3的组合数用lucas#include<iostre.原创 2021-04-19 20:20:46 · 355 阅读 · 0 评论 -
C Two Arrays(dp+前缀和/思维+组合数学)
https://codeforces.com/contest/1288/problem/C思路1:开始想着这个不降数单个的话是有组合意义的,但是双个的话不太会搞。于是暴力dp。dp[len][i][j]=Σdp[len-1][1~i][n~j]对于后面的暴力总复杂度O(m*n^4)分层前缀和。先跑一个n~j的前缀和,再累加到sum[j]里面(开始以为这个分层前缀和是个二维前缀和...弱智了..#include<iostream>#include<vect原创 2021-04-18 14:52:51 · 189 阅读 · 0 评论 -
C.不降数(组合数学)
https://ac.nowcoder.com/acm/contest/11170/C思路:其实是寒假训练营的一道题.开始打表的。后来发现其实就是隔板法的一个知识。传送:TP#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#include<set>#inc原创 2021-04-10 19:18:49 · 196 阅读 · 0 评论 -
E1. Asterism (Easy Version)(思维+组合数学)
https://codeforces.com/problemset/problem/1371/E1思路:其实比较关键的是开始都去算这个具体的f(x)了,但是肯定会挺大的,而且没有模数。可以发现当x大于max(a[i]),就是无穷大了。n!必然有一个(p<=n)的因子。所以上界在2000可以暴力。考虑怎么处理这个f(x)能否被p整除。乘法原理:参考:https://blog.csdn.net/weixin_43308078/article/details/107091310?原创 2021-04-06 10:56:35 · 181 阅读 · 0 评论 -
1238D - AB-string(思维)
https://codeforces.com/problemset/problem/1238/D思路:开始上来想着太多了..组合也不太行,尝试dp。然后需要判一个当前区间前的最小回文?发现其实不满足二分性质。估计就算满足dp也假了hhh。考虑取反。计算不合法的子串数量不合法子串只可能是形如 A+BBBB,B+AAAA,AAAA+B,BBBB+A 嗯..就这一段区域是要减去的。因为再加任何的A或者B,都会使得相邻的两个A间是回文,相邻的B间是回文#include<iostre.原创 2021-04-04 22:11:06 · 127 阅读 · 0 评论 -
214. Devu和鲜花(组合数学+容斥+mod细节)
https://www.acwing.com/problem/content/description/216/思路:先转化成求解不定方程的非负整数解个数。其解法和寒假牛客的那道m个球取不重复的n个构成递减是一样的。将其每个加一个后变成了m+n-1个空中插入n-1个挡板的方案数问题。然后对于每一个情况取反,最后用状压表示容斥状态。细节:单算组合数mod的时候,上面*i还是可能炸LL,所以*(i%mod)%mod.或者下面传参的时候把m%mod后再传。#include<iostrea原创 2021-03-24 11:35:39 · 142 阅读 · 0 评论 -
CCA的小球(组合数学+容斥原理)
https://ac.nowcoder.com/acm/contest/11168/D给定 n 个小球,每个小球有颜色,要将它们摆成一行 。两个方案不同,当且仅当存在某个位置,两种方案摆在这个位置的小球颜色不同。一个方案合法, 当且仅当不存在任意两个位置相邻的小球颜色相同,求合法方案数对 10^9+7 取模后的值 。首先考虑取反面计算。考虑"两个方案不同,当且仅当存在某个位置,两种方案摆在这个位置的小球颜色不同。"如何计算总方案数。我们直接没有任何限制的就是fac[n],但是不能有两个位置原创 2021-03-23 10:56:29 · 305 阅读 · 0 评论 -
E1. Close Tuples (easy version)(思维+暴力枚举)
https://codeforces.com/contest/1462/problem/E1思路:虽然E2的思路很好,但是E1自然要有对应的暴力思路。因为总共只有3个点,且差在2以内。所以枚举处于中间位置的点,对于旁边两个小范围for代替讨论。map[]提前存下对应的数的个数,然后累加。#include<iostream>#include<vector>#include<queue>#include<cstring>#include&原创 2021-03-10 15:23:39 · 234 阅读 · 0 评论 -
E2. Close Tuples (hard version)(思维+组合数学)
https://codeforces.com/contest/1462/problem/E2思路:枚举最小值的值,然后开个桶存起来,再在组合的角度考虑取几个最小值,就可以组合数了#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#include<set>#inclu原创 2021-03-10 15:20:55 · 152 阅读 · 0 评论 -
D. New Year and the Permutation Concatenation(打表找规律/思维+排列组合)
https://codeforces.com/problemset/problem/1091/D思路:看到的时候就感觉是规律题。打表之后oeis发现没规律。尝试减去一些东西。首先由于n!是必存在的,所以减去之后,因为是On,所以尝试递推。发现是n*(f[n-1]-1)#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath原创 2021-03-06 20:57:25 · 152 阅读 · 0 评论 -
D. Beautiful Graph(思维+二分图染色)
https://codeforces.com/problemset/problem/1093/D思路:开始看错题意,以为是赋值使得整个图的边权和为奇数,然后有多少种,想跑个背包肯定是tle的。发现题目是求任意一边的两点权和为奇数。那么1和3是等价的。单纯考虑1,然后3用组合数的办法解决。间隔1和2可行,也就是二分图染色。染出来的情况为101或者010.对于101,每个1有两种可能,也就是2^(num1),对于010,其1的个数是原来图的补图,也就是sum-num1,同样这个1有两原创 2021-03-06 13:42:55 · 205 阅读 · 0 评论 -
C. Bargain(贡献法+组合数学)
https://codeforces.com/problemset/problem/1422/C思路:对于i这个位,通过组合讨论的方式看他的贡献。如果是i的左边,那么前面任取一段连续的区间可能数为1/2*(i-1)*i*str[i];如果是i右边,那么这个x是取的连续长度,(n-i-x+1)是该长度的取法然后令t=n-i-x进行转化。然后预处理两个数组。#include<iostream>#include<vector>#include<que原创 2021-03-05 00:18:39 · 671 阅读 · 1 评论 -
C. The Number Of Good Substrings(思维+枚举)
https://codeforces.com/problemset/problem/1217/C思路:注意到这个二进制实际上在18的范围长度就不会再有1的贡献了,否则就超过了2e5.那么对于枚举到的1,预处理出其前面有多少个连续0,再和此时的sum[l,r]的数结合看能否++#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cma原创 2021-03-04 20:26:28 · 171 阅读 · 1 评论 -
比武招亲(上)(思维+贡献法+组合数学隔板法详解)
https://ac.nowcoder.com/acm/contest/9985/B思路:首先贡献法考虑每个数作为最大值出现的次数和最小值出现的次数。那么最终答案其实是xi作为最大数-xj作为最小数,是很多个这样的差累加。那么把左边的被减数合成一块,右边的减数合成一块。答案就变成了每个最大数*其出现的次数-每个最小数*其出现的数。考虑1~n中挑一个x作为最大数。那么1~x-1就是作为剩下的。我要在剩下的1~x-1中挑出可重复的数字构成m个不递减的。公式为ccc(n+m-1,m);原创 2021-02-25 01:00:09 · 540 阅读 · 0 评论 -
B.系数(mod意义下的系数转化+lucas)
https://ac.nowcoder.com/acm/contest/9986/B思路:mod意义下-2和1在mod3是一样的。转化成(x-1)^(2n).然后求系数就是高中的组合数基础题2n中选k个x,剩下的都给(-1)于是(-1)^(2n-k)C(2n k)由于n很大,不能预处理阶乘。但是p很小,于是预处理p,也就是lucas。组合数板子#include<iostream>#include<vector>#include<..原创 2021-02-24 21:18:24 · 226 阅读 · 0 评论 -
D. Count the Arrays(思维+组合数学)
https://codeforces.com/problemset/problem/1312/D题意:在m个数里面挑出n个数,n个数要先递增后递减,然后必须有两个一样的数,剩下的数各不相同。思路:首先从m个数里面拿出n-1个不同的数,因为有一个要相等嘛然后这n-1个数里面一个是最大的,我们要选取一个相同的数对,所以还有(n-2)种情况。接下来如果讨论峰值的绝对位置再去组合其他数的位置就不好思考。转化到讨论值之间的相对位置。在n-3个数里面选0个,1个.....n-3个放...原创 2021-02-16 20:27:16 · 283 阅读 · 0 评论 -
C. Ayoub‘s function(思维+组合数学取补集)
https://codeforces.com/problemset/problem/1301/C题意:给出一个字符串中1的个数,和它的长度,其余都是0,然后构造一个字符串,使得f(s)最大,f(s)表示有多少个点对,使得这个点对的区间中至少包含一个1。思路:取反,考虑只有0串的情况,然后拿总数-只有0串的情况。1有m个,那么0有n-m个。于是要使1多,那么0串总数要尽量小。00的0串总数是3,而010的0串总数是2.所以构造的思路就是均摊,将0尽量插到1的间隔之间平均分配。#include原创 2021-02-13 18:27:10 · 210 阅读 · 0 评论 -
F. 板砖(数学:圆排列相邻块染色问题)
看到的时候想起来高中做题偶然间在辅导书上看到的公式,圆排列的式子(https://wenku.baidu.com/view/92137442360cba1aa811dafc.html)原创 2021-01-25 20:33:46 · 233 阅读 · 0 评论 -
D.Divide and Sum(思维+结论)
https://codeforces.com/contest/1445题意:从一个长度为2*n的序列里面找出两种长度为n的序列,一个不递增,一个不递减,然后做abs差求和。求所有满足的情况的总和。手动模拟结论题,发现不管怎么分配,每一次的都是Σn+1~2n的数减去Σ1~n的数。对于序列一共有C(n 2n)的分发。于是解决。积累当结论见过吧。至于证明:#include<iostream>#include<vector>#include<queue原创 2021-01-22 12:36:16 · 275 阅读 · 0 评论 -
E. Two Round Dances(思维+圆排列组合数学)
https://codeforces.com/contest/1433/problem/E其实这题直接在oeis输入最后一个数字就可以结束了思路:原创 2020-10-21 17:41:17 · 932 阅读 · 0 评论 -
SUM OF SUB RECTANGLE AREAS(打表+oeis+c++大数类板子)
https://ac.nowcoder.com/acm/contest/7818/F思路:打表发现是平方数。去掉平方之后发现是组合数。把组合数拆开发现就是n*(n+1)*(n+2)/6的整体平方。赛中队友python过的(python牛逼!#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <queue>#include &原创 2020-10-02 19:58:42 · 347 阅读 · 0 评论 -
D - Rescue Nibel!(差分+组合数学+思维)详解
https://codeforces.com/contest/1420/problem/D题意:问有多少种方案可以满足一段时间里面有k盏灯亮着。思路:首先把区间的问题转化到差分上去。考虑用差分代替区间。然后看样例5 21 32 43 54 65 7发现很符合区间覆盖的贪心样子。按照左端点排序。然后用一个cnt变量表示枚举到当前l时候前面还有多少能选的,cnt+=差分,如果当前枚举到的点差分值为1,说明在前面还亮着的取C(cnt,k-1)个就是答案。枚举就好了。代码在本地出现原创 2020-09-25 19:15:35 · 2557 阅读 · 5 评论 -
新生晚会 HDU - 2519
新生晚会HDU - 2519 开学了,杭电又迎来了好多新生。ACMer想为新生准备一个节目。来报名要表演节目的人很多,多达N个,但是只需要从这N个人中选M个就够了,一共有多少种选择方法?Input数据的第一行包括一个正整数T,接下来有T组数据,每组数据占一行。每组数据包含两个整数N(来报名的人数,1<=N<=30),M(节目需要的人数0<=M<=30)...原创 2019-12-14 14:45:46 · 162 阅读 · 0 评论 -
D2. Submarine in the Rybinsk Sea (hard edition)(思维+位数思考+组合数学)
https://codeforces.com/problemset/problem/1195/D2题意翻译题目描述这题与上一个题的不同之处仅在于存在使所有数字a_1,a_2,\dots,a_na1,a2,…,an的无长度相等的约束。SISSIS学生团队将乘坐潜水艇去旅游,他们的目标是位于大雷宾斯克(Rybinsk)(Rybinsk)海底沉船中的古代宝藏。不幸的是,学生们不知道船的坐标,因此他们要求MeshanyaMeshanya(一位世袭魔法师)来帮助他们。Meshanya...原创 2020-09-12 14:32:32 · 365 阅读 · 0 评论 -
B. Ralph And His Magic Field(思维-奶牛翻块)
https://codeforces.com/problemset/problem/894/B题目描述Ralph has a magic field which is divided inton×mn×mblocks. That is to say, there arennrows andmmcolumns on the field. Ralph can put an integer in each block. However, the magic field doesn't a...原创 2020-09-10 20:36:19 · 234 阅读 · 0 评论 -
D. Number Of Permutations(容斥定理)
题目描述You are given a sequence ofnnpairs of integers:(a_1, b_1), (a_2, b_2), \dots , (a_n, b_n)(a1,b1),(a2,b2),…,(an,bn). This sequence is called bad if it is sorted in non-descending order by first elements or if it is sorted in non-descending o...原创 2020-09-04 13:40:37 · 797 阅读 · 0 评论 -
Beautiful Numbers
https://codeforces.com/problemset/problem/300/C题目描述Vitaly is a very weird man. He's got two favorite digitsaaandbb. Vitaly calls a positive integer good, if the decimal representation of this integer only contains digitsaaandbb. Vitaly calls a ...原创 2020-08-31 20:17:36 · 256 阅读 · 0 评论 -
E. Count The Blocks
https://codeforces.com/problemset/problem/1327/EYou wrote down all integers from00to10n−110n−1, padding them with leading zeroes so their lengths are exactlynn. For example, ifn=3n=3then you wrote out000,001, ...,998,999.A block in an integer...原创 2020-08-20 13:47:37 · 207 阅读 · 0 评论