当前位置: 代码迷 >> 综合 >> 大一上第十周学习笔记
  详细解决方案

大一上第十周学习笔记

热度:97   发布时间:2023-09-20 17:54:25.0

11.18 周三

估计最近一两个月训练量会很少,因为太忙了。

尽量吧,最少最少坚持一周两套cf题目

 

1443D - Extreme Subtraction

这道题依然是思维题,还没用到什么算法

我发现不下降和不上升是可以的,于是就想去构造一个凹型的数列,也就是一个不上升数列搭配一个不下降数列

构造的过程比较麻烦,最后wa了

最后因为我思考过挺久也没做出,就去看题解了

题解是构造一个不上升或者不下降序列,而不是凹形数列,比我这个思维上简单很多

所以我是在条件转化出了问题

我在转化的时候转化成能否构造一个凹形数列,这样麻烦

而转化成一个能否构造成一个不下降数列,这样就简单多了

实际上凹形数列简化后就是一个不下降数列

我想到凹形数列是受到样例的引导

所以就贪心地去构造不下降序列就好

#include<bits/stdc++.h>
#define REP(i, a, b) for(int i = (a); i < (b); i++)
#define _for(i, a, b) for(int i = (a); i <= (b); i++)
using namespace std;const int MAXN = 1e6 + 10;
int a[MAXN], n;int main()
{int T; scanf("%d", &T);while(T--){scanf("%d", &n);_for(i, 1, n) scanf("%d", &a[i]);_for(i, 2, n)if(a[i-1] > a[i])a[1] -= a[i-1] - a[i];if(a[1] < 0) puts("NO");else puts("YES");}return 0;
}

 

  相关解决方案