首页 > 其他分享 >P4734 [BalticOI 2015] Hacker

P4734 [BalticOI 2015] Hacker

时间:2024-09-09 19:35:51浏览次数:3  
标签:Hacker lceil frac int ll st MAXN BalticOI 2015

题目大意

详细题目传送门

思路

对于这种题目一般可以先断环成链。

发现先手所得到的值是一个长度为 \(\lceil \frac{n}{2}\rceil\) 的区间,我们希望让它的元素之和能取到最大,但发现后手会让我们取不到最大。

假设我们从第 \(i\) 台电脑开始,那么后手一定会让我们取到一个所有经过这个点的区间之和的最小值。所以我们只要让这个最小值最大即可。

对于做法先做一个前缀和,之后用 ST 表记录从这个点开始的长度为 \(\lceil \frac{n}{2}\rceil\) 的区间元素之和,然后枚举每一个电脑 \(i\),能够经过它的区间起始位置在 \([i-\lceil \frac{n}{2}\rceil+1,i]\) 之间。

代码

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll MAXN=1e6+5;
ll n,a[MAXN],f[MAXN];
ll st[MAXN][20],lg[MAXN];
ll query(ll l,ll r){
	ll len=lg[r-l+1];
	return min(st[l][len],st[r-(1<<len)+1][len]);
}
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);cout.tie(0);
	cin>>n;
	for(int i=1;i<=n;++i){
		cin>>a[i];
		a[n+i]=a[i];
	}
	for(int i=1;i<=2*n;++i){
		f[i]=f[i-1]+a[i];
	}
	ll sa=ceil(n*1.0/2);
	for(int i=2;i<MAXN;++i){
		lg[i]=lg[i>>1]+1;
	}
	for(int i=1;i<=2*n;++i){
		st[i][0]=f[i+sa-1]-f[i-1];
	}
	for(int l=1;l<=lg[2*n];++l){
		for(int i=1;i+(1<<l)-1<=2*n;++i){
			st[i][l]=min(st[i][l-1],st[i+(1<<(l-1))][l-1]);
		}
	}
	ll ans=0;
	for(int i=sa;i<=2*n;++i){
		ans=max(ans,query(i-sa+1,i));
	}
	cout<<ans<<endl;
	return 0;
}

标签:Hacker,lceil,frac,int,ll,st,MAXN,BalticOI,2015
From: https://www.cnblogs.com/tanghg/p/18405161/solution-p4734

相关文章

  • 【SHOI2015】自动刷题机
    一道朴素的二分题,二分的基础很不好所以选择了这道本道题主要进行二分的考察容易发现,对于给定的序列,n越大能过的题是越少的,所以可以二分来求刚好过k道题的左右边界。若mid大于k,即做得太多了,就将l右移。若mid小于k,即做得太少了,就将r左移。代码实现:#include<bits/stdc++.h>u......
  • 中国农作物分布地图(2015-2021年)
    中国是世界人口最多的国家,在全球谷物生产方面排名第一。通过多样化作物种类的多熟制种植,可以显著增加农作物产量,并减少相关的环境影响。全球约12%的农田实行多熟制,其中34%的水稻地采用多熟制系统。中国用仅占全球7%的耕地养活了世界20%的人口。中国约三分之一的农田种植多熟作物,这......
  • 洛谷 P6419 [COCI2014-2015#1] Kamp
    洛谷P6419[COCI2014-2015#1]Kamp题意一颗树\(n\)个点,\(n-1\)条边,经过每条边都要花费一定的时间,任意两个点都是联通的。有\(K\)个人(分布在\(K\)个不同的点)要集中到一个点举行聚会。聚会结束后需要一辆车从举行聚会的这点出发,把这\(K\)个人分别送回去。请你回答,对......
  • 修复Microsoft Visual C++ 2015中msvcp140_ATOMIC_WAIT.dll缺失的5大策略
    在电脑使用过程中,我们经常会遇到一些错误提示,其中之一就是“msvcp140_ATOMIC_WAIT.dll丢失”。这个错误提示通常出现在运行某些程序或游戏时,给使用者带来了很大的困扰。那么,如何解决这个问题呢?一,原因分析msvcp140_ATOMIC_WAIT.dll是MicrosoftVisualC++2015运行时库的一部......
  • 信息学奥赛初赛天天练-81-NOIP2015普及组-完善程序-二分答案、二分查找、中位数、二分
    1完善程序(单选题,每小题3分,共30分)中位数median给定n(n为奇数且小于1000)个整数,整数的范围在0∼m(0<m<2^31)之间,请使用二分法求这n个整数的中位数。所谓中位数,是指将这n个数排序之后,排在正中间的数。(第五空2分,其余3分)01#include<iostream>02usingnamespace......
  • 信息学奥赛初赛天天练-80-NOIP2015普及组-基础题5-错位排列、二叉树、完全二叉树、叶
    NOIP2015普及组基础题521重新排列1234使得每一个数字都不在原来的位置上,一共有()种排法22一棵结点数为2015的二叉树最多有()个叶子结点2相关知识点1)错位排列考虑一个有n个元素的排列,若一个排列中所有的元素都不在自己原来的位置上,那么这样的排列就......
  • P3320 [SDOI2015] 寻宝游戏 与 P10930 异象石 与 CF176E Archaeology
    思路:考虑按照dfn序将关键点的集合排序后为\(a_0,a_1,\cdots,a_k\),则答案为:\[\frac{\sum\limits_{i=0}^k\operatorname{dis}(a_i,a_{(i+1)\bmodk})}{2}\]简单证明一下:需要找出包含一些关键点的最小联通导出子图。则随便以一个关键点为根,对于子树内没有关键点的子树直接......
  • 洛谷 P2680 [NOIP2015 提高组] 运输计划
    洛谷P2680[NOIP2015提高组]运输计划题意给出一棵树和\(m\)条路径,可以选择一条边,把边权改为\(0\),求\(m\)条路经长度最大值的最小值。思路看到最大值最小,可以想到二分答案,答案具有单调性。考虑如何判定答案\(x\)是否可行。统计所有长度大于\(x\)的路径,统计它们共......
  • 信息学奥赛初赛天天练-78-NOIP2015普及组-基础题3-中断、计算机病毒、文件传输协议FTP
    NOIP2015普及组基础题38所谓的“中断”是指()A操作系统随意停止一个程序的运行B当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的过程C因停机而停止一个程序的运行D电脑死机9计算机病毒是()A通过计算机传播的危害人体健康的一种......
  • P1955 [NOI2015] 程序自动分析
    算法1(离散化+并查集)没想到的点:由于数据范围很大1e9,因此需要采用离散化,从而降低时间复杂度主要思想1.约束条件有相等/不相等,不难发现,相等的约束条件是属于一个集合的--因此需要用到并查集思想我们按照e的大小进行排序,从而完成先处理e=1的所有情况3.并查集:初始化:一......