首页 > 其他分享 >CF1920 Codeforces Round 919 (Div. 2)

CF1920 Codeforces Round 919 (Div. 2)

时间:2024-03-21 22:22:06浏览次数:34  
标签:删除 CF1920 个数 Alice 919 数组 操作 Bob Div

B. Summation Game

给你 \(n\) 个数(均大于0),Alice先执行一次删除不超过 \(k\) 个数,Bob再执行一次把最多 \(x\) 个数变成相反数.

问最后数组的最大和是多少?

这题本来是想先让Alice删除 \(k\) 个数,但显然不太容易得到最优解,因为还有可能撤回Alice的删除操作,再加上Bob的操作.

那如果先让Bob操作 \(x\) 个数,再看这 \(x\) 个数中最大的是不是大于剩下的最大的数的二倍,是否可行?

比如Bob操作的最大的数a,剩下的最大的数是b,那么如果Alice把a删掉,得到的新的数组的和应该是原数组的和 \(s+a-2b\),那只需要看a和2b的大小关系就可以了.
然而这只对应一个数的情况,如果是多个数,就不奏效了.
如下:

8 5 3
2 3 3 3 5 5 9 9

正解应该删除两个9,然后Bob操作 3 5 5
按我们的算法,Bob先操作5 9 9,然后我们进行判断Alice是否要删除9,Alice不会进行删除操作,因为9<2*5

然而考虑每次操作两个数: (3+5)*2 < (9+9) ,因此得到错误答案.

所以其实际需要满足的大小关系是 \(\sum a \geq 2 * \sum b\) ,而不是仅考虑单个的数

Solution

正解 枚举Alice删除前i个数后,Bob删除前x个数

    for(int tk=0;tk<=k;tk++){
        ans = max(ans,sum[n - tk] - 2*(sum[n-tk] - sum[max(0ll,n-tk-x)]));
    }

标签:删除,CF1920,个数,Alice,919,数组,操作,Bob,Div
From: https://www.cnblogs.com/oijueshi/p/18088320

相关文章

  • Codeforces Round 935 (Div. 3)
    A.SettingupCamp#include<bits/stdc++.h>usingnamespacestd;usingi32=int32_t;voidsolve(){inta,b,c;cin>>a>>b>>c;intres=a+b/3;b%=3;if(b!=0){if(c<3-b){......
  • 1943+1944.Codeforces Round 934 (Div. 1,Div. 2) - sol
    20240321终于差不多把Div1补完了(F当然没补),第一次打Div1,还是出了一些小状况的。唉。没有补Div1F的逆天题,选择放弃。Dashboard-CodeforcesRound934(Div.2)-CodeforcesDashboard-CodeforcesRound934(Div.1)-Codeforces2A.DestroyingBridgesThere......
  • Educational Codeforces Round 163 (Rated for Div. 2)
    Preface这周很奇怪,连着计网、数据库、组合数学的课都莫名其妙不上了,突然变得很空闲了的说正好有空赶紧补补题,不然接下来有很多造题/比赛的任务搁置着就忘记了A.SpecialCharacters签到,\(n\)是偶数才有解,构造的话注意到一个AAB可以产生\(2\)的贡献,把\(\frac{n}{2}\)个AAB拼起......
  • Tree Compass Codeforces Round 934 (Div. 2) 1944E
    Problem-E-Codeforces题目大意:有一棵n个点的树,初始状态下所有点都是白色的,每次操作可以选择一个点u和一个距离dis,使得距离点u所有长度为dis的点变为黑色,问最少需要多少次操作能使所有点变成黑色,输出所有操作1<=n<=2000思路:要想操作数最少,就要使每次操作涂黑的点的数量尽......
  • HDU 1059 Dividing
    题目传送门:Problem-1059(hdu.edu.cn)问题描述玛莎和比尔拥有一些弹珠。他们希望在自己之间分配收藏品,以便双方都获得平等的弹珠份额。如果所有弹珠都具有相同的价值,这将很容易,因为这样他们就可以将收藏品分成两半。但不幸的是,有些弹珠比其他弹珠更大或更漂亮。因此,Marsha......
  • linux 中shell脚本中遇到 Runtime error (func=(main), adr=22): Divide by zero
    在Linux中编写Shell脚本时,遇到“Runtimeerror(func=(main),adr=22):Dividebyzero”这样的错误通常是因为在脚本中进行了除以零的操作,类似于编程语言中的除零错误。要解决这个问题,您需要检查Shell脚本中涉及到除法运算的地方,确保分母不为零。下面是一个示例S......
  • Codeforces Round 935 (Div. 3) A-G
    A传送门  先考虑无解情况,外在人的数量如果%3之后还剩下x人,只能靠第三类综合性人y来补充进去,如果x+y小于3则无解,有解只需要向上取整即可。#include<bits/stdc++.h>usingll=longlong;typedefstd::pair<int,int>PII;typedefstd::array<int,4>ay;constintN=......
  • codeforce Round 935 div3 个人题解(A-E)
    A.SettingupCamp时间限制:每个测试1秒内存限制:每个测试256兆字节输入:标准输入输出:标准输出组委会计划在游览结束后带领奥林匹克运动会的参赛选手进行徒步旅行。目前,正在计算需要搭帐篷的数量。已知每顶帐篷最多可容纳3人。在参赛选手中,有a个内向型,b个外向型和c个综合型:......
  • Codeforces Round 923 (Div. 3) D. Find the Different Ones!
    写点简单的思维题https://codeforces.com/problemset/problem/1927/D思路:用两个数组,一个存储原始数据,一个用nex存该位置第一次不一样的下标#include<iostream>#include<vector>#include<algorithm>#include<math.h>#include<sstream>#include<string>#include<str......
  • Codeforces Round 920 (Div. 3)----->E. Eat the Chip
    一,思路:1.这是一道博弈论的题目(两个人都绝顶聪明,所以每个人都会按最优方案进行)。这题你会发现,两个人从一开始就已经确定了结局。2.如假如他们俩的棋子在竖直方向上距离相差的值是偶数,那么一定就两个结果Alice赢或者平局,反之奇数则是Bob赢或者平局(仔细分析一下就能得知)。3.所......