原题链接: https://codeforces.com/contest/1433/problem/C


测试样例

input
6
5
5 3 4 4 5
3
1 1 1
5
4 4 3 4 4
5
5 5 4 3 2
3
1 1 2
5
5 4 3 5 5
output
3
-1
4
3
3
1

Note

The first test case of the example is described in the problem statement.

In the second test case of the example, there are no dominant piranhas in the aquarium.

In the third test case of the example, the fourth piranha can firstly eat the piranha to the left and the aquarium becomes [4,4,5,4], then it can eat any other piranha in the aquarium.

题意: 在一个鱼缸中有nnn条食人鱼,它们从111到nnn依次编号排列,其中尺寸为aia_iai​,有这样的规则,若食人鱼的尺寸大于旁边的一条食人鱼的尺寸,那么这条食人鱼就可以吃了它并尺寸+1+1+1。请你找到一个优势食人鱼。(即经过一系列操作,这条食人鱼是最终活下来的食人鱼。)

解题思路: 这道题千万别被样例骗了。我们首先要知道什么时候无解,是不是当所有食人鱼尺寸都相同时无解,那么其他情况是不是都有解呢?当然是,我们总能证明可以不断使得一条尺寸最大的食人鱼逐渐吃了其他的所有食人鱼。那么我们关键要找到这一条食人鱼。 那么为了答案的正确性,即通解,我们肯定是让强者更强,试想:我们如果让原先最大尺寸的食人鱼再吃一条,它是不是要比其它的所有食人鱼都要大了?那么结果是不是就出来了?我们只要找到一条最大尺寸的食人鱼且它可以吃掉旁边的任意一只食人鱼即可。那么遍历判断即可得出答案。

AC代码

/*
*邮箱:unique_powerhouse@qq.com
*blog:https://me.csdn.net/hzf0701
*注:文章若有任何问题请私信我或评论区留言,谢谢支持。
*
*/
#include<bits/stdc++.h> //POJ不支持#define rep(i,a,n) for (int i=a;i<=n;i++)//i为循环变量,a为初始值,n为界限值,递增
#define per(i,a,n) for (int i=a;i>=n;i--)//i为循环变量, a为初始值,n为界限值,递减。
#define pb push_back
#define IOS ios::sync_with_stdio(false);cin.tie(0); cout.tie(0)
#define fi first
#define se second
#define mp make_pairusing namespace std;const int inf = 0x3f3f3f3f;//无穷大
const int maxn = 3e5+2;//最大值。
typedef long long ll;
typedef long double ld;
typedef pair<ll, ll>  pll;
typedef pair<int, int> pii;
//*******************************分割线,以上为自定义代码模板***************************************//int t,n;
ll a[maxn];
int main(){//freopen("in.txt", "r", stdin);//提交的时候要注释掉IOS;while(cin>>t){while(t--){cin>>n;rep(i,1,n){cin>>a[i];}ll maxx=a[1];int ans=1;//统计是不是所有的元素值相同。rep(i,2,n){maxx=max(maxx,a[i]);if(a[i]==a[1])ans++;}if(ans==n){cout<<-1<<endl;continue;}//接下来遍历。rep(i,1,n){//对边缘进行判断。if(i==1&&a[i]==maxx&&a[i+1]<maxx){cout<<i<<endl;break;}else if(i==n&&a[i]==maxx&&a[i-1]<maxx){cout<<i<<endl;break;}else if(i!=1&&i!=n&&a[i]==maxx&&(a[i-1]<maxx||a[i+1]<maxx)){cout<<i<<endl;break;}}}}return 0;
}

