首页 > 其他分享 >CF922 div2 D. Blocking Elements

CF922 div2 D. Blocking Elements

时间:2024-02-02 11:34:38浏览次数:23  
标签:Elements return ll int rep cin CF922 Blocking define

题面

image

代码

点击查看代码
#include<bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define rep(i,a,n) for(int i=a;i<=n;i++)
#define per(i,a,n) for(int i=n;i>=a;i--)
#define endl "\n"
#define fi first
#define se second 
#define pb push_back
#define mid (l+r)/2
#define ls i<<1
#define rs i<<1|1
using ll=long long;
using pii=pair<int,int>;
using pll=pair<ll,ll>;
#define N 100100
ll dp[N],s[N],t[N<<2];
int a[N],n;
ll sum(int l,int r){
	if(l>r) return 0;
	return s[r]-s[l-1];
}
int find(int ri,ll x){
	int l=0,r=ri-1;
	int ans=-1;
	while(l<=r){
		//cout<<l<<" "<<r<<endl;
		//return -1;
		if(sum(mid+1,ri-1)<=x) ans=mid,r=mid-1;
		else l=mid+1;
	}
	return ans;
}
void pu(int i){
	t[i]=min(t[ls],t[rs]);
}
void cha(int i,int l,int r,int pos,ll k){
	if(l==r&&r==pos){
		t[i]=k;return;
	}
	if(pos<=mid) cha(ls,l,mid,pos,k);
	else cha(rs,mid+1,r,pos,k);
	pu(i);
}
ll que(int i,int l,int r,int cl,int cr){
	//cout<<l<<" "<<r<<endl;
	if(l>=cl&&r<=cr) return t[i];
	if(l>cr||r<cl) return 1e15;
	return min(que(ls,l,mid,cl,cr),que(rs,mid+1,r,cl,cr));
}
bool check(ll x){
	cha(1,0,n+1,0,0);
	rep(i,1,n+1){
		int idx=find(i,x);
		//cout<<i<<" "<<x<<" "<<idx<<endl;
		dp[i]=a[i]+que(1,0,n+1,idx,i-1);
		//cout<<que(1,0,n+1,idx,i-1)<<" "<<dp[i]<<endl;
		cha(1,0,n+1,i,dp[i]);
	}
	if(dp[n+1]>x) return false;
	else return true;
}
void solve(){
	rep(i,1,n+1) a[i]=0;
	rep(i,1,4*n+100) t[i]=1e15;
	cin>>n;
	rep(i,1,n) cin>>a[i],s[i]=s[i-1]+a[i];
	ll l=1,r=1e14+10;
	ll ans=-1;
	while(l<=r){
		//cout<<l<<" "<<r<<endl;
		if(check(mid)) ans=mid,r=mid-1;
		else l=mid+1;
	}
	cout<<ans<<endl;
}
int main(){
	IOS
	int t=1;cin>>t;
	while(t--) solve();
	return 0;
}
/*
3
6
1 4 5 3 3 2
5
1 2 3 4 5
6
4 1 6 3 10 7

1
6
1 4 5 3 3 2
*/

标签:Elements,return,ll,int,rep,cin,CF922,Blocking,define
From: https://www.cnblogs.com/shyiaw/p/18002861

相关文章

  • ArrayBlockingQueue使用
    packageorg.example;importjava.util.ArrayList;importjava.util.List;importjava.util.concurrent.ArrayBlockingQueue;/***用数组实现的阻塞队列*/publicclassArrayBlockingQueueDemo{ArrayBlockingQueuequeue=newArrayBlockingQueue(3);volat......
  • D. Blocking Elements
    D.BlockingElementsYouaregivenanarrayofnumbers$a_1,a_2,\ldots,a_n$.Yourtaskistoblocksomeelementsofthearrayinordertominimizeitscost.Supposeyoublocktheelementswithindices$1\leqb_1<b_2<\ldots<b_m\leq......
  • 记录一下 ArrayBlockingQueue 消息堆积的问题
    前言由于之前这个系统的日志记录是被领导要求写表的,在不影响系统性能的前提下,日志的入库操作肯定是要改成异步进行的,当时利用ArrayBlockingQueue+线程+AOP简单的去实现了一下,但是初版代码测试下来发现了一个很严重的问题,就是日志丢失的问题,本文由此而来。初步构思代码实现逻辑实......
  • CF1795F Blocking Chips
    题意给定一棵大小为\(n\)的树,有\(k\)个人,第\(i\)个人在节点\(a_i\)。从第\(1\)秒开始,依次操作第\(1,2,3,\ldots,k,1,2,3,\ldots,k,\ldots,k,\ldots\)个人,把这个人移动到没有走过的点。Sol调了\(3h\),给哥们整吐了。不难想到二分答案时间,算出每个人走......
  • Angular 17+ 高级教程 – Component 组件 の Query Elements
    前言Angular是MVVM框架。MVVM的宗旨是"不要直接操作DOM"。在 Component组件のTemplateBindingSyntax文章中,我们列举了一些常见的DOMManipulation。constelement=document.querySelector<HTMLElement>('.selector')!;element.textContent='value';......
  • CompletableFuture + LinkedBlockingDeque 实现生产者消费者案例
    设计要求:1.设计一个生产者生产,消费者消费场景;2.使用线程池 CompletableFuture+队列LinkedBlockingDeque实现;3.生产者生产的数据存储到长度为5的LinkedBlockingDeque队列,消费者消费从LinkedBlockingDeque队列中取数据;4.生产者和消费者均是多线程且不知道谁快谁慢,互......
  • Adobe Photoshop Elements 2024 v24.0 简体中文版 | 中文直装版
    下载:资源下载介绍:PhotoshopElements2024(简称PSE即PS简化版)是一款定位在数码摄影领域的全新的图像处理软件,该软件包括了专业版的大多数特性,只有少量的简化选项,提供了调整颜色和光线,去除划痕,修复旧照片,打开闭合的眼睛等实用功能,非常方便。除此之外,这款软件操作简单,使用方......
  • 16.What are the basic elements of an argument according to Toulmin Model? How do
    Round1:UnderstandingtheBasicElementsofToulminModelSpeaker1(StudentA):Hello,everyone!Let'sstartbydiscussingthebasicelementsoftheToulminModelofargumentation.AccordingtoToulmin,anargumentconsistsofthreemaincomponents......
  • PriorityBlockingQueue 优先级队列
    packagestudy;importlombok.Data;importjava.util.Comparator;importjava.util.concurrent.PriorityBlockingQueue;publicclassPriorityBlockingQueueDemo{publicstaticvoidmain(String[]args)throwsInterruptedException{PriorityBlocki......
  • 阻塞队列之 LinkedBlockingQueue
    LinkedBlockingQueue:Java多线程编程中的阻塞队列在Java多线程编程中,LinkedBlockingQueue是一个非常重要的类,它提供了一种用于在生产者和消费者之间进行数据传递的机制。LinkedBlockingQueue广泛应用于各种场景,如线程池、任务队列等。本文将详细介绍LinkedBlockingQueue的原理......