ZJOI2006皇帝的烦恼

2024-03-11 20:44
文章标签 烦恼 皇帝 zjoi2006

本文主要是介绍ZJOI2006皇帝的烦恼,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

时间限制: 1000ms

空间限制: 262144kB

题目描述

经过多年的杀戮,秦皇终于统一了中国。为了抵御外来的侵略,他准备在国
土边境安置n 名将军。
不幸的是这n 名将军羽翼渐丰,开始展露他们的狼子野心了。他们拒绝述职、
拒绝接受皇帝的圣旨。秦皇已经准备好了秘密处决这些无礼的边防大将。不过为
防兵变,他决定先授予这些将军一些勋章,为自己赢得战略时间。
将军们听说他们即将被授予勋章都很开心,他们纷纷上书表示感谢。第i 个
将军要求得到a
i枚不同颜色的勋章。但是这些将军都很傲气,如果两个相邻的将
军拥有颜色相同的勋章他们就会认为皇帝不尊重他们,会立即造反(编号为i 的
将军和编号为i+1 的将军相邻;因为他们驻扎的边境可以类似看成一个圆形,所
以编号1 和编号n的将军也相邻)。
皇帝不得不满足每个将军的要求,但对他们的飞扬跋扈感到很气愤。于是皇
帝决定铸造尽量少种类的勋章来满足这些狂妄者的要求。请问他至少要铸造多少
种颜色的勋章?

输入格式:

输入文件第一行有一个整数n(1<=n<=20000) 。
接下来n 行每行一个整数ai ,表示第i 个将军要求得到多少种勋章。
(1<=ai<=100000)

输出格式:

输出一个整数,即最少需要多少种勋章。

样例输入:

4
2
2
1
1

样例输出:

4

数据范围:

n<=20000
ai<=100000

时间限制:

1s

空间限制:

256M

主要思路:

首先,是二分,二分徽章的种类数。

check:

我们定义两个数组。

我们让奇数从n开始拿,偶数从1开始拿

f[i] = 1~i-1符合题目要求,i~i-1也符合要求,1和i最多重合几个徽章。

g[i] = 1~i-1符合题目要求,i~i-1也符合要求,1和i最少重合几个徽章。

接下来是转移:
我们知道,如果g[i-1]越小,则f[i] 越大。

那么f[i] = max(a[i],a[1]-g[i-1]);

相同的

g[i] = min(0,a[1]-(mid-a[1]-a[i-1])-f[i-1]);

然后return g[n] == 0;

最后就是这样的代码:
 

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n;
int a[100010];
int f[100010],g[100010];
bool check(int mid)
{f[1] = g[1] = a[1];for(int i=2;i<=n;i++){f[i] = min(a[i],a[1]-g[i-1]);g[i] = max(0LL,a[i]-(mid-a[1]-a[i-1])-f[i-1]);}return g[n] == 0;}
signed main()
{
//	freopen("sample (12).in","r",stdin);ios::sync_with_stdio(0);cin.tie(0);cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}int ans=0;for(int i=1;i<=n;i++){ans = max(a[i]+a[i+1],ans);}ans = max(ans,a[n]+a[1]);if(n%2 == 0){cout<<ans;return 0;}int l=ans,r=300000;int ans1=0;
//	cout<<check(150000);while(l<=r){int mid = (l+r)/2;
//		cout<<l<<' '<<r<<' '<<mid<<'\n';if(check(mid)){ans1 = mid;r = mid-1;}else{l = mid+1;}}cout<<ans1;return 0;
}

这篇关于ZJOI2006皇帝的烦恼的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/799026

相关文章

别为大文件烦恼!mp4文件太大怎么变小?3个管用方法

你是否曾经遇到过mp4视频文件过大的困扰?每当想要分享或存储mp4文件时,巨大的文件就成了阻碍。明明感觉感觉没占用多少空间,但是设备却常常出现空间过满警告。 没多少空间的设备真是让人大为恼火,没人想多花一份钱买设备。那么只能选择把文件变小,节省空间了。mp4文件太大怎么变小?在这篇文章中,我们将分享三种有效的方法,帮助你轻松解决mp4文件过大的问题。 还等什么呢?请屏幕外的读者和我们一起按步骤

uniapp树洞烦恼分享系统 微信小程序设计与实现 80igt

目录 博主介绍技术栈系统设计🌟文末获取源码+数据库🌟具体实现截图后端前端java类核心代码部分展示可行性论证个人心得系统测试操作可行性源码获取详细视频演示 博主介绍 👇🏻 博主介绍:👇🏻 专注于Vue Java、python nodejs php小程序技术领域和毕业项目实战✌全网粉丝50W+,博客专家、CSDN特邀作者、CSDN新星计划导师、全栈领域优质创作者,cs

