![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
文章平均质量分 59
Lnn.
来吧
展开
-
组队练习数学-04
ACM组队刷题codeforces原创 2022-09-20 23:27:46 · 209 阅读 · 1 评论 -
Educational Codeforces Round 125 (Rated for Div. 2)E.Star MST
前言:歪比巴卜题目传送门 题目类型:dp、MST、完全图 解析: 1.定义dp[i][j]为i个点连接点1,最大边权<=j的方案数 2.原理:uv相连,边权Wuv >= max( Wu1 , Wv1 ) , 所以当前与1边权最大的点有清晰的计数方法 3.以小状态更新大状态:dp[i][j]更新dp[i+z][j+1],具体的,新增z个(与点1边权)为j+1的点,每个点连接(与1边权)<=j的点,贡献(k-j)^(z);z个点互连贡献(k-j) ^(z*(z-1)/2)原创 2022-03-28 23:29:44 · 347 阅读 · 0 评论 -
2019-2020 ICPC, Asia Jakarta Regional Contest.E. Songwriter
前言:之前感觉做法有点突兀,一觉睡醒感觉又有点道理,记录一下题目传送门 题目类型:dp、贪心、逆向 解析: 由于题目要求序列字典序最小,那么最前面的我们需要尽可能的让他小。 但是,前面的选完无法保证后面的能够合法(已经有一点点逆向考虑的意思了)。那么我想知道第i个选在哪里才能保证后面的合法,由于相邻有限制关系,就需要知道i+1让后面合法的范围,同理需要知道i+2、i+3…n的范围,而n后面没有了,所以n的范围就是【L,R】,然后根据相邻关系倒推回去。再从前往后贪心。具体方式见代码 co原创 2022-03-15 12:52:24 · 368 阅读 · 0 评论 -
D.Digits
前言:思维题orz orz题目传送门B.Cobb 题目类型:暴力,思维。 解析:首先我们可以注意到k的取值很小,但是整体看下来无法从式子:i⋅j−k⋅(ai|aj)的特性来找到突破口。 于是我们考虑化简题目,去掉k,式子变为:i⋅j−(ai|aj),此时有一个结论,直接取i=n-1,j=n。 正确性:我们先假设i=n-1,j=n,因为ai <= n ,所以ai|aj - ai <= n,此时如果i变成n-2,对于(ixj)来说下降了n,而对于−(ai|aj)最多上升n,极限原创 2021-08-17 15:15:04 · 125 阅读 · 0 评论 -
Codeforces Round #675 (Div. 2)C. Bargain
前言:切题切到硬石头了,特来记录一下。题目传送门C. Bargain 题目类型:数学,递推。 解析:在分析题目之前,我们先引入这样的思想:分位求贡献。对于一个数,例如:5037489,它的第七位是9,对整个数的贡献是9*(10^0) = 9,第六位是8,对整个数的贡献是8*(10^1) = 80,以此类推。 下面我们逐步增加难度,对于5037489,我们删除其中的第二位到第五位,也就是374,可以发现374右边的数贡献不会变,而左边的数贡献缩小了10^3倍。 这样我们就得到了一个规律:原创 2021-05-24 11:05:53 · 433 阅读 · 2 评论 -
E. Phoenix and Computers
前言:写了四个小时,推出巨多种dp式子,推了半天发现基本性质给忘掉了,然后重新推才搞定。人傻了。万物皆可DP时间复杂度为n2的DP。先上code:#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std; int n,mod;long long dp[405][202][2],mu[405][405]; i原创 2021-05-04 00:56:37 · 337 阅读 · 1 评论