首页 > 其他分享 >Codeforces 1674 E. Breaking the Wall

Codeforces 1674 E. Breaking the Wall

时间:2022-10-24 22:47:21浏览次数:50  
标签:Wall Breaking ceil a1 int a2 ans 1674 2.0

题意

给n个数的数列a[n],可以进行任意次操作,每次选取一个位置i,a[i]-=2,a[i-1]-=1,a[i+1]-=1,问最少几次操作可以让任意两个值<=0

提示

需要进行分类讨论,分成三种情况讨论

1. 两个数是相邻的,那么则需要解方程,x,y代表两点分别进行多少次

2. 两个数间隔一位的话,那么需要解方程,x,y代表两点分别进行多少次,z代表中间点需要多少次

3. 任意两点,直接排序取两个最小值ceil(x/2)即可
这道题比较简单,看完题目以后解题思路就比较明显了,比赛的提交很多人被hack了,估计是一些边界值考虑出错导致的,代码实现也比较简单

代码

#include<bits/stdc++.h>

using namespace std;
int a[200005];

int calc1(int a1, int a2) {
    if (a1 < a2)swap(a1, a2);
    if (a1 >= 2 * a2) {
        return ceil(a1 / 2.0);
    }
    return ceil((a1 + a2) / 3.0);
}

int calc2(int a1, int a2) {
    return min(1 + ceil((a1 - 1) / 2.0) + ceil((a2 - 1) / 2.0), ceil((a1) / 2.0) + ceil((a2) / 2.0));
}

int main() {
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
    }
    int ans = INT_MAX;
    for (int i = 1; i < n; i++) {
        ans = min(ans, calc1(a[i], a[i + 1]));
    }
    for (int i = 1; i < n - 1; i++) {
        ans = min(ans, calc2(a[i], a[i + 2]));
    }
    sort(a + 1, a + 1 + n);
    ans = min(ans, int(ceil(a[1] / 2.0) + ceil(a[2] / 2.0)));
    cout << ans << endl;
    return 0;
}

标签:Wall,Breaking,ceil,a1,int,a2,ans,1674,2.0
From: https://www.cnblogs.com/4VDP/p/16823312.html

相关文章

  • CentOS firewalld防火墙的操作
    1、查看firewall服务状态systemctlstatusfirewalld出现Active:active(running)切高亮显示则表示是启动状态。出现Active:inactive(dead)灰色表示停止,看单词也行......
  • Wallys/IPQ4018/IPQ4028 2x2 2.4Ghz 2x2 5Ghz Industrial-grade //wifi5 Support 11AB
    Wallys/IPQ4018/IPQ40282x22.4Ghz2x25GhzIndustrial-grade//wifi5Support11ABGN/AC IPQ40x8/IPQ40x9istheindustry'sfirstWave2802.11ACSoCWiFisolut......
  • firewalld
    打开防火墙firewalldsystemctlstartfirewalld列出所有开发端口、服务firewall-cmd--list-all永久开放某tcp端口firewall-cmd--zone=public--add-port=445/tcp......
  • nfs 防火墙firewalld 开放
    yum-yinstallnfs-utilsrpcbind#安装nfs,nfs依赖rpc工作systemctlstartrpcbind#开启rpc再开启nfs服务systemctlstartnfssystemctlenablerpcbind#设置......
  • 已整理-firewalld防火墙配置
     目录:1、firewalld防火墙介绍2、firewalld区域与配置规则3、firewall-cmd配置 1、firewalld防火墙介绍防火墙作用:隔离,严格过滤入站,允许出站;系统服务......
  • 如何把视频做成电脑壁纸?Dynamic Wallpaper导入视频壁纸的方法
    如何把视频做成电脑壁纸?在日常生活中我们常常会碰到一些好看的视频,想要将其设置为电脑动态壁纸,您可以使用DynamicWallpaper这个软件来设置,具体DynamicWallpaper导入视频......
  • CentOS firewall简单总结
    CentOSfirewall简单总结简介防火墙是安全的重要道防线.硬件防火墙一般部署再内网的边界区域.作为最外层的防护.但是一般硬件的防火墙会比较宽松.不然会导致很多业......
  • firewalld关于service的操作
    ####service就是zone下面的一个子单元,也就是一个指定的端口,因为防火墙就是针对某一个端口做一些限制,比如http操作的80端口,https操作的是443端口,ssh操作的是22端口#firewal......
  • firewalld管理规则
    ####firewall-cmd--reload刷新规则#firewall-cmd--list-all查看规则#首先查看都是有哪些zone,针对现有的zone去操作,或者添加新的zone#firewall-cmd--znotallow=wo......
  • CentOS之开启firewalld白名单
    title:CentOS之开启firewalld白名单categories:CentOStags:CentOStop:40CentOS之开启firewalld白名单​ Firewalld是可用于许多Linux发行版的防火墙管理解决......