首页 > 其他分享 >[CF1874D] Jellyfish and Miku

[CF1874D] Jellyfish and Miku

时间:2023-10-04 22:44:57浏览次数:37  
标签:frac int Miku MAXN CF1874D dp Jellyfish

Jellyfish and Miku
D<C<B,哈哈。
设 \(dp_i\) 为起点为 i 时的期望步数,则

\[dp_0=1+dp_1\\ dp_n=0\\ dp_i=1+\frac{a_{i-1}}{a_{i-1}+a_i}dp_{i-1}+\frac{a_{i-1}}{a_{i-1}+a_i}dp_{i+1} \]

化简第三个式子可得

\[a_{i+1}(dp_i-dp_{i+1})=a_i(dp_{i-1}-dp_i)+a_i+a_{i+1} \]

设 \(f_i=dp_{i}-dp_{i+1}\),则

\[a_{i+1}f_i=a_{i}f_{i-1}+a_i+a_{i+1}\\ f_i=1+\frac{a_i}{a_{i+1}}(1+f_{i-1}) \]

将 \(f_0=1\) 代入可得

\[f_i=\frac{2\sum_{j=1}^{i-1}a_j}{a_i}+1 \]

你也可以在开头保留 \(dp_{i-1}\) 和 \(dp_{i}\) 得到一样的式子。
那么 a 不降,时间复杂度 \(\Omicron(nm\log n)\)。

#include<cstdio>
#include<iostream>
using namespace std;
#define db double
const int MAXN=3005;
const int INF=0x3f3f3f3f;
int n,m;
db dp[MAXN][MAXN];
int main() {
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++){
		for(int j=0;j<=m;j++){
			dp[i][j]=INF;
		}
	}
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			for(int k=1;j+k*(n-i)<=m;k++){
				dp[i+1][j+k]=min(dp[i+1][j+k],dp[i][j]+1.0*j/k);
			}
		}
	}
	printf("%.10lf\n",dp[n][m]*2+n);
	return 0;
}

标签:frac,int,Miku,MAXN,CF1874D,dp,Jellyfish
From: https://www.cnblogs.com/StranGePants/p/17742854.html

相关文章

  • Codeforces 1874F - Jellyfish and OEIS
    考虑对\(\summ_i-i+1\)个不可行的集合进行容斥,即钦定一些区间集,要求它们对应的\(p_l,p_{l+1},\cdots,p_r\)必须是\([l,r]\)的排列,计算方案数乘以容斥系数之和。如果容斥的集合中存在相交的区间,那么这个方案数其实不太好计算。不过根据区间的性质,对于\(l_1<l_2\ler_1<r_2......
  • CF1874C Jellyfish and EVA 题解
    题意给定一个有向无环图,对于任意一条边\((u_i,v_i)\),有\(u_i<v_i\)。定义一次从节点\(u\)开始的移动为如下过程:\(\tt{Alice}\)选择从\(u\)出发的且未被删除的一条边。\(\tt{Bob}\)在从\(u\)出发的且未被删除的边中等概率随机选择一条。若两人选择的边相同......
  • CodeForces 1874B Jellyfish and Math
    洛谷传送门CF传送门看到这种操作乱七八糟不能直接算的题,可以考虑最短路。对于\(a,b,c,d,m\)按位考虑,发现相同的\((a,b,m)\)无论如何操作必然还是相同的。于是考虑对于每个可能的\((0/1,0/1,0/1)\),所有终态有\((c=0/1,d=0/1)\)或者不确定。这样我们对于一......
  • Jellyfish and Mex
    2023-10-01题目JellyfishandMex难度&重要性(1~10):5题目来源luogu题目算法dp解题思路这道题一眼dp。我们需要考虑的是对于函数\(\operatorname{mex}\)的性质,假设当前\(a\)数组存在\(0\simx\),则\(\operatorname{mex}a=x+1\)。再记每一个数出现过\(s_0,s_1,\cd......
  • CF1875B Jellyfish and Game
    思路题意大概是两人都有一组数,奇数轮,第一个人可以选择和第二个人交换一个数字也可以不换,偶数轮,第二个人可以选择和第一个人交换一个数字也可以不换。首先可以猜测,我们每次都应该选择交换对方的最大值和自己的最小值,如果自己的最小值都比对方大的话就不交换。应该比较好想,这里感......
  • CF1875D Jellyfish and Mex
    思路看到\(n\)的范围只有\(5000\),并且\(\sumn\)的范围也是\(5000\),所以可以考虑\(n^2\)的做法。每次操作肯定都是一次性删完某个数字,如果删除某个数字删一半又去删别的数字,答案肯定会变大。所以我们可以考虑统计所有数字的数量,记为\(num_i\),来计算删完某个数字的最小......
  • CF1875C Jellyfish and Green Apple
    思路首先我们可以考虑把能分的都先分了,再选择去切剩下的苹果。那么我们只需要考虑苹果数量少于人数的情况,每个人能分的苹果都必然少于目前的单个苹果,所以每个苹果都必须切一刀,那么答案数就会增加当前的数量,再把能分的都分了,重复这一过程,直到分完为止。这样去切一定是最优的。那......
  • 题解 CF1875D【Jellyfish and Mex】
    显然,除非\(\operatorname{mex}a=0\),否则不会删除\(>\operatorname{mex}a\)的数。而\(\operatorname{mex}a=0\)时不对答案产生贡献,因此任意时刻我们都可以忽略\(a\)中\(>\operatorname{mex}a\)的数。又显然,一旦我们开始删一个数,就会先把所有与之相等的数删光。否则,设最先......
  • Jellyfish: 快速统计长序列中每个K-mers出现次数
      Jellyfish:快速统计长序列中每个K-mers出现次数  一个老工具,2011发表于Bioinformatics,目前引用1018次。因为需要用所以看了一下原文。Jellyfish,是此研究开发的,可以快速统计长序列中每个K-mers出现次数的软件。基于K-mers的应用很广,包括基因组组装、测序......
  • Ubuntu 22.04 LTS 代号已经公布:那就是 Jammy Jellyfish
    Ubuntu22.04LTS代号已在Ubuntu开发之家Launchpad上公布。在字母系列中的字母“I”之后,是“J”。因此,Canonical的下一个大LTS版本代号应该在其代号中包含字母“......