Think:
1题目大意:现在要移除一些障碍物,有两种操作选择,一种是直接移除一个障碍物,另一种是移除所有未完全移除的障碍物的一层,求最少操作次数
2可以先按照障碍物的高度即层数进行排序,然后再通过动态规划思想和递推思想,寻找状态转移方程和临界条件,进而寻找当前最优解与前一步最优解的联系,进而求解
以下为Accepted代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n, i, miv;
int a[100004];
while(scanf("%d", &n) != EOF){
for(i = 0;i < n; i++)
scanf("%d", &a[i]);
sort(a, a+n);
miv = 0;
for(i = 0; i < n; i++){
miv = min(miv+1, a[i]);
}
printf("%d\n", miv);
}
return 0;
}

该博客介绍了如何运用动态规划策略解决2014年全国计算机程序设计竞赛(NCPC)中的一道问题——Opening Ceremony。博主首先解析题意,涉及移除障碍物并寻找最小操作数。接着,建议将障碍物按高度排序,并通过状态转移方程和递推思路找到最优解。博客提供了codeforce上的题目链接和 Accepted 代码。
727

被折叠的 条评论
为什么被折叠?