C. Dominant Piranha(思维) Codeforces Round #677 (Div. 3)相关推荐

  1. Codeforces Round #677 (Div. 3)——ABCDE解题报告

    Codeforces Round #677 (Div. 3)--ABCDE解题报告 比赛链接:https://codeforces.com/contest/1433 A.Boring Apartmen ...

  2. Codeforces Round #459 (Div. 2) C 思维,贪心 D 记忆化dp

    Codeforces Round #459 (Div. 2) C. The Monster 题意:定义正确的括号串,是能够全部匹配的左右括号串. 给出一个字符串,有 (.). ? 三种字符, ? 可以 ...

  3. Codeforces Round #731 (Div. 3) G. How Many Paths? dfs + 拓扑 + 思维

    传送门 题意: 给你一张nnn个点mmm条边的图,让你对每个点确定一个编号,规则如下: (1)(1)(1) 对于不能到的点编号为000. (2)(2)(2) 对于只有一条路径能到这个点的点编号为111 ...

  4. Codeforces Round #594 (Div. 2) C. Ivan the Fool and the Probability Theory 思维 + dp

    文章目录 题意: 思路 题意: 思路 一开始找规律,表都打好了,没找出来.. 找规律还是适合让队友来. 先考虑第一行,我们先计算第一行的方案数,设f[i][j]f[i][j]f[i][j]表示到了ii ...

  5. Codeforces Round #586 (Div. 1 + Div. 2) B. Multiplication Table 思维 + 公式

    传送门 文章目录 题意: 思路: 题意: 给你一个n∗nn*nn∗n的矩阵,每个位置由ai∗aja_i*a_jai​∗aj​得来,主对角线为000,让你求出来aia_iai​. n≤1e3n\le1e ...

  6. Codeforces Round #586 (Div. 1 + Div. 2) D. Alex and Julian 数学 + 思维

    传送门 文章目录 题意: 思路: 题意: 给你一个无限个点的坐标轴,一个集合BBB,如果存在∣i−j∣=bk|i-j|=b_k∣i−j∣=bk​的话,那么i,ji,ji,j之间就连边.现在问你至少要从 ...

  7. Codeforces Round #733 (Div. 1 + Div. 2) E. Minimax 分情况讨论 + 思维

    传送门 文章目录 题意: 思路: 题意: 给你一个串,你可以随意安排这个串,使得这个串的每个前缀的kmpkmpkmp数组最大值最小,定义为f(a)f(a)f(a),并且字典序最小,输出安排之后的串. ...

  8. Codeforces Round #587 (Div. 3) C. White Sheet 思维

    传送门 文章目录 题意: 思路: 题意: 给你一个白色的矩形和俩个黑色的矩形,问白色被黑色覆盖后还能不能看到. 思路: 经典被简单题卡. 一开始写了个自我感觉很对的做法,结果wa41wa41wa41, ...

  9. Codeforces Round #732 (Div. 2) C. AquaMoon and Strange Sort 思维

    传送门 文章目录 题意: 思路: 题意: 给你nnn个数,每个数初始方向是向右,每次可以交换相邻两个位置并且将这两个位置的方向调换,问这个序列的最终状态能否是非递减且方向都向右. n≤1e5,ai≤1 ...

  10. Codeforces Round #588 (Div. 2) D. Marcin and Training Camp 思维

    传送门 文章目录 题意: 思路: 题意: 有nnn个人,每个人都有一个能力值bib_ibi​以及他会的技能aia_iai​,当他会第xxx个技能的时候,aia_iai​的第xxx位是111.定义当xx ...

最新文章

  1. decorator and @property
  2. Ubuntu中Apache修改DocumentRoot(修改网站根目录)
  3. 牛客网-剑指Offer-复杂链表的复制
  4. extjs 重设autoHeight
  5. 工业用微型计算机(20)-指令系统(15)
  6. java string类型_java中String类型
  7. docker删除所有镜像和容器
  8. 微信小程序 地图组件使用
  9. Openstack(二)基本环境准备--网络、时间、yum源等
  10. 006-Python迭代器
  11. 二进制算法——模二运算
  12. QImage使用说明
  13. 《鸟哥 Linux 私房菜:基础版》阅读笔记
  14. 0516---win10 chrome 浏览器播放视频没有声音的解决办法
  15. android中android:wight详解
  16. 通过pytorch建立神经网络模型 分析遗传基因数据
  17. Microsoft Edge安装扩展插件
  18. SAP软件的强大“远不止于此”
  19. 02-JVM、JRE、JDK
  20. 华为云计算IE面试笔记-华为云计算解决方案业务迁移支持哪些迁移?有哪些特点?请描述基本的业务交付流程、业务迁移流程和原则。

热门文章

  1. 华为云:云江湖中的“武当派”
  2. java compile方法_Java中带有示例的模式compile()方法
  3. 2019中兴通讯软件开发岗c/c++方向(笔试+面试)总结
  4. iOS-关于解决WebView、WKWEbView打开pdf文件乱码问题
  5. Pytorch学习率调整策略
  6. 怦然心动(Flipped)-7
  7. 查看电脑的开关机记录
  8. 开发独立证券交易系统的一些体会,有下单撮合系统,自己产生交易行情,可实现分布式部署
  9. 你想知道的优惠券业务,SkrShop告诉你
  10. GMap.NET 使用教程【1】