组合计数训练

1, A Creative Cutout CodeForces - 933D

大意:给定$n$个圆, 圆心均在原点, 第$k$个圆半径为$\sqrt{k}$

定义一个点的美丽值为所有包含这个点的圆的编号和

定义函数$f(n)$为只有$n$个圆时所有点的贡献,求$\sum_{k=1}^{n}{f(k)}$

首先注意到每个圆上的点对答案的贡献是相同的

可以得到圆$x^2+y^2=c$上单个点的贡献

$$g(c)=\sum _{i=c}^n \sum _{j=c}^i j=\binom{n-c+2}{3}+c\binom{n-c+2}{2}$$

最后考虑如何计算答案, 如果枚举每个圆的话发现圆上整点数并不是很好算

但是可以注意到$x,y$的范围都是在$\sqrt{n}$范围内的,

对于固定的$x$,贡献为$h(x)=\sum\limits_{y^2\le n-x^2}g(x^2+y^2)$

因为$g(x^2+y^2)$是$y$的一个6次多项式

$h(x)$可以预处理$\sum{y},\sum{y^2},...,\sum{y^6}$后$O(1)$计算

当然手推出系数的话可以省去预处理, 这里就得到$O(\sqrt{n})$的算法了

原文地址:https://www.cnblogs.com/uid001/p/10331316.html

时间: 2024-11-11 01:48:31

组合计数训练的相关文章

Yue Fei's Battle(组合计数递推)

//求一个直径为 k 的树有多少种形态,每个点的度不超过 3 // 非常完美的分析,学到了,就是要细细推,并且写的时候要细心 还有除法取模需要用逆元 #include <iostream> #include <stdio.h> #include <string.h> #include <math.h> #include <stdlib.h> using namespace std; #define MOD 1000000007 #define L

POJ 1496 POJ 1850 组合计数

Code Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 8256 Accepted: 3906 Description Transmitting and memorizing information is a task that requires different coding systems for the best use of the available space. A well known system is t

bzoj 1004 Cards 组合计数

这道题考察的是组合计数(用Burnside,当然也可以认为是Polya的变形,毕竟Polya是Burnside推导出来的). 这一类问题的本质是计算置换群(A,P)中不动点个数!(所谓不动点,是一个二元组(a,p),a∈A,p∈P ,使得p(a)=a,即a在置换p的作用后还是a). Polya定理其实就是告诉了我们一类问题的不动点数的计算方法. 对于Burnside定理的考察,我见过的有以下几种形式(但归根结底还是计算不动点数): 1.限制a(a∈A)的特点,本题即是如此(限制了各颜色个数,可以

POJ 3252 组合计数

Round Numbers Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 9149 Accepted: 3248 Description The cows, as you know, have no fingers or thumbs and thus are unable to play Scissors, Paper, Stone' (also known as 'Rock, Paper, Scissors', 'Ro,

HDU4675-GCD of Sequence(数论+组合计数)

GCD of Sequence Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) Total Submission(s): 949    Accepted Submission(s): 284 Problem Description Alice is playing a game with Bob. Alice shows N integers a1, a2, -, aN, an

[HDU 3461] Saving Beans &amp; 组合计数Lucas定理模板

Saving Beans Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem Description Although winter is far away, squirrels have to work day and night to save beans. They need plenty of food to get through those long cold

POJ 1019 组合计数

链接:POJ 1019 /***************************************** author : Grant Yuan time : 2014/10/19 14:38 source : POJ 1019 algorithm: 组合计数 ******************************************/ #include <iostream> #include <cstdio> #include <algorithm> #

HDU 4832 组合计数dp

Chess Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 509    Accepted Submission(s): 198 Problem Description 小度和小良最近又迷上了下棋.棋盘一共有N行M列,我们可以把左上角的格子定为(1,1),右下角的格子定为(N,M).在他们的规则中,"王"在棋盘上的走法遵循十字

ZOJ 3791 An Easy Game [组合计数]

题目地址: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3791 题目描述: 给定两个长度为n的01串s1,s2,要求用k步,每一步反转s1的m个位置的数码(即0变为1,1变为0),问能有多少种做法,在k步之后将s1变成s2. 1 <= n <= 100, 0 <= k <= 100, 0 <= m <= n. 解题思路: 典型的组合计数问题. 首先比较s1和s2,记s1和s2数码不同的位置有