
计数
mis_deer
Make_myself.
展开
-
[UVa 10943] How do you add? (计数+隔板法+重叠隔板)
CodeForces - 446A一个长度为 N的序列,现在可以修改最多一个值 使得序列中最长严格递增的序列的长度最长好题! 这题看起来很简单,但是坑点很多,毕竟 CF的题啊…… 首先,有一个很直接的思路是修改两个递增序列中间的断点,把它们拼接起来 但是这样太简单了,忽略了很多特殊情况,所以我们从头考虑:更改数为 0如果整个序列已经是递增的了,输出 N,结束如果不是,先在序列中找未修改时原创 2016-04-24 15:56:37 · 343 阅读 · 0 评论 -
[2016陕西省赛D] Rui and her triangles
2016陕西省赛D 给定一棵大小为N的树,每个节点有个权值a_i 询问每个节点为根的子树中,取三个点的权值构成三角形的方案数 其中 N,a_i < 1000赛上懵逼了,实际上这题和贡献有关 考虑枚举两个点,权值为 xx和 y(x>y)y (x>y) 那么第三个点的范围在 (x−y,x+y)(x-y, x+y) 接着我们找出这两个点的lca, 那么从lca为根的子树会受到这原创 2017-05-17 22:59:06 · 410 阅读 · 0 评论 -
[ZOJ 3747] Attack on Titans (计数DP + 连续至多 + 连续至少)
有三种士兵(G,R,P)组成长度为N的队列 要求其中至少有连续的M个G,至多有连续的K个R 求排列的方案数首先用至多 NN 个的方案减去至多 M−1M-1 的方案 就可以得出至少 MM 的方案 问题就转化为只有连续至多的限制,求方案数 设 dp[i][j]dp[i][j] 表示第 ii 位为 jj 的合法方案数 因为是连续的,而每当限制刚超过的时候就要被减掉 所以对于的 ii原创 2017-05-23 17:21:35 · 545 阅读 · 0 评论 -
[Codeforces 232B] Table (计数 + 背包DP)
Codeforces - 232B 给定一个 N×MN\times M的棋盘,每个格子都可以放一个棋子 问有多少种方案,使得每个 N×NN\times N的区域都恰好有 KK 个棋子 其中 N≤100,N≤M≤1018,K<=N2N\le 100, N\le M\le 10^{18}, K<=N^2由样例很容易看出,每列的棋子具有周期性 即第 xx 列棋子的个数等于第 x+Nx+原创 2017-01-17 15:55:35 · 366 阅读 · 0 评论 -
[Codeforces 689E] Mike and Geometry Problem (贡献计数+静态区间更新)
Codeforces - 689E 给定 nn条 x轴上的线段,问从中任选 kk条的交集的长度的和是多少对于数轴上的每一点,计算它对答案的贡献 比如一条线段 [l,r][l,r],那么我在 [l,r][l,r]的区间上都加 1 最后枚举数轴上的每一点,可以得出它被多少条线段覆盖过 然后用组合数算一算即可 当然坐标要先离散化一下,然后由于是静态的区间更新,所以直接差分即可#pragma原创 2016-08-20 09:45:02 · 344 阅读 · 0 评论 -
[HDU 5800] To My Girlfriend (计数DP)
HDU - 5800 有 nn个物品,f(i,j,k,l,m)f(i,j,k,l,m)为选定 ii,jj,不选 kk,ll, 总权值为 m的方案数 求 ∑i=1n∑j=1n∑k=1n∑l=1n∑m=1sf(i,j,k,m)\displaystyle\sum_{i=1}^{n}\sum_{j=1}^{n}\sum_{k=1}^{n}\sum_{l=1}^{n}\sum_{m=1}^{s原创 2016-08-05 09:41:11 · 386 阅读 · 0 评论 -
[HDU 5731] Solid Dominoes Tilings (轮廓线DP+容斥定理)
HDU - 5731 多米诺骨牌的矩形完全覆盖, 要求统计没有横切割线和竖切割线的方案数第一部分就是轮廓线DPDP的入门裸题 预处理出任意矩形大小的方案数 RES[i][j]RES[i][j] 不过我怀疑这部分不提前打表的过不了第二部分是一个容斥 先对列容斥,用状压的方式枚举出所有列的分割情况 然后计算,当前列分割情况下,行没有分割的方案数 dp[n]dp[n] 然后再用容斥,原创 2016-07-20 21:04:01 · 1367 阅读 · 0 评论 -
[Codeforces 451E] Devu and Flowers (母函数+lucas定理)
Codeforces - 451E 有 nn种花,每种花有 fif_i支,问从中选出 ss支的方案数 其中 n≤20n \le 20,S≤1014S \le 10^{14},fi≤1012f_i \le 10^{12}母函数解法: 构造母函数,(1+x2+x3+...xf1)∗(1+...xf2)∗...(1+...xfn)(1+x^2+x^3+...x^{f_1}) * (1+...原创 2016-07-15 19:16:13 · 883 阅读 · 0 评论 -
[HDU 4349] Xiao Ming's Hope (lucas定理)
HDU - 4349 给定n求满足 C(n,m)为奇数的 m的个数首先朴素的想法是把每一个组合数都求出来 但是组合数比较大,所以自然的就想到 mod 2 所以很关键的一点是要转化为 C(n,m)%2 即 C(n,m)%2 = 1 的m的个数 利用lucas定理展开,审视乘积中的每一个组合数 由于 C(0,0) = C(1,0) = C(1,1) = 1,C(0,1) = 0 所以要原创 2016-07-15 12:08:31 · 250 阅读 · 0 评论 -
[HDU 3037] Saving Beans (隔板法+lucas定理)
HDU - 3037 有不超过 m个球,放入 n个盒子里,求方案数m个球放入 n个盒子,允许盒子为空 用隔板法可得方案数为 C(m+n-1, m) 所以即求 C(n-1, 0) + C(n, 1) + C(n+1, 2) + … + C(m+n-1, m) 利用组合数公式 C(n, k) = C(n-1, k-1) + C(n-1, k) 原式 = C(n, 0) + C(n, 1)原创 2016-07-15 11:32:32 · 323 阅读 · 0 评论 -
[HDU 5729] Rigid Frameworks (二分图联通方案计数)
HDU - 5729 给定一个 N*M的矩形格子,问在一个格子里只添加一条斜线, 将整个图形变成一个刚性的图形的方案数有多少种根据 Project Euler 434,问题可以转化为 一个左边有 NN个点,右边有 MM个点的二分图的联通方案计数 首先对于一个 N∗MN*M的格子图,每个格子要么不加, 要么向左加一条斜线,要么向右加一条斜线,所以总方案数 2N∗M2^{N*M} 接原创 2016-07-24 09:02:41 · 856 阅读 · 0 评论 -
[HDU 5738] Eureka (计数)
HDU - 5738 集合的定义可以转化为 集合内点均在一条直线上 问满足条件集合的个数貌似出题人很不厚道地卡了常数 原来赛上写的小常数 O(N2logN)O(N^2logN)赛后过不了了 于是我又找人学习了一个常数更小的 O(N2logN)O(N^2logN)首先把所有重复位置的点缩起来 枚举一个点 ii作为线段的一端,再枚举另外一个点 jj形成一条射线 计算斜率,存到m原创 2016-07-22 13:14:49 · 644 阅读 · 0 评论 -
[PKU 3046] Ant Counting (计数DP+差分加数)
PKU - 3046 有 T组蚂蚁,每组有 Ni只,同组蚂蚁没有区别 问从中选出一定数量的选法有多少种计数DP dp[i][j]dp[i][j]表示考虑到第 i组蚂蚁,size大小为jj的选法 其中 i可以滚动数组优化掉,就变成了 dp[2][j]dp[2][j]然后对于每组蚂蚁,枚举只数 k,更新答案 dp[cur][j]+=dp[las][j−k]dp[cur][j] += d原创 2016-06-01 18:43:17 · 193 阅读 · 0 评论 -
[PKU 2229] Sumsets (计数DP+构造)
PKU - 2229 将一个数分为若干个 2的次幂之和,问有几种方案dp[i][0]dp[i][0] 表示组成 i的没有 1的方案数 dp[i][1]dp[i][1] 表示组成 i的有一个 1的方案数 dp[i][2]dp[i][2] 表示组成 i的有 1的方案数当 i为奇数时: dp[i][0]=0dp[i][0]=0,因为至少需要 1个 1才能组成奇数 dp[i][1]=dp[i−原创 2016-05-31 17:19:36 · 252 阅读 · 0 评论 -
[ZOJ 3682] E - Cup 3 (背包DP计数 + 滚动数组)
ZOJ - 3682 有S1S_1个球迷支持巴萨,S2S_2个球迷支持皇马 球场有NN个方阵,每个可以坐 kik_i个球迷 安排球迷使得一个方阵要么全是支持巴萨的 要么全是支持皇马的,要么两种相等 问有几种安排方案其实一看NN最多只有200,但是S1和S1和S2$很大,我第一反应是离散化 然后就开了一个 map,结果依旧是爆空间了 (这题空间只有 65M) 所以只好原创 2016-04-29 23:01:39 · 342 阅读 · 0 评论 -
[CQUOJ 21448] 会做题的兔兔 (数学+DP)
题意大意是有一个整数,可以用若干个 2的 n次幂累加得到,问一共有多少种累加方案 统计方案的题,最重要的是做到不重复,不遗漏 dp[i][0]表示构成 i中不含 1的方案有多少种 dp[i][1]表示构成 i中含 1个 1的方案有多少种 dp[i][2]表示构成 i中含 1的方案有多少种 最后答案是 dp[N][0] +dp[N][2] 思路如下: 1) 如果 i是奇数,那么必然要有原创 2016-04-07 19:08:59 · 249 阅读 · 0 评论 -
[CodeForces 118D] Caesar's Legions (计数DP)
CodeForces - 118D 有 N1个步兵和 N2个骑兵排成一列 其中不能有连续的 K1个骑兵,连续的 K2个步兵 问有多少种排列方式这题计数的我刚开始想得比较复杂 妄图用组合数和排列数给算出来 后来经菊苣提醒,发现有更无脑的做法这种连续序列相关的,事实上可以用计数 DP来做 dp[i][j][k] 表示当前是第 i个士兵,其中用了 j个步兵 而 k如果是 0..K1则表示包括原创 2016-04-15 18:23:44 · 406 阅读 · 0 评论 -
[Hackrank] Prime XOR (计数DP)
Hackrank - Prime XOR 给定N个数,求有多少个不同子集的异或和为质数 其中 N≤105,3500≤ai≤4500N \leq 10^5, 3500 \leq a_i \leq 4500首先异或和不会超过 213−12^{13}-1 然后虽然 NN 很大,但是每个数的范围在1000以内 所以总的不同的数不会很多 所以做法是枚举每种数取了多少个,然后暴力转移即可 刚原创 2017-05-30 18:42:16 · 633 阅读 · 0 评论