首页 > 其他分享 >AtCoder Beginner Contest 240 F

AtCoder Beginner Contest 240 F

时间:2023-03-14 19:47:34浏览次数:55  
标签:pre AtCoder Beginner int max else 240 ans

ABC 240

F

思路

维护前缀和B,以及B的前缀和C,然后在每次添加连续y个x的时候,从中找出最大的\(C_i\)(用pre记录),更新答案。
有四种情况
\(B\geq 0,x>0\) 那么新出现的\(C_i\)中的最大值就在最后一个元素
\(B\geq0,x<0\) 新出现的\(c_i\)中最大值即\(C_k,k=min(\frac {B}{-x},y)\)
\(B<0,x>0\) 如果画个图出来,C就是个开口向上的二次函数,两个端点取max
\(B<0,x<0\) 这个不用变,加了就变小不如不加

代码

void solve() 
{
	cin>>n>>m;
	int b=0,c=0,ans=-1e18,pre=0;
	for(int i=1;i<=n;i++) 
	{
		int x,y;
		cin>>x>>y;
		if(i==1)//特判一下,因为不知道怎么设初值
		{
			if(x>=0) ans=x*y*(y+1)/2;
			else ans=x;
			c+=b*y+(y+1)*y/2*x;
			b+=x*y;
			continue;
		}
		if(b>=0) 
		{
			if(x>=0) pre =c+b*y+(y+1)*y/2*x;
			else 
			{
				int k=min(y,-b/x);
				pre=c+b*k+(k+1)*k/2*x;
			}
		}
		else pre=max(c,c+b*y+(y+1)*y/2*x);
		ans=max(ans,pre);
		c+=b*y+(y+1)*y/2*x;
		b+=x*y;
	}
	cout<<ans<<endl;
	

标签:pre,AtCoder,Beginner,int,max,else,240,ans
From: https://www.cnblogs.com/LIang2003/p/17216047.html

相关文章

  • atcoder ABC
    Ex-OptimalPathDecomposition题目只能给链染色,问你最短的(两点距离最大值),距离为不同颜色个数f[u],g[u],f表示u可以和father同一个颜色,g表示不可以。转移记录三个值。......
  • AtCoder Beginner Contest 272(D,E)
    AtCoderBeginnerContest272(D,E)DD这个题最主要的是需要找出有哪些移动的距离对于题目给出的\(m\),我们的移动过程可以是\((i-ii)^2+(j-jj)^2=m\)这样的话,我们可以......
  • AtCoder Beginner Contest 292-C D E
    C.FourVariables从正整数中,找出合适的ABCD,使得这个式子成立\(AB+CD=N\)。可以看到,A与B是相互关联的,C与D是相互关联的,所以我们可以在小于N的正整数中,找寻可以相加的两个......
  • Atcoder-ABC291 "Teleporter and Closed off" 动态DP版
    题目地址题意:在一个DAG图中,点i只有最多m条出边连向i+1~i+m(m<=10),边权均为1。对于\(k\in[2,n-1]\),依次输出当点k被删除时1到n的最短路。分析:标准做法无非就是预......
  • 容斥定理 AtCoder——FizzBuzz Sum Hard
    题目传送门ProblemStatementFindthesumofintegersbetween 1 and N(inclusive)thatarenotmultiplesof Aor B.Constraints1≤N,A,B≤109 Allvalue......
  • AtCoder Beginner Contest 292
    A-CAPSLOCK#include<bits/stdc++.h>usingnamespacestd;int32_tmain(){strings;cin>>s;for(autoi:s)cout<<char(i-'a'+......
  • AtCoder Beginner Contest 292
    《E-Transitivity》   这道题首先要看一下自己有没有理解错题意:      问:点2和点3之间要连边吗? 答案是不需......
  • AtCoder Regular Contest 131(A,B,C)
    AtCoderRegularContest131(A,B,C)AA这个大意就是很容易做出来,只是有一点要注意,对于第二个字符串,如果小于\(2\),那么比如\(1\),,这些可能是进位形成的,所以我们需要补一......
  • AtCoder Beginner Contest 292
    A-CAPSLOCK(abc292a)题目大意给定一个小写字母串,将其转换成大写字母。解题思路调库,或者按照ascii码转换即可。神奇的代码#include<bits/stdc++.h>usingname......
  • AtCoder Beginner Contest 252
    AtCoderBeginnerContest252D题意在数组中形如\(1\leqi<j<k\leqn\)使得\(a_i,a_j,a_k\)互不相同,求共有多少组满足条件思路它的数据范围\(1\leqa_i\leq2*10^5\)......