1004训练

正在进行… IOI 开始于: 2026-10-4 9:00 2400 小时 主持人: 7
动态规划:
1.定义一个状态....  清楚的知道dp[i]含义
	dp[i]:
	大概定义的方向:
		1.表示(选)到i项的最大价值,最小值,方案数....
		2.表示选  前i项的最大价值,最小值,方案数.... 
2.找转移的方向 (前驱或者后继)
	进而找直接前驱(后继),就是能够一步,一次操作转移过来
	 
	
3.写状态转移方程  
	用直接前驱(后继)来做转移
	
分析思路: 
dp[i]: 数字增加到i时的方案数
前驱: i-a   i-b
dp[c]=1, 
从c+1开始推:
dp[i]=dp[max(i-a,c)]+dp[max(i-b,c)];
答案:dp[n] 

子段分析思路:
dp[i];表示选到第i项的最大子段和 
dp[i]=a[i];//独立为一段 
直接前驱:dp[i-1]  
为什么:因为子段要求连续,又因为当前选了第个i元素,那么前面只能接在i-1为结尾的子段后面
dp[i]=dp[i-1]+a[i];
总结:dp[i]=max(a[i],dp[i-1]+a[i]); 
答案:最后找所有dp[i]的最大值 


LIS:
dp[i]:表示选到第i项时的最长LIS长度

子序列不要求连续,那么第i元素可以接在1,2,3....i-1都可以
所以前驱1----i-1   

直接前驱: j:1--i-1里面每个位置   a[j] 的值如果小于a[i]  那么可以转移
 
 

我们会在赛后检查代码相似度。

状态
正在进行…
规则
IOI
题目
21
开始于
2026-10-4 9:00
结束于
2027-1-12 9:00
持续时间
2400 小时
主持人
参赛人数
7