关于P9147
  • 板块灌水区
  • 楼主_ERO_
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/3/14 21:51
  • 上次更新2023/10/23 21:32:17
查看原帖
关于P9147
947565
_ERO_楼主2023/3/14 21:51

rt,月2t1,但是月赛的时候因为有点事没多少时间思考。那时候只想到顺推,很懵地拿了90分

#include<cstdio>
#include<algorithm>
using namespace std;

const int MAXN = 1000005;
int n, a[MAXN], f[MAXN][2], ans, tg[MAXN];//tg[i]==1表示修改了a[i-1] 
//f[i][k]表示修改1-k次之后以i为结尾的严格上升字串长度 

int main()
{
		scanf ("%d", &n);
		for (int i = 1; i <= n; ++ i) scanf ("%d", a + i);
		
		for (int i = 1; i <= n; ++ i) {
				f[i][0] = f[i][1] = 1;
				if (a[i] > a[i - 1]) f[i][1] = f[i - 1][1] + 1;
				if (a[i] > a[i - 1] && (tg[i] == 0 || a[i] - a[i - 2] > 1)) f[i][0] = f[i - 1][0] + 1;
				if (f[i - 1][1] > f[i][0]) f[i][0] = f[i - 1][1] + 1, tg[i + 1] = 1;
				ans = max(ans, max(f[i][0], f[i][1]));
		}
		
		printf ("%d\n", ans);
		
		return 0;
		
}

请问是实现写挂了还是算法假了?(蒟蒻想了好一会没想到hack。万分感谢

2023/3/14 21:51
加载中...