【枚举】CF1706 C

有人一道1400写了一个小时

Problem - C - Codeforces

题意:

思路:

首先先去观察样例:

很显然,对于n是奇数的情况,只有一种情况,直接操作偶数位就好了

主要是没搞清楚n是偶数的情况

其实有个小技巧,在模拟样例的时候特殊化成0和1会比较好看一点

Code:

cpp 复制代码
#include <bits/stdc++.h>

#define int long long

using i64 = long long;

using namespace std;

const int N = 1e5 + 10;

int h[N];

int calc(int p) {
    if (h[p] > h[p - 1] && h[p] > h[p + 1]) return 0;
    else {
        return max({h[p - 1], h[p + 1]}) - h[p] + 1;
    }
}
void solve() {
    int n;
    cin >> n;
    for (int i = 1; i <= n; i ++) {
        cin >> h[i];
    }

    int ans = 0;
    for (int i = 2; i < n; i += 2) {
        ans += calc(i);
    }

    int res = ans;
    if (n % 2 == 0) {
        for (int i = n - 2; i >= 2; i -= 2) {
            res -= calc(i);
            res += calc(i + 1);
            ans = min(ans, res);
        }
    }
    cout << ans << "\n";
}
signed main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int t = 1;
    cin >> t;
    while(t --) {
        solve();
    }
    return 0;
}
相关推荐
yyytucj23 分钟前
python--列表list切分(超详细)
linux·开发语言·python
byte轻骑兵40 分钟前
【0x0012】HCI_Delete_Stored_Link_Key命令详解
c语言·蓝牙·通信协议·hci
肖田变强不变秃1 小时前
C++实现有限元计算 矩阵装配Assembly类
开发语言·c++·矩阵·有限元·ansys
王磊鑫1 小时前
Java入门笔记(1)
java·开发语言·笔记
喜欢猪猪1 小时前
分布式与微服务:构建现代应用的关键架构
开发语言·php
硬件人某某某1 小时前
Java基于SSM框架的社区团购系统小程序设计与实现(附源码,文档,部署)
java·开发语言·社区团购小程序·团购小程序·java社区团购小程序
kucupung2 小时前
【C++基础】多线程并发场景下的同步方法
开发语言·c++
Quantum&Coder2 小时前
Objective-C语言的计算机基础
开发语言·后端·golang
五味香2 小时前
Java学习,List 元素替换
android·java·开发语言·python·学习·golang·kotlin
Joeysoda2 小时前
Java数据结构 (从0构建链表(LinkedList))
java·linux·开发语言·数据结构·windows·链表·1024程序员节