告别文档处理烦恼,PDF Guru Anki一键搞定所有

前言 知识就像烛光,能照亮一个人,也能照亮无数人,科技之光更是如此;这一理念深刻地影响了我们如何看待和应用新技术。正是在这样的背景下,一款集PDF处理与高效学习工具于一体的软件——PDF Guru Anki应运而生,它不仅代表了技术创新的力量,更是开发者对提升用户工作学习效率的深刻洞察与不懈追求。 开发团队由一群热爱技术、勇于创新的专业人士组成。他们深知在信息化时代,处理PDF文档和学习管理已

分贝通助力云天励飞“甩掉”每月报销烦恼

技术创新和应用落地两手抓,已经是每一家人工智能企业突破瓶颈、快速发展的共同选择。可在组织的日常运营中,如何提升创新效率,保证项目建设又快又好完成,人效是关键。作为国内领先的人工智能企业,云天励飞率先选择从费用支出的角度寻找人效升级突破。 企业介绍 云天励飞成立于2014年8月,是拥有算法、芯片和大数据全栈式能力的人工智能企业。凭借“算法芯片化”的核心能力和“端云协同”的技术路线,云天励飞在智慧

BUUCTF派大星的烦恼

解压得到一张图片没啥有用信息 根据下面题目提示,用010editor打开图片发现一段16进制字符串 派大星最近很苦恼,因为它的屁股上出现了一道疤痕!我们拍下了它屁股一张16位位图,0x22,0x44代表伤疤两种细胞,0xf0则是派大星的赘肉。还原伤疤,知道是谁打的派大星!(答案为32位的一串字符串) 注意:得到的 flag 请包上 flag{} 提交 在010editor直接

HOJ 1876经理的烦恼

http://acm.hit.edu.cn/hoj/problem/view?id=1867 哎~这道题re了很多次。后来找到原因竟然是 #define maxn 1000010+5   的错误,因为这里的C++提交不支持 宏定义有+的运算改为     #define maxn 1000010就过了 解题思路:树状数组C[i]存的是A[i-lowbit[i]+1]~A[i]中的素数的个数。之

ios去水印软件免费版,精选五大高效工具,告别水印烦恼!

随着社交媒体的普及,越来越多的人喜欢在网络上分享自己的生活点滴。在分享视频时,水印往往会影响美观。为了帮助大家解决这个问题,本文为您推荐五大高效免费的iOS去水印软件,让您轻松告别水印烦恼! 软件一:奈斯水印助手(小程序) 推荐指数:☆☆☆☆☆ 奈斯水印助手是一款简单易用的去水印小程序,可以帮助用户快速去除视频中的水印。 特点: 1、操作简便,一键去除水印。 2、支持多种视频格式。

NYOJ 237 游戏高手的烦恼 POJ3041-Asteroids ( 二分图的最大匹配 )

链接: NYOJ 237  游戏高手的烦恼:click here~~ POJ  3041 Asteroids           :click here~~ 题意: 两题一样,翻译不同而已。 有一位传说级游戏高手,在闲暇时间里玩起了一个小游戏,游戏中,一个n*n的方块形区域里有许多敌人,玩家可以使用炸弹炸掉某一行或者某一列的所有敌人。他是种玩什么游戏都想玩得很优秀的人,所以,他决

直面问题,咱谈焦虑、谈烦恼、谈如何成长

前天,看了一场极客时间的直播《直面问题,咱谈焦虑、谈烦恼、谈如何成长》,大名鼎鼎的左耳朵耗子陈皓老师亲自坐镇直播间,主要分享了以下四个问题: 1、技术人员如何面对自己的焦虑烦恼? 2、程序员应该把哪些基础知识学扎实? 3、目前风口上的前沿技术都有哪些? 4、如何提升学习能力?  在学习的过程中,老师讲的内容很高大上,听完以后,更加地焦虑、烦恼,因为成长没有捷径,只有一步一步地付出。其中,

有了它,再也不用为客户管理而烦恼

在竞争激烈的市场环境中,有效的客户关系管理(CRM)系统是企业获取商机、提高成单效率的关键。搭贝CRM管理系统是基于市场业务需求量身定制的,通过记录客户360度画像和跟进信息,实现客户管理的精细化和高效流转。 🎯 客户信息追溯可视化 搭贝CRM系统提供多种看板,直观展示关键信息: 线索流向分配:清晰展示线索来源、分配给哪些个人、部门或公司,帮助团队实时掌握资源分配情况。客户计划:记录和