[AT2064] [agc005_f] Many Easy Problems】的更多相关文章

题目链接 AtCoder:https://agc005.contest.atcoder.jp/tasks/agc005_f 洛谷:https://www.luogu.org/problemnew/show/AT2064 Solution 注意到模数为\(441\cdot 2^{21}+1\),嘿嘿 首先要想到考虑贡献,然后这题就简单了. 设当前要算的为\(f(i)\),我们考虑第\(x\)个点的贡献,显然可以得到贡献为: \[ \binom{n}{i}-\sum_{v\in son_{x}}\b…
题面 两道题比较像,放在一起写了,后者可以看成前者的加强版 (sto ztb orz) 先看AT那道题 考虑计算每个点的贡献,用容斥计算:每个点没有贡献当且仅当选的所有点都在以他为根时的一个子节点的子树里.所以对于每个点i,其贡献为$C_n^k-\sum_{v∈son_i}C_{size[v]}^k$,这样我们就得到了一个$O(n^2)$的算法 考虑优化,来列出来总的式子 $ans=n*C_n^k-\sum\limits_{i=1}^n\sum_{v∈son_i}C_{size[v]}^k$ 前…
913D - Too Easy Problems 思路:二分check k 代码: #include<bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define mem(a,b) memset(a,b,sizeof(a)) ; struct pro{ int t,a,id; bool operator < (pro tmp){ return t<tmp.t; } }a[N…
[题目]F - Many Easy Problems [题意]给定n个点的树,定义S为大小为k的点集,则f(S)为最小的包含点集S的连通块大小,求k=1~n时的所有点集f(S)的和取模924844033.n<=2*10^5. [算法]排列组合+NTT [题解]考虑每个点只会在k个点都在其一个子树时无贡献,即: $$ANS_k=\sum_{x=1}^{n}\binom{n}{k}-\sum_{y}\binom{sz[y]}{k}+\binom{n-sz[y]}{k}$$ 令$cnt_i$表示满足s…
[题目]D. Too Easy Problems [题意]给定n个问题和总时限T,每个问题给定时间ti和限制ai,当解决的问题数k<=ai时问题有效,求在时限T内选择一些问题解决的最大有效问题数.n<=2*10^5,T<=10^9. [算法]贪心(排序+堆) [题解]因为T太大,不能考虑背包. 容易发现k越小越能使更多问题有效,所以一定有最优方案的所有问题均有效. 当k唯一确定时,其实就是在所有ai>=k的问题中选取时间最少的几个解决. 当k减小时,选择的范围扩大,就可以选择一些时…
$ >AtcoderGrandContest \space 005 F.  Many Easy Problems<$ 题目大意 : 有一棵大小为 \(n\) 的树,对于每一个 \(k \in[1,n]\) ,求出在所有在树中选 \(k\) 个点的方案对应的包含这 \(k\) 个点的最小联通块大小之和 \(1 \leq n \leq 2 \times 10^5\) 解题思路 : 容易发现,对于一组选取方案,包含它的最小联通块是唯一的,不妨考虑每一个点对这个联通块的贡献. 观察发现,一个点如果在一…
题目描述: time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output You are preparing for an exam on scheduling theory. The exam will last for exactly T milliseconds and will consist of n problems. You…
Description One day, Takahashi was given the following problem from Aoki: You are given a tree with N vertices and an integer K. The vertices are numbered 1 through N. The edges are represented by pairs of integers (ai,bi). For a set S of vertices in…
Problem Statement One day, Takahashi was given the following problem from Aoki: You are given a tree with N vertices and an integer K. The vertices are numbered 1 through N. The edges are represented by pairs of integers (ai,bi). For a set S of verti…
题目大意 给你一棵树,有\(n\)个点.还给你了一个整数\(k\). 设\(S\)为树上某些点的集合,定义\(f(S)\)为最小的包含\(S\)的联通子图的大小. \(n\)个点选\(k\)个点一共有\(\binom{n}{k}\)中方案,请你求出所有方案的\(f(S)\)的和\(\mod 924844033\). 出题人觉得这样就太简单了,他决定让你求出所有\(k=1\ldots n\)的答案. \(n\leq 200000\) 题解 似乎对于每个\(k\)没办法快速求出答案. 我们考虑一个点…
链接 [http://codeforces.com/group/1EzrFFyOc0/contest/913/problem/D] 题意 给你n个题目,考试时间T,对于每个问题都有一个ai,以及解决所花的时间, 让你找到一个做题(选择k个题去做)的方案,使得最后ai<=k的情况最多 分析 其实我刚开始不会的,后来看大佬的才会的 我们先利用vector数组根据ai大小分类,然后对于每一类肯定是时间少的有限考虑,所以考虑用优先队列. 那么我们只要去由n到0枚举即可. 先把ai为i的题目入队列,然后如…
先只考虑求某个f(k).考虑转换为计算每条边的贡献,也即该边被所选连通块包含的方案数.再考虑转换为计算每条边不被包含的方案数.这仅当所选点都在该边的同一侧.于是可得f(k)=C(n,k)+ΣC(n,k)-C(sizei,k)-C(n-sizei,k).于是就可以O(n)求出某个f(k)了. 现在要求所有f(k),容易发现是一个卷积的形式,并且所给模数是一个隐蔽的NTT模数(最小原根是5),直接NTT即可. #include<iostream> #include<cstdio> #i…
Description ​ 给你一棵\(~n~\)个点的树和一个整数\(~k~\).设为\(~S~\)为树上某些点的集合,定义\(~f(S)~\)为最小的包含\(~S~\)的联通子图的大小.\(~n~\)个点选\(~k~\)个点一共有\(~C_n^k~\)种方案,请你求出所有方案的\(~f(S)~\)的和, 对\(~924844033~\)取模. ​ 求所有\(~k \in [1, ~n]~\)的答案. 看题戳我 Solution ​ 首先看到这道题,根本不会快速求\(~f(S)~\),所以换一…
Description 链接 Solution 对于每个\(k\),统计任选\(k\)个点作为关键点的"最小生成树"的大小之和 正向想法是枚举或者计算大小为\(x\).叶子数目为\(y\)的子树有多少种,然后贡献答案.这种方法参数多.难统计,可以感受到无法适应\(1e5\)的数据,舍弃 正难则反,自顶向下正向统计难,就考虑自底向上贡献统计.那么这里的自底向上,就应该是对于每一个点,统计其贡献到每个\(ans\)的次数,并累加. 既然要输出k=1...m的答案,可以猜到贡献是一个卷积加速…
Description 题目链接 对于每个\(k\),统计任选\(k\)个点作为关键点的"最小生成树"的大小之和 Solution 正向想法是枚举或者计算大小为\(x\).叶子数目为\(y\)的子树有多少种,然后贡献答案.这种方法参数多.难统计,可以感受到无法适应\(1e5\)的数据,舍弃 正难则反,自顶向下正向统计难,就考虑自底向上贡献统计.那么这里的自底向上,就应该是对于每一个点,统计其贡献到每个\(ans\)的次数,并累加. 既然要输出k=1...m的答案,可以猜到贡献是一个卷积…
题解 我们把一个点的贡献转化为一条边的贡献,因为边的数量是点的数量-1,最后再加上选点方案数\(\binom{n}{k}\)即可 一条边的贡献是\(\binom{n}{k} - \binom{a}{k} - \binom{n - a}{k}\)就是在n个点里选k个点,去掉不合法的情况也就是k个点都在去掉这条边的两个子树里 然后我们要统计的就是\(\binom{a}{k} + \binom{n - a}{k}\) 这个可以转化成\(ans_{k} = \sum_{i = 1}^{n} b_{i}…
$n \leq 200000$的树,从树上选$k$个点的一个方案会对$Ans_k$产生大小为“最小的包括这$k$个点的连通块大小”的贡献.求每个$Ans_k$.膜924844033. 看每个点对$Ans_k$的贡献,那就是他在最小$k$连通块里的方案数.画画图可以发现,以他为根时,如果$k$个点都在他同一个儿子的子树里,那就是不包括这个点的,否则就是包括这个点的.“正难♂取反”,所以一个点的贡献就是$\binom{n}{k}-\sum \binom{s(i,j)}{k}$,其中$s(i,j)$表…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 可以考虑把所有的题目按照ai排序. 然后顺序考虑最后做出来的题目个数和第i道题目的ai一样. 则1..i-1这些题目就没有用了. 值考虑i..n这些题目就可以了. 显然考虑ti最小的若干项. 使得它们的时间和<=T然后不超过a[i] 可以二分选择了前mid小的题目. 看看时间和以及题目个数是否满足要求. 满足的话就更大一点. 然后记录是从哪个地方开始的最小ans个题目. 最后模拟输出就好了. (可以用树状数组来加速获取前mid时…
神他吗一天考一道码农题两道 FFT(其实还是我推式子一窍不通) 题意 给你一棵 \(n\) 个点的树,再给你一个常数 \(k\). 设 \(S\) 为树上某些点的集合,定义 \(f(S)\) 为最小的包含 \(S\) 的连通子图的大小. \(n\) 个点选 \(k\) 个点一共有 \(\tbinom{n}{k}\) 种方案,请求出所有方案的 \(f(S)\) 之和. 出题人觉得这样就太简单了,他决定让你求出 \(k=1\cdots n\) 的答案. 对于 \(27\%\) 的数据,\(n\le…
link 题意简述 给定一颗无根树,对于所有大小为 $i$ 的点集,求出能够包含它的所有联通块之和,定义为 $f_i$ ,答案对 $924844033$ 取模. $n\leq 2\times 10^5$ . $solution:$ 考虑每个点在点集中起到的贡献,可以得到 $$f_i=n\times\dbinom{n}{k}-\sum_{i=1}^n \dbinom{n-size_i}{k}+\sum_{x\in i} \dbinom{size_x}{k}\\=n\times \dbinom{n}…
题目 观察当k固定时答案是什么.先假设每个节点对答案的贡献都是\(\binom{n}{k}\),然后再减掉某个点没有贡献的选点方案数.对于一个节点i,它没有贡献的方案数显然就是所有k个节点都选在i连出去的某一个子树内的方案数.枚举节点i,把i连出去的每一个子树的size都加入一个序列c,则答案为\(\binom{n}{k}\cdot n-\sum_{i=0}^{|c|-1}\binom{c_i}{k}\). 考虑\(k=1\cdots n\)的情况: \(ans_k=\binom{n}{k}\c…
Problem E. Easy ProblemsetInput file: easy.in Output file: easy.outPerhaps one of the hardest problems of any ACM ICPC contest is to create a problemset with a reasonable number of easy problems. On Not Easy European Regional Contest this problem is so…
这个专栏开始介绍一些<ACM国际大学生程序设计竞赛题解>上的竞赛题目,读者可以配合zju/poj/uva的在线测评系统提交代码(今天zoj貌似崩了). 其实看书名也能看出来这本书的思路,就是一本题解书,简单暴力的通过题目的堆叠来提升解决编程问题的能力. 那么下面开始探索吧. poj1037: Description Background For years, computer scientists have been trying to find efficient solutions to…
Gridland Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4996    Accepted Submission(s): 2281 Problem Description For years, computer scientists have been trying to find efficient solutions to d…
Gridland Time Limit: 2 Seconds      Memory Limit: 65536 KB BackgroundFor years, computer scientists have been trying to find efficient solutions to different computing problems. For some of them efficient algorithms are already available, these are t…
Problem Description For years, computer scientists have been trying to find efficient solutions to different computing problems. For some of them efficient algorithms are already available, these are the “easy” problems like sorting, evaluating a pol…
偶数时,中位数之间的数都是能够的(包含中位数) 奇数时,一定是中位数 推导请找初中老师 #include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> using namespace std; int box[1000000]; int main() { //freopen("in","r"…
私のZJOI Day2 2017-3-22 08:00:07 AtCoder试题选讲 SYC(Sun Yican) from Shaoxing No.1 High School 2017-3-22 08:00:07 AtCoder简介自己看. 1.寿司 有一个长为N数列A,初始全为0. 有Q次操作,每次操作两个参数X,Y 在A[1],A[2]-A[X]中找出最小的数,如果有多个找小标最小的,设找到了u A[u] = A[u] + 1 重复这个过程Y次 Solution: A[i] >= A[i…
swiftin Should the opening brace of a function or control flow statement be on a new line or not ?:) This and many other questions cross my mind when I think about coding style. I love the comment from Ray Wenderlich’s Swift style guide: "You like br…
A. Modular Exponentiation time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output The following problem is well-known: given integers n and m, calculate , where 2n = 2·2·...·2 (n factors), and  den…