Codeforces 913D - Too Easy Problems】的更多相关文章

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…
题目描述: 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…
[题目]D. Too Easy Problems [题意]给定n个问题和总时限T,每个问题给定时间ti和限制ai,当解决的问题数k<=ai时问题有效,求在时限T内选择一些问题解决的最大有效问题数.n<=2*10^5,T<=10^9. [算法]贪心(排序+堆) [题解]因为T太大,不能考虑背包. 容易发现k越小越能使更多问题有效,所以一定有最优方案的所有问题均有效. 当k唯一确定时,其实就是在所有ai>=k的问题中选取时间最少的几个解决. 当k减小时,选择的范围扩大,就可以选择一些时…
题面 两道题比较像,放在一起写了,后者可以看成前者的加强版 (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$ 前…
[题目]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…
$ >AtcoderGrandContest \space 005 F.  Many Easy Problems<$ 题目大意 : 有一棵大小为 \(n\) 的树,对于每一个 \(k \in[1,n]\) ,求出在所有在树中选 \(k\) 个点的方案对应的包含这 \(k\) 个点的最小联通块大小之和 \(1 \leq n \leq 2 \times 10^5\) 解题思路 : 容易发现,对于一组选取方案,包含它的最小联通块是唯一的,不妨考虑每一个点对这个联通块的贡献. 观察发现,一个点如果在一…
题目链接:http://codeforces.com/contest/727/problem/F 题目大意:有n个问题,每个问题有一个价值ai,一开始的心情值为q,每当读到一个问题时,心情值将会加上该问题的价值.问题只能按顺序读.有m个询问,求当q=bi时,至少要删去多少个问题才能使得在任何时候心情值都>=0 参考这篇:http://blog.csdn.net/aufeas/article/details/53031439 解法一: 贪心 分别求出最多删去i个问题需要的初始心情值的最小值f[i]…
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…
链接 [http://codeforces.com/group/1EzrFFyOc0/contest/913/problem/D] 题意 给你n个题目,考试时间T,对于每个问题都有一个ai,以及解决所花的时间, 让你找到一个做题(选择k个题去做)的方案,使得最后ai<=k的情况最多 分析 其实我刚开始不会的,后来看大佬的才会的 我们先利用vector数组根据ai大小分类,然后对于每一类肯定是时间少的有限考虑,所以考虑用优先队列. 那么我们只要去由n到0枚举即可. 先把ai为i的题目入队列,然后如…
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…
题目链接:http://codeforces.com/problemset/problem/320/B 题目意思:有两种操作:"1 x y"  (x < y) 和 "2 a b" (a ≠ b) . 问对于的"2 a b" 询问,能否从第a行的区间到达第b行的区间(行的数量是以:"1 x y" 来统计的,不包括"2 a b"这些行),当然可以直达,也可以借助某些区间间接到达.假设给定一个区间为 (a,…
[题目链接]:http://codeforces.com/contest/239/problem/B [题意] 给你一个长度为n的字符串,只包括'<">'以及数字0到9; 给你q个区间(n和q都小于等于100) 然后让你在这q个区间里面做一些操作; 有一个指针int,指向当前操作的位置,还有一个方向的int; 表示这个指针它要移动的方向; 每次对一个位置进行操作; 如果该位置是数字; 则把这个数字输出,然后这个数字递减1; 如果数字小于0了,则把它删掉; 然后把指针往方向int的方向…
The only difference between the easy and the hard versions is constraints. A subsequence is a string that can be derived from another string by deleting some or no symbols without changing the order of the remaining symbols. Characters to be deleted…
题目大意 给你一棵树,有\(n\)个点.还给你了一个整数\(k\). 设\(S\)为树上某些点的集合,定义\(f(S)\)为最小的包含\(S\)的联通子图的大小. \(n\)个点选\(k\)个点一共有\(\binom{n}{k}\)中方案,请你求出所有方案的\(f(S)\)的和\(\mod 924844033\). 出题人觉得这样就太简单了,他决定让你求出所有\(k=1\ldots n\)的答案. \(n\leq 200000\) 题解 似乎对于每个\(k\)没办法快速求出答案. 我们考虑一个点…
先只考虑求某个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}…
题目链接 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…
$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)$表…
题目最开始 完全不懂 配合案例也看不懂-_- 总之就是用传递性 问能否从a区间到b区间 dfs(x,y) 走遍与第x区间所有的 联通区间 最后检验 第y区是否被访问过 是一道搜索好题 搜索还需加强 #include <iostream> #include <stdio.h> #include <string.h> using namespace std; typedef long long ll; typedef pair<ll,ll> P; ;//reco…
[链接] 我是链接,点我呀:) [题意] 让你将一个字符串删掉一些字符. 使得字符串中不包含子序列"hard" 删掉每个字符的代价已知为ai 让你求出代价最小的方法. [题解] 设dp[i][j]表示前i个字符,已经和"hard"匹配前j个的最小花费. 对于dp[i][j] 对s[i+1]分类讨论 ①s[i+1]不删 那么有两种情况 第一种:s[i+1]和"hard"的第j+1个字符匹配 第二种:..xxxxx不匹配 则分别转移到dp[i+1][…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 可以考虑把所有的题目按照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…
上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题.. 今天,我们来扒一下cf的题面! PS:本代码不是我原创 1. 必要的分析 1.1 页面的获取 一般情况CF的每一个 contest 是这样的: 对应的URL是:http://codeforces.com/contest/xxx 还有一个Complete problemset页面,它是这样的:…
http://codeforces.com/contest/489 Problems     # Name     A SwapSort standard input/output 1 s, 256 MB    x2668 B BerSU Ball standard input/output 1 s, 256 MB    x2659 C Given Length and Sum of Digits... standard input/output 1 s, 256 MB    x2261 D U…
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…