模拟
来源:互联网 发布:zepto.js的animate 编辑:程序博客网 时间:2024/06/11 18:32
Code Forces Round #450 (Div 2) c Remove Extro One
题意:一个无重复数字序列,删除一个数使得record个数最多
record:a【i】是【1..i】中最大的数
题解
枚举删除第i个数字。
想想删掉这个数字后会有什么影响?
首先,如果a[i]如果是a[1..i]中最大的数字
那么record会减少1.
其次。对于任意一个a[j] , i小于j a[i]是a[1..j]中最大的数字,且a[j]是a[1..j]中第二大的数字。
删掉a[i]后,a[j]会成为一个record,即record数递增。
#include<bits/stdc++.h>using namespace std;const int N=1e5+5;int mx=-1,mx2,n,res;//mx序列中最大的数,mx2序列中第二大的数int a[N];int main(){ scanf("%d",&n); for(int i=0;i<n;i++) { int x; scanf("%d",&x); if(x>mx) { mx2=mx; mx=max(mx,x); a[x]--; } else if(x>mx2) {//序列中最大的数不变,出现了新的第二大的数,删除mx则record++ a[mx]++; mx2=max(mx2,x); } } int mn=0x3f3f3f; //找到贡献最大,且自身值最小的element for(int i=1;i<=n;i++) { if(a[i]>mn) { mn=a[i]; res=i; } } cout<<res<<endl; return 0;}
样例说明
序列:1 2 5 3 4
当x=3时 删除5 增加一个record
当x=4时 删除5 增加一个record。
阅读全文
0 0
- 模拟
- 模拟
- 模拟
- 模拟
- 模拟
- 模拟
- 模拟
- 模拟
- 模拟
- 模拟:
- 模拟
- 模拟
- 模拟
- 模拟
- 模拟
- 模拟
- 模拟
- 模拟
- IT伦理与道德之计算机病毒
- jQuery的$.fn与$.extend使用结合
- 《算法导论》排序算法
- B树、B-树、B+树、B*树
- Linux运维工程师,你能把iptables玩转麽?
- 模拟
- 裸体学霸又来了...一年一度的剑桥好屁股出结果了...
- Sublime Text3配置Python运行环境(实用)
- spark2 sql读取json文件的格式要求
- spark2.2 SparkSession思考与总结1
- spark2.2以后版本任务调度将增加黑名单机制
- 如何查看spark与hadoop、kafka、Scala、flume、hive等兼容版本【适用于任何版本】
- 【099】TensorFlow使用Docker方式安装
- 64位Ubuntu 14.04安装“ibc6-i386”依赖库解决办法。