Codeforces Round #484 (Div. 2) D. Shark
Example 1
input
8
1 2 7 3 4 8 5 6
output
7Example 2
input
6
25 1 2 3 14 36
output
2
题目大意:
MAX假定鲨鱼连续几天没游过k米(严格小于k),这几天游过的点视作同一块岛屿,现在问:选取一个最小
的k,使得岛屿数,并且在每一块岛屿所花的天数相等
分析:
以a[i]从小到大进行筛选,用并查集的思想,将a[i]中小于k的天数合并成一块岛,再在所有的k里选择一个最
优解,但是必须注意,要检查下这个岛屿数是不是合法的
code:
#define debug
#include<bits/stdc++.h>
#define pb push_back
#define dbg(x) cout<<#x<<" = "<<(x)<<endl;
#define lson l,m,rt<<1
#define cmm(x) cout<<"("<<(x)<<")";
#define rson m+1,r,rt<<1|1
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
typedef pair<ll,ll>PLL;
typedef pair<int,ll>Pil;
const ll INF = 0x3f3f3f3f;
const ll inf=0x7fffffff;
const double eps=1e-8;
const int maxn =1e6+10;
const int N = 510;
const ll mod=1e9+7;
const ll MOD=1e9;
//------
//define
int pre[maxn],sz[maxn],cnt[maxn];
int tot,ans,res;
struct node {int val,id;node(int val=0,int id=0):val(val),id(id) {}bool operator <(const node &a)const {return val<a.val;}
} v[maxn];
//findset
int findset(int x) {return pre[x]==x?x:findset(pre[x]);
}
//unite
void unite(int x,int y) {int px=findset(x),py=findset(y);if(px==py)return;//由于px,py之间的岛屿合并,所以sz[px]和sz[py]的天数的岛屿数减少 cnt[sz[px]]--;cnt[sz[py]]--;pre[px]=py;//合并之后的总天数 sz[py]+=sz[px];cnt[sz[py]]++;tot--;
}
//init
void init(int n){for(int i=1;i<=n+1;i++){pre[i]=i;}
}
//solve
void solve() {int n;while(cin>>n) {ans=res=0;for(int i=0; i<n; i++) {int val;cin>>val;v[i]=node(val,i+1);}init(n);sort(v,v+n);tot=0;for(int i=0;i<n;i++){int ind=v[i].id;int u=findset(ind);sz[u]++;tot++;cnt[sz[u]]++;//sz[]如果不为0说明a[ind-1]比目前的a[ind]的小 if(sz[findset(ind-1)]){unite(ind,ind-1);}if(sz[(findset(ind+1))]){unite(ind,ind+1);}//cnt[sz[u]]表示以u为k-1,如果岛屿数目对不上tot说明此划分每块岛屿的天数不等 if(cnt[sz[u]]==tot&&tot>ans){ans=tot;res=v[i].val;}}cout<<res+1<<endl;memset(sz,0,sizeof(sz));memset(cnt,0,sizeof(cnt));}
}int main() {ios_base::sync_with_stdio(false);
#ifdef debugfreopen("in.txt", "r", stdin);
// freopen("out.txt","w",stdout);
#endifcin.tie(0);cout.tie(0);solve();/*#ifdef debugfclose(stdin);fclose(stdout);system("out.txt");#endif*/return 0;
}
转载于:https://www.cnblogs.com/visualVK/p/9091903.html
Codeforces Round #484 (Div. 2) D. Shark相关推荐
- Codeforces Round #484 (Div. 2) A. Row
Example 1 input 3 101 output YesExample 2 input 4 1011 output NoExample 3 input 5 10001 output No 题目 ...
- Codeforces Round #484 (Div. 2) E. Billiard
题目大意: 有一个方形区域,四个角各有一个口袋,在(x,y)出有一小球,以Vx,Vy速度击出,碰到边界会像光路一样反 弹,问最先掉到哪个口袋里 分析: 其实问题的关键在于将反射线段利用光路的性质转换成 ...
- Codeforces Round #484 (Div. 2) C. Cut 'em all!
Example 1 input 4 2 4 4 1 3 1 output 1Example 2 input 3 1 2 1 3 output -1Example 3 input 10 7 1 8 4 ...
- Codeforces Round #541 (Div. 2)
Codeforces Round #541 (Div. 2) 题号 题目 知识点 A Sea Battle 思维 B Draw! 贪心模拟 C Birthday 思维 D Gourmet choice ...
- Codeforces Round #506 (Div. 3)
Codeforces Round #506 (Div. 3) 实习期间事不多,对div3 面向题解和数据编程了一波 A. Many Equal Substrings 题目链接 A题就是找后缀和前缀重合 ...
- Codeforces Round #563 (Div. 2)/CF1174
Codeforces Round #563 (Div. 2)/CF1174 CF1174A Ehab Fails to Be Thanos 其实就是要\(\sum\limits_{i=1}^n a_i ...
- 构造 Codeforces Round #302 (Div. 2) B Sea and Islands
题目传送门 1 /* 2 题意:在n^n的海洋里是否有k块陆地 3 构造算法:按奇偶性来判断,k小于等于所有点数的一半,交叉输出L/S 4 输出完k个L后,之后全部输出S:) 5 5 10 的例子可以 ...
- Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解(每日训练 Day.16 )
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解 比赛链接:h ...
- Codeforces Round #712 Div.2(A ~ F) 超高质量题解(每日训练 Day.15 )
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #712 Div.2(A ~ F) 题解 比赛链接:https:// ...
- Codeforces Round #701 (Div. 2) A ~ F ,6题全,超高质量良心题解【每日亿题】2021/2/13
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A - Add and Divide B - Replace and Keep Sorted C ...
最新文章
- war包解压不了_牛骨高汤的熬制方法,拿走不谢!有了这配方,还愁开不了小吃店?...
- [导入]注意!玩具也能成危险
- centos安装时各个版本的含义
- [wp7游戏]wp7~~飞行射击精品游戏~~集合贴
- 图解Android - Zygote, System Server 启动分析
- LeetCode 158. 用 Read4 读取 N 个字符 II
- Java类型推断将不再支持可变性规范
- 永恒之蓝漏洞原理 445_不死的EternalBlue(永恒之蓝)
- ccs是轮_CCS-船型标准.pdf
- sql有循环吗_我把 SQL 执行效率提高了 10,000,000 倍!
- Python 工匠: 异常处理的三个好习惯
- 使用vue element-ui 打印组件
- 二分排序(java)
- 2020年中国微特电机行业现状、竞争格局及未来发展趋势分析,我国产量达全球70%,技术与发达国家仍有差距「图」
- 一套ThinkPHP微信小程序商城源码带后台管理
- 市政管网检测机器人收费标准_疏通市政管道 市政管网检测 机器人管道检测价格...
- 计算机网络——常见协议
- 暑期作息时间表模板_最新暑假作息时间表excel模板-暑假作息时间模板
- 计算机专业考研是英语几,计算机考研考英语一还是英语二
- 《研发企业管理——思想、方法、流程和工具》——第1章 企业管理基本理念 1.1 企业的根本目标及其内涵...