首页 > 其他分享 >Codeforces Round 903 (Div. 3) E. Block Sequence(DP)

Codeforces Round 903 (Div. 3) E. Block Sequence(DP)

时间:2023-10-14 14:12:43浏览次数:42  
标签:903 Sequence int Codeforces long Block Div dp

Codeforces Round 903 (Div. 3) E. Block Sequence

思路:

设dp[i]为当i~n为完美的最少删除次数

dp[n]=1,dp[n+1]=0;

从后至前对于dp[i]更新

若直接删除当前点,则为 dp[i+1]+1

若不删除 则为 min(dp[i+a[i]+1] , dp[i]);

i+a[i]+1为a[i]不能覆盖的位置

#define int long long
#define ld long double

using namespace std;

int t;

int dp[200010];
int a[200010];

void op()
{
	int n;
	cin >> n;

	memset(dp, 0x3f, sizeof dp);

	for (int i = 1; i <= n; i++)cin >> a[i];

	dp[n] = 1;
	dp[n + 1] = 0;

	for (int i = n-1; i >=1; i--)
	{
		dp[i] = min(dp[i + 1] + 1, dp[i]);

		if (a[i] + i + 1 <= n+1)
		{
			dp[i] = min(dp[i + a[i] + 1], dp[i]);
		}
	}
	
	cout << dp[1] << endl;
}

signed main()
{
	cin >> t;
	while (t--)
	{
		op();
	}

	return 0;
}

标签:903,Sequence,int,Codeforces,long,Block,Div,dp
From: https://www.cnblogs.com/ikunhuaji/p/17764110.html

相关文章

  • Codeforces Round 903 (Div. 3)
    D题被hack了哭了第一题简单的只用把字符串重复的同时尝试匹配,然后判断就好了,只是需要一点代码能力第二题,也很简单最多剪断3次,就先从小到大排序,然后用最小的,看看大的是他的几倍,如果不是几倍的关系就不可能完成,如果是就算要几次就好了第三题,也很简单,很明显,对于一个格子,在它旋转9......
  • Codeforces Round 674 (Div. 3) B. Symmetric Matrix
    有\(n\)块\(2\times2\)的瓷砖,瓷砖上的每个方格包含一个数字,每种瓷砖都有无数种。现在需要用所给瓷砖构造一个\(m\timesm\)的方形矩阵\(a\)满足:每块瓷砖都在方形矩阵内瓷砖之间不能存在覆盖\(a_{i,j}=a_{j,i}\)。输出是否存在这种构造。一:显然合法的\(m\)......
  • Codeforces Round 903 (Div. 3)
    D.DivideandEqualize思路:1.某个数除以x,某个数再乘以x,可发现数组总的乘积没有变化2.也就是说,要使数组中的每一个元素相同,它们总的质因子应该满足:某个质因子的数量%n==0E.BlockSequence简单的dpdp[i],表示删除这个数字后的最小删除次数可以正的枚举,也可以倒着来转移方程......
  • Codeforces Global Round 11 A. Avoiding Zero
    给一个大小为\(n\)的数组\(a_1,a_2,\cdots,a_n\)。你需要构造一个大小为\(n\)的数组\(b\)且满足以下条件:数组\(b\)是数组\(a\)的冲排列对于\(\forallk=1,2,\cdots,n\),\(\sum_{i=1}^{k}b_i\neq0\)。输出任意一组构造,或者回答不可能。若\(\sum_{i......
  • Educational Codeforces Round 96 (Rated for Div. 2) A. Number of Apartments
    有三种建筑:三室厅、五室厅、七室厅。每个房间严格有一扇窗户。现在有\(n\)扇窗户,询问完全用完这些窗户的情况下,\(3,5,7\)室厅各有多少间。输出任意一种答案,或者回答不可能。假设一定有解,显然可以选择\(mod\)任意一个数贪心,不妨选最小的\(3\)。假设答案为\(a,b,c\):......
  • Codeforces Round 677 (Div. 3) C. Dominant Piranha
    有\(n\)只水虎鱼在水族馆,大小为\(a_1,a_2,\cdots,a_n\)。一只水虎鱼被称为是主导的,当它可以吃掉水族馆中其他所有水虎鱼。其他水虎鱼不会有任何行动。一只水虎鱼只可以吃掉当前与它相邻并且体型严格比它小的水虎鱼。当大小为\(x\)的水虎鱼吃掉大小为\(y\)的水虎鱼时,......
  • Codeforces 512D. Fox And Travelling 题解
    FoxAndTravelling题面翻译给定一张\(n\)个点\(m\)条边的无向图。一个点只有当与它直接相连的点中最多只有一个点未被选择过时才可被选择。询问对于每个\(k\in[0,n]\),有序选择\(k\)个点的方案数。\(n\le100\),\(m\le\frac{n(n-1)}2\),答案对\(10^9+9\)取模。......
  • Codeforces Round 684 (Div. 2) B. Sum of Medians
    定义\(median\)是一个非降序数组中第\(\lceil\frac{n}{2}\rceil\)的数。数组从\(1\)开始标号。给两个数\(n\)和\(k\),并给出一个长为\(nk\)的数组\(a\)。需要分出为\(k\)个大小为\(n\)的数组,每个元素需要被严格分入一个数组中。需要让\(k\)个数组的中位数......
  • Codeforces Round 685 (Div. 2) B. Non-Substring Subsequence
    对于一个长为\(n\)的\(01\)字符串\(s\)有\(n\)个询问。第\(i\)个询问被\(l_i,r_i\)描述\(1\leql_i<r_i\leqn\)。对于每个询问,你需要确定\(s\)中是否存在一个子序列等同于子串\(s[l_i\cdotsr_i]\)。显然子序列可以和子串仅有一个字符不相同。于是\(s......
  • Codeforces Round 690 (Div. 3) C. Unique Number
    给一个正整数\(x\),需要构造一个最小的正整数\(n\)使得\(\sumdigt(n)=x\),并且\(\foralli\neqj,digt(n)_i\neqdigt(n)_j\)。首先观察到\(0\)没有贡献,且会增加位数,所以不能有\(0\)。由于每个数位只能出现一次,显然合法的\(x\)范围为\([0,\sum_{i=1}^{9}i]......