首页 > 其他分享 >2024-08-07 多校联合暑假训练赛第四场 补题+分析

2024-08-07 多校联合暑假训练赛第四场 补题+分析

时间:2024-08-08 17:50:44浏览次数:10  
标签:cnt 第四场 07 di cout long 棋子 补题 题意

A. 小盒子

题意+思路:

题意其实概括的不是非常准确
简要题意:
圆盒有n个格子, 格子自带ai个棋子.是否通过任意起点通过顺时针-1, -2, ... , -n的操作使得
圆盒中所有所有的棋子都为0

思路:
贪心 对于所有棋子通过顺时针操作的时候每一次都是(1 + n) * n / 2次
是一个等差公式所以提前判断所有的值累加起来是否能被除尽,如果不能被
除尽则代表着棋子不能清零.如果可以除尽,总次数是sum / ((1 + n) * n / 2) 次
记录为cnt,那么通过差分得到diff数组,不难得出差分数组是1个di加上n - 1其余
都是减去-1, 那么要让di = 0则需要操作为[(n - 1) * x - (cnt - x) + di == 0]
得到x = (cnt - di) / n及x操作是正整数及cnt - di它是n的倍数, cnt - di也需要>0
那么可以得到一个公式如果当前di - cnt <= 0且保证 (di - cnt) % n == 0
如果所有的di都满足这个条件那么可以清空棋子,否则不可以清空

  

Code:

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef unsigned long long ull;

#define all(x) (x).begin(), (x).end()
#define debug(x) cout << #x << ' ' << '=' << ' ' << (x) << '\n'
#define debug2(x, y) cout << #x << ' ' << '=' << ' ' << (x) << ',' << ' ' << #y << ' ' << '=' << ' ' << (y) << ' ' << '\n'
mt19937 rng(std::chrono::system_clock::now().time_since_epoch().count());

const int N = 1e5 + 5;
ll a[N], diff[N];

void solve() {
    ll n;
    ll sum = 0;
    cin >> n; 
    for (int i = 0; i < n; i++) {
        cin >> a[i];
        sum += a[i];
    }
    if (sum % ((1 + n) * n / 2)) {
        cout << "NO";
        exit(0);
    }
    ll cnt = sum / ((1 + n) * n / 2);
    for (int i = 0; i < n; i++) {
        diff[i] = a[(i + 1) % n] - a[i] - cnt;
    }
    for (int i = 0; i < n; i++) {
        if (diff[i] > 0 || diff[i] % n) {
            cout << "NO\n";
            return ;
        } 
    }
    cout << "YES\n";
    return ;
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
    cout << fixed << setprecision(15);
    int _ = 1;
    // cin >> _;
    while (_--) {
        solve();
    }
    return 0;
}

  

C. 新位置

标签:cnt,第四场,07,di,cout,long,棋子,补题,题意
From: https://www.cnblogs.com/youhualiuh/p/18349379

相关文章

  • 20240807学习
    这回讲了点简单的动态规划,终于写的出来blog了gym105239IPathAndkVertices题面:有一个\(n\)个点的树,每个点有点权\(a_i\),可以在任意叶子节点到根节点的路径中选\(k\)个点,求点权和的最大值。题解:DFS的时候使用数据结构分别维护该节点到根的最大的\(k\)个点和该节点到根的剩下......
  • 2024.08.07 记录一下面试。
    这次面试面试官就说我们想要基础好的,所以就问了一堆基础问题。这里的知识点图片都是来自JavaGuide,如果不是图片我会贴一下链接,但是很有可能我都不会解答。Java面试指南|JavaGuide按我能想到的写。1.手动获得spring配置文件application.yml文件。......
  • [lnsyoj539/luoguP2120/ZJOI2007]仓库建设
    题意懒了(sol显然DP设计状态:\(f_i\)表示\(1\simi\)的工厂中,在第\(i\)个工厂处建设仓库的最小代价;状态转移:由题意,显然可得:\[f_i=\min_{j=1}^{i-1}\{f_j+c_i+\sum_{k=j+1}^i(x_i-x_k)\cdotp_k\}\]我们发现中间的一坨求和可以通过前缀和的方式预处理出\(sum_i=......
  • [20240807]数值累加的问题.txt
    [20240807]数值累加的问题.txt--//前几天遇到一位朋友聊天提到的问题,实际上主要讲现在要招熟悉linux,unix类的人很少,我接触国内大部分开发人员熟悉了解linux--//很少,即使是数据库管理人员,熟悉linux类的人很少,顶多会一个安装就已经不错了,基本上许多操作系统命令是非常不熟练......
  • STM32F407 UART
    //串口(UART)------------------------://1.同步:      步调一致,两个设备之间的通信速度相同//2.异步:      步调不一致,两个设备之间的通信速度不相同//总结:      同步通信:有时钟线连接,并且时钟线可以控制两个设备之间的速度,让速度保持一致    ......
  • STM32F407 SysTick
    //定时器分类:   内核定时器(系统滴答定时器):      延时、定时中断、给操作系统提供时基   基本定时器:      延时、定时中断、时间片   通用定时器:      延时、定时中断、输出比较(PWM)、输入捕获(捕获高/低电平时间、红外信号解码(解NEC......
  • STM32F407 GPIO
    //单片机:   是典型的嵌入式微控制器,英文MCU;是一种集成电路芯片,采用超大规模集成电路技术把FPU,RAM,ROM,I/O口中断系统,定时器计数器等功能集成到一块硅片上,构成的小而完善的计算机系统。//中央处理器(FPU)(168MHz)//随机存储器(RAM)//只读存储器(ROM)//定时器:   重要  ......
  • 第五代英特尔® 至强® 可扩展处理器: PK8072205560、PK8072205560x00 Gold 处理器可实
    至强®可扩展处理器:第五代英特尔®至强®可扩展处理器采用内置英特尔®AIEngines,并具有与上一代相同的功率范围、软件和平台兼容性,可实现无与伦比的CPUAI性能。介绍英特尔®至强®Gold处理器英特尔®至强®Gold处理器针对要求严苛的AI、主流数据中心、多云计算......
  • Codeforces Round 964 (Div. 4) 补题记录(A~G2)
    难绷事实:Bwa一发A......#include<bits/stdc++.h>#definepbpush_back#defineintlonglongusingnamespacestd;constintN=500100;inta[N];signedmain(){intT;cin>>T;while(T--){intn;cin>>n;strings=......
  • 2024/08/07 每日一题
    LeetCode3130找出所有稳定的二进制数组II方法1:动态规划classSolution{publicintnumberOfStableArrays(intzero,intone,intlimit){intMOD=1_000_000_007;int[][]dp0=newint[zero+1][one+1];int[][]dp1=newint[zero+......