• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

isomer

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

B. Good Arrays

B. Good Arrays

原本我的思路是找为1的数sum1,如果sum1 > n - sum1, 那就不能让每个为1的数+1, 不为1的数-1构造新的数组
有一个老是出错(关我什么事啊)
我是这样理解题解的那个判断:
假设新数组每个数都是1,再加上原数组为1的个数,这样保证在原数组为1的位置在新数组的数就是2了
如果加上以后小于等于总和,我就是可以选择加与不加构造新的数组
(codeforce题都是很巧的方法,考脑子)

#include <iostream>
using namespace std;


void solve()
{
    long long n;
    cin >> n;
    int ans1 = 0;
    long long sum = 0;
    for (int i = 0; i < n; i ++ )
    {
        int x;
        cin >> x;
        if (x == 1) ans1 ++;
        sum += x;
    }
    if (sum >= ans1 + n && n > 1)
    {
        cout << "YES" << endl;
    }
    else
    {
        cout << "NO" << endl;
    }
}

int main()
{
    int t;
    cin >> t;
    while (t -- )
    {
        solve();
    }
    return 0;
}

posted on 2024-04-23 00:30  isomer莫柒瑜  阅读(11)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3