【倒着考虑】CF Edu 21 D

Problem - D - Codeforces

题意:

思路:

这道题需要倒着步骤考虑,就是先去假设已经分为了两部分,这左右两部分的和相等,然后去想上一个步骤

倒着一个步骤后,可以发现这样的性质:

Code:

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

#define int long long

using i64 = long long;

constexpr int N = 1e5 + 10;
constexpr int M = 1e5 + 10;
constexpr int P = 2600;
constexpr i64 Inf = 1e18;
constexpr int mod = 1e9 + 7;
constexpr double eps = 1e-6;

int n;
int a[N];

void solve() {
    std::cin >> n;

    std::map<int,int> mp, mp2;
    int sum = 0;
    for (int i = 1; i <= n; i ++) {
        std::cin >> a[i];
        sum += a[i];
        mp2[a[i]] ++;
    }

    if (sum & 1) {
        std::cout << "NO" << "\n";
        return;
    }

    int s = 0;
    for (int i = 1; i <= n; i ++) {
        s += a[i];
        mp[a[i]] ++;
        mp2[a[i]] --;
        if (s > sum / 2) {
            if (mp[s - sum / 2]) {
                std::cout << "YES" << "\n";
                return;
            }
        }else if (s < sum / 2) {
            if (mp2[sum / 2 - s]) {
                std::cout << "YES" << "\n";
                return;
            }
        }else {
            std::cout << "YES" << "\n";
            return;
        }
    }

    std::cout << "NO" << "\n";
}
signed main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);
    
    int t = 1;

    while (t--) {
        solve();
    }
    
    return 0;
}
相关推荐
美团技术团队12 分钟前
LongCat-Flash:如何使用 SGLang 部署美团 Agentic 模型
人工智能·算法
Fanxt_Ja5 小时前
【LeetCode】算法详解#15 ---环形链表II
数据结构·算法·leetcode·链表
侃侃_天下5 小时前
最终的信号类
开发语言·c++·算法
茉莉玫瑰花茶5 小时前
算法 --- 字符串
算法
博笙困了5 小时前
AcWing学习——差分
c++·算法
NAGNIP5 小时前
认识 Unsloth 框架:大模型高效微调的利器
算法
NAGNIP5 小时前
大模型微调框架之LLaMA Factory
算法
echoarts5 小时前
Rayon Rust中的数据并行库入门教程
开发语言·其他·算法·rust
Python技术极客5 小时前
一款超好用的 Python 交互式可视化工具,强烈推荐~
算法
徐小夕5 小时前
花了一天时间,开源了一套精美且支持复杂操作的表格编辑器tablejs
前端·算法·github