
组合
二分抄代码
去了18ec没资格去19ec的反向训练选手
展开
-
codeforces1511E. Colorings and Dominoes
https://codeforces.com/contest/1511/problem/E首先横着的和竖着的是完全独立的可以分开算的我们考虑总在一段连续的白色棋子末端那个点计数设f[i]为连续长度为i的的贡献那么只要枚举末尾两个的情况,转移就很容易了考虑算横着的贡献的情况当最后一个是竖着的,也就是他无法贡献,就只能前面i-1个作贡献,那么答案就是f[i-1]最后一个是横着的,首先倒数第二个是横着的,那么这两个的贡献就是 2^(i-2)+f[i-2],就是i-2个随便变化,他都能贡献1,然原创 2021-04-13 16:53:19 · 262 阅读 · 0 评论 -
codeforces1462E2. Close Tuples (hard version)
https://codeforces.com/contest/1462/problem/E2#注意到m元组中坐标是各不相同的,且只要求最大值和最小值,所以我们可以把a排序,反正m元组是无视坐标顺序的然后我们就可以钦定这个m元组必选当前a[i],现在要求>=a[i]-k中选出剩下m-1个,预处理一下搞个组合数就行了#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxl=原创 2020-12-16 00:46:01 · 195 阅读 · 0 评论 -
hdu6810 Imperative Meeting
http://acm.hdu.edu.cn/showproblem.php?pid=6810参照题解的做法,计算每条边的贡献,公式不想写了,这题其实是个组合数学题,比赛的时候还以为是树形DP不过还挺难想到那个取min值转换成两个然后把i合并进去发现可以递推求这个东西。。。组合数学功底不足。。。注意几个细节,首先是需要特判p=(m-1)/2>=1时,那个h[s]才>0,否则都是0#include<bits/stdc++.h>using namespace std原创 2020-07-31 23:51:09 · 337 阅读 · 0 评论 -
codeforces1359E Modular Stability
https://codeforces.com/problemset/problem/1359/E其实我看到这题我是有点懵的,不过当时D只过了200人,而这题过了100多人,应该是个比较水的题就大胆猜结论了,如果序列中有1的话,那么剩下的位置就随便选,就是c(n-1,k-1)如果第一个数字是2,那么剩下的位置如果是2的倍数也是可以的,就是c(n/2-1,k-1)然后不知道还有没有别的情况可行,就用这个试了一下发现大样例过了就过了233#include<bits/stdc++.h&g原创 2020-05-29 01:43:26 · 245 阅读 · 0 评论 -
codeforces1332E Height All the Same
https://codeforces.com/contest/1332/problem/E所有都想通了然而最后一步偶数项的之和不会求。。。。留下了数学基础不好的泪水.jpg百度了一下二项式定理相关的题,赶紧整理到模板里面。。。以前竟然没整理过首先我们可以通过让每个+2的方式,使得最后的所有高度最多只相差1,原始奇数高度是一样的,原始是偶数的高度是一样的然后我们发现这个奇数高度跟偶数高度之间可以相互转换那么如果n*m%2==1,那么只能是(奇数个奇数高度和偶数个偶数高度)或者(偶数个偶数高原创 2020-05-26 22:15:18 · 231 阅读 · 0 评论 -
codeforces1312D Count the Arrays
https://codeforces.com/problemset/problem/1312/D傻逼题写了80分钟,留下了不会组合的泪水.jpg突然想到一般组合题都是从整体考虑就行了,然后就是傻逼题了从m个数字里取出n-1个值作为这个序列的所有值,C(m,n-1)其中最大的值只能做 i而剩下的n-2个值可以在左边或者右边,2^(n-2)然后那个相等的值可以在这n-2个值里选...原创 2020-03-10 15:03:00 · 251 阅读 · 0 评论 -
codeforces1261D1 Wrong Answer on test 233 (Easy Version)
https://codeforces.com/problemset/problem/1261/D1首先k=1直接是0对于一段长度为len相同的数字,他们向右移动一位,有len-1个是肯定不变的,每个位置都可以选1-k那么我们考虑剩下的所有都是不同的数字的序列,每个位置的数字要么在之后+1,要么移动后-1,要么不变,这3种情况的方案数分别为1,1,k-2注意,k=2的时候,一个不变的...原创 2019-11-24 22:16:34 · 517 阅读 · 0 评论 -
codeforces 1117D 推递推式加矩阵快速幂
一个很显然的计数想法,令b=m-1,ans=C(n,0)+C(n-b,1)+C(n-2b,2).....然后就是无限的挂机了,E也不会,G也不会,F比G过的还少根本没看题,还好C题做的不算慢而且都是1A,所以小号分数超过大号了233。看了一个成都七中的oi选手在B站上上传的录屏,他当时通过m=2,m=3,m=4的数值情况丢到oeis上去然后找到了递推式的规律,学到了orz...对于一个相同...原创 2019-02-20 15:54:10 · 269 阅读 · 0 评论 -
Gym101194 H Great Cells
一堆人做出来了,就我不会做,感觉我完全不会计数题啊,菜的雅痞。还好最后qt想出来了,不然要凉。看似值域为1-k,然后求恰好有g个greatcell很像多校里面jls的一道题,然而这个限制更多,对于一个g已经这么难求了,而对于所有g我感觉简直冇得任何办FA。于是继上次遇到那个输出X^3次方的套路后,这题的套路又在他要输出的答案上,对 (g+1)Ag 求和拆成2个部分,sigma Ag就是所有...原创 2018-09-28 20:34:43 · 337 阅读 · 0 评论 -
HDU6397 Character Encoding
考场上,卧槽这题怎么100+队做出来了,卧槽怎么200+队做出来了,卧槽怎么300+队做出来了。。。还有1010也是,这单调队列预处理DP+线段树不是挺难的吗,怎么最后也300+队做出来了。队友一开始NTT nlogn欢乐超时然后就是优化常数,另一个队友推公式。哎还是自己太菜,做完1010后挂了好久的机划了好久水,没有深入想构造题也没深入想1001,我在下午4点50的时候队友说为撒他的直接减不对,...原创 2018-08-16 11:08:16 · 409 阅读 · 0 评论 -
[费马小定理]Bzoj3260 跳
坑定先走长的再走短的,当要转弯时,此时的方案书为(m为长边)c(m,m),而c(m+i,m)=c(m+i-1,m)/i*(m+i),而a^(mod-1)与1(% mod)是同余的,/i就是乘i^(mod-2)然后再mod就没区别了,这样就能的到向上(右)走的每个数,把他们加起来就行了#include<cstdio>#include<cstring>#define mod 1000000007l原创 2015-07-01 21:38:16 · 779 阅读 · 0 评论 -
[容斥原理]Bzoj1042 硬币购物[HAOI2008]
先用递推算出硬币无限的所有方案数,然后,因为一个硬币超限的最小个数是d[i]+1,能使硬币超限的最小钱数是c[i]*(d[i]+1),对于一个硬币超限的所有情况就是f[sum-c[i]*(d[i]+1)],然而4个硬币超限的情况并是有重叠关系,这就用到容斥原理的关系,奇数个就-,偶数个就加#include<cstdio>#include<cstring>#define maxn 100010i原创 2015-07-01 21:40:31 · 585 阅读 · 0 评论 -
[组合]Bzoj1008 越狱[HNOI2008]
所有情况就是m^n,不可能都情况就是对于2-n个人都不能与前一个人一样每个人有m-1种选择,于是不可能的总数就是(m-1)^(n-1),相减就行啦#include<cstdio>#include<cstring>#define mod 100003long long n,m;long long ans;void prework(){ scanf("%lld %lld",&m,&n)原创 2015-07-01 21:33:44 · 554 阅读 · 0 评论 -
Bzoj1485 有趣的数列[HNOI2009]
实就是从左往右扫每个数,把放在奇数项看作入栈,偶数看作出栈,然后就是一个求卡特兰数,但有些直接枚举质因数会超时,筛素数的时候对于每一个数只要记录它的最小质因子,然而出来在把每个数分解掉,比如60,最小质因子是2,变成30,又是2,边15,是3,变5,然后就没了,原来那种质因数分解发会枚举出许多不能再除的数,所以这种快一些#include<cstdio>#include<cstring>#defi原创 2015-07-01 21:41:34 · 615 阅读 · 0 评论