首页 > 其他分享 >Codeforces Round 677 (Div. 3) C. Dominant Piranha

Codeforces Round 677 (Div. 3) C. Dominant Piranha

时间:2023-10-13 19:14:32浏览次数:34  
标签:std 吃掉 Dominant 一只 水虎鱼 677 Codeforces 主导 大小

有 \(n\) 只水虎鱼在水族馆,大小为 \(a_1, a_2, \cdots, a_n\) 。

一只水虎鱼被称为是主导的,当它可以吃掉水族馆中其他所有水虎鱼。其他水虎鱼不会有任何行动。

一只水虎鱼只可以吃掉当前与它相邻并且体型严格比它小的水虎鱼。当大小为 \(x\) 的水虎鱼吃掉大小为 \(y\) 的水虎鱼时,主导与的大小会变为 \(x + y\) 。

给出 \(a_1, a_2, \cdots, a_n\) ,询问是否存在一只主导鱼。并输出任一只可能的主导鱼的初始位置。

当所有水虎鱼的大小相等,显然不存在一只主导鱼。
否则存在一个位置 \(x\) 。满足\(a_x\) 最大,且 \(a_{x -1}\) 或 \(a_{x + 1}\) \(< a_x\) 。当 \(a_x\) 吃掉比它更小的一只鱼后,相邻的鱼永远 \(< a_x\) 。

view
#include <bits/stdc++.h>
typedef long long ll;
void solve(){
	int n; std::cin>> n;
	std::vector<int> a(n+1);
	for (int i = 1; i <= n; i++) std::cin >> a[i];
	if (std::count(a.begin() + 1, a.end(), a[1]) == n) std::cout << -1 << "\n";
	else {
		int mx = *std::max_element(a.begin() + 1, a.end());
		for (int i = 2; i < n; i++) {
			if (a[i] == mx) {
				if (a[i - 1] < a[i] || a[i + 1] < a[i]) {
					std::cout << i << "\n";
					return;
				}
			}
		}
	}
}
int main() {
	int _ = 1; std::cin >> _;
	while (_--) {solve();}
	return 0;
}

标签:std,吃掉,Dominant,一只,水虎鱼,677,Codeforces,主导,大小
From: https://www.cnblogs.com/zsxuan/p/17762928.html

相关文章

  • Codeforces 512D. Fox And Travelling 题解
    FoxAndTravelling题面翻译给定一张\(n\)个点\(m\)条边的无向图。一个点只有当与它直接相连的点中最多只有一个点未被选择过时才可被选择。询问对于每个\(k\in[0,n]\),有序选择\(k\)个点的方案数。\(n\le100\),\(m\le\frac{n(n-1)}2\),答案对\(10^9+9\)取模。......
  • Codeforces Round 684 (Div. 2) B. Sum of Medians
    定义\(median\)是一个非降序数组中第\(\lceil\frac{n}{2}\rceil\)的数。数组从\(1\)开始标号。给两个数\(n\)和\(k\),并给出一个长为\(nk\)的数组\(a\)。需要分出为\(k\)个大小为\(n\)的数组,每个元素需要被严格分入一个数组中。需要让\(k\)个数组的中位数......
  • Codeforces Round 685 (Div. 2) B. Non-Substring Subsequence
    对于一个长为\(n\)的\(01\)字符串\(s\)有\(n\)个询问。第\(i\)个询问被\(l_i,r_i\)描述\(1\leql_i<r_i\leqn\)。对于每个询问,你需要确定\(s\)中是否存在一个子序列等同于子串\(s[l_i\cdotsr_i]\)。显然子序列可以和子串仅有一个字符不相同。于是\(s......
  • Codeforces Round 690 (Div. 3) C. Unique Number
    给一个正整数\(x\),需要构造一个最小的正整数\(n\)使得\(\sumdigt(n)=x\),并且\(\foralli\neqj,digt(n)_i\neqdigt(n)_j\)。首先观察到\(0\)没有贡献,且会增加位数,所以不能有\(0\)。由于每个数位只能出现一次,显然合法的\(x\)范围为\([0,\sum_{i=1}^{9}i]......
  • Codeforces Round 695 (Div. 2) A. Wizard of Orz
    有\(n\)个数位板摆放成一条直线,每个数位板可以显示\(0\sim9\)的数字。最开始数位板显示的是\(0\)。每秒数位板上的数字都会加\(1\),\(9\)的下一个数字是\(0\)。当一个数位板被暂停,它上面的数字将会定格在当前秒。你必须对某个数位板执行一次暂停,在任意可选的时刻。......
  • Educational Codeforces Round 156 (Rated for Div. 2) A-E
    A题签到题分余1余2余0讨论 #include<bits/stdc++.h>usingnamespacestd;#definemaxn400100#defineintlonglongintread(){intans=0,f=1;charch=getchar();while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}......
  • Codeforces Round 694 (Div. 2) A. Strange Partition
    给一个长为\(n\)的数组\(a\)和一个正整数\(x\)。你可以执行以下操作任意次:用两个相邻元素的和替换这两个元素。如\([\cdots,a_i,a_{i+1},\cdots]\rightarrow[\cdots,a_i+a_{i+1},\cdots]\)。一个数组\(b=[b_1,\cdots,b_k]\)的美丽值定义为\(\sum_{i=1}^{k}......
  • Codeforces Round 697 (Div. 3) A. Odd Divisor
    给一个正整数\(n\),判断\(n\)是否存在一个\(>1\)的奇数因子。只要\(n\)的唯一分解下存在除\(2\)以外的质因子,则\(n\)存在\(>1\)的奇数因子。于是\(n\neqlowbit(n)\)则\(n\)存在奇数因子。(应用了\(2^k=lowbit(2^k)\)的性质)view#include<bits/stdc+......
  • Codeforces Round 703 (Div. 2) A. Shifting Stacks
    给定\(n\)个石堆,第\(i\)个石堆高为\(h_i\)并且代表这堆石块的个数。在一次操作中你可以将第\(i\)堆中的一块石块移动(需要存在石块)到\(i+1\)堆。询问是否可以使石堆的高度严格递增。显然贪心地让第\(1\)堆的高度为\(0\)。然后线性模拟使得第\(1\simn-1\)的......
  • Codeforces Round 899 (Div. 2)
    目录写在前面ABCDE1E2写在最后写在前面比赛地址:https://codeforces.com/contest/1882。你知道我要在这里放一首由日本女歌手演唱的歌曲:一个队友去医院一个队友军训,堂堂单刷!感觉开场5h太浪费了于是找了场div2,然后C不会做卡了1h,妈的。看完题解立马会了,我果然是没脑子选......