首页 > 其他分享 >Educational Codeforces Round 151 (Rated for Div. 2) D. Rating System

Educational Codeforces Round 151 (Rated for Div. 2) D. Rating System

时间:2023-07-07 21:01:13浏览次数:48  
标签:151 Rating Educational 前缀 int sum ans include mx

贪心

由题可得,对于k的选择一定是单调递增的,对于前面选定的k后面选的k必须大于之前选的才会发生新的变化,因此k的选择其实是一个单调栈,由前缀和组成

我们要想最后的结果最大,则k值一定要尽可能的高,例如当选中i为k值时,如果从i后面某个原本的前缀和要大于选k之后所得到的前缀和的话,说明k不是最优的

可以证明,假设选k为最优的,然后某个原本的前缀和为u,选k对应的前缀和为w,u>w,则在u这个位置如果选u的话,则后面的下限为u要大于k,因此k不是最优的,反之如果k是最优的,则保证了从k开始所有的u<=w

 

#include <iostream>
#include <cstring>
#include <string>
#include <algorithm>
#include <cmath>
#include <set>
#include <utility>
#include <vector>
#include <queue>
#include <map>
using namespace std;
typedef long long ll;
const int N=3e5+10;
int n,t;
void solve(){
	cin>>n;
	ll sum=0,k=0,ans=0;
	ll mx=0;
	for(int i=1;i<=n;i++){
		int x;
		cin>>x;
		sum+=x;
		mx=max(mx,sum);//单调递增 
		ans+=x;//选了对应k之后的值 
		if(ans<k) ans=k;
		if(ans<mx){//如果原值大于对应k的值,说明下限还可以增大 
			ans=mx;
			k=mx;
		}
		
	}
	cout<<k<<endl;
	
	
}
int main(){
	ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
		cin>>t;
		while(t--){
		solve();
	}
}

 

标签:151,Rating,Educational,前缀,int,sum,ans,include,mx
From: https://www.cnblogs.com/liyiyang/p/17536045.html

相关文章

  • Educational Codeforces Round 151 (Rated for Div. 2) C. Strong Password
    题目翻译,给定t组数据,每组数据包含一个字符串s,两个长度为m的字符串l和r,要求判断是否存在一个长度为m的字符串res,满足l[i]<=res[i]<=r[i](i->0~m)且不是s的子序列贪心首先对于所有满足l<res<r的字符串,我们只需判断是否存在一个字符串不是子序列即可,那么我们让res成为子序列的可能......
  • 2023-06-04-Generating-Function-Editor
    You'regrowingdesperatefromthefight.基本策略已知系数的幂级数首先是一些可以通过整体法得到封闭形式的幂级数,所谓整体法,即是通过将幂级数位移,用自己表示自己然后做差。\[\begin{aligned}\left\langle1,1,1,1,1,\dots\right\rangle&\rightarrow\frac{1}{1......
  • 2023-05-20-Probability-Generating-Function
    It'stimetorollthedice.\(\mathtt{Definition}\)令\(X\)为取值非负的随机变量,那么\(X\)的概率生成函数\(\mathtt{Probability\Generating\Function}\)为\[\begin{aligned}G_x(z)=\sum_{k\ge0}\mathrm{Pr}(X=k)z^k\end{aligned}\]根据上式可以得知......
  • Educational Codeforces Round 150 A~D
    c题好难。A.GamewithBoardProblem-A-Codeforces题意给定若干个数字1,Alice和Bob每回合合并两个相同的数字,Alice先手。如果谁最先不能合并数字,谁就胜利。思路通过推导可以看出\(n<5\)时先手必输,否则先手胜利的策略是取得只剩下两个数字可以合并。代码voidsolve(){......
  • 在Vscode使用命令npm报错-The operation was rejected by your operating system. npm
    报错信息:PSD:\disk\xubo\个人博客文章\27-Vue\资料(含课件)\vuedemo\vueproject>npmipubsub-jsnpmERR!codeEPERMnpmERR!syscallopennpmERR!pathD:\disk\soft\node.js\node_cache_cacache\index-v5\1d\32\0400202fc22af03ff2926f006e455fe92c77b8136b8fbe......
  • Educational Codeforces Round 151 (Rated for Div. 2)
    Preface期末考终于结束了,终于可以回来写题了这场是刚考完最后一门的那个晚上打的,因为太久没有写代码了所以不是很熟练而且脑子也不太灵光,只能堪堪写到D题而且手速感人上次CF第二个号因为Rating被roll了导致从紫名掉下来了,这场就把它又打上去了,再这样后面兴许要用第三个号打了......
  • Educational Codeforces Round 151 [div.2 #A-C] 赛后总结(contest/1845)
    link\(\textcolor{lightgreen}{A}-\textcolor{yellow}{B}-\textcolor{yellow}{C}-\textcolor{red}{D}-\textcolor{red}{E}-\color{red}{F}\)A给你一个数n,在给你一个数列1~k,其中x不能用,然后用其他的数任意累加,如能得到n,输出所用数字数量和具体数列。一眼分类。先分是......
  • Educational Codeforces Round 151 F. Swimmers in the Pool
    一.前言本来打算打打这个比赛玩玩,结果同学找我打游戏王去了,就没打现场(逃)因为是一道不错的数学题,来写写补题的题解这里点名批评@HOLIC喂给我的假题意,让我查错大半天,最后发现题意错了还重新推了好多东西,拳头都硬了等会儿顺便分享下假题意的一种做法二.正文简单题意:有n个......
  • Educational Codeforces Round 151 (Rated for Div. 2)(C,D)
    EducationalCodeforcesRound151(RatedforDiv.2)(C,D)C(dp,子序列自动机)C题目大意就就是给你一个字符串\(s\),还给出两个边界字符串\(l\)和\(r\),长度为\(m\),问我们是否可以构造满足一下条件的字符串\(1\),第\(i\)个字符必须在\(l_i\)和\(r_i\)的双闭区间里面\(2\),......
  • Educational Codeforces Round 151 (Rated for Div. 2) A~D
     A.ForbiddenInteger模拟:voidsolve(){intn,k,x;cin>>n>>k>>x;if(x!=1){cout<<"YES\n"<<n<<"\n";for(inti=1;i<=n;i++)cout<<"1"<<"\n"......