青蛙过河

来回x次,也就是从起点一共2x个青蛙走一遍到终点

用一个数组记录每次送多少个青蛙由i–>j

具体看acwing解析

#include <bits/stdc++.h>
#define ll long longusing namespace std;
typedef pair<int,int>PII;const int N=1e5+10;
int n,m,L;
ll s[N];
int a[N],p[N],h[N];int findFa(int x) {return x==p[x]?x:p[x]=findFa(p[x]);
}int check(int mid) {for(int i=1; i<=n-1; i++)a[i]=h[i],p[i]=i;for(int i=1; i<=n; i++)s[i]=0;s[0]=m;//起点有2*x只青蛙for(int i=0; i<n; i++) {int j=i+mid;if(j>=n) { //一步直接到对岸s[n]+=s[i];s[i]=0;} else {while(1) {j=findFa(j);if(s[i]==0||j<=i)break;//当前i号位置不存在青蛙或者i到i+mid内没有石墩可以跳了//将x个青蛙由i运送到jll x=min((ll)a[j],s[i]);s[j]+=x;a[j]-=x,s[i]-=x;//j位置石墩用完了,就向前找新的石墩if(a[j]==0)p[j]=findFa(j-1);}}}return s[n]==m;
}int main() {cin>>n>>m;m*=2;for(int i=1; i<=n-1; i++) cin>>h[i];int l=1,r=n;//如果满足check应该找最大距离越小越好//如果不满足证明这个距离太小了应该放大 while(l<r) {int mid=l+r>>1;if(check(mid))r=mid;else l=mid+1;}cout<<r<<endl;return 0;
}

青蛙过河(二分+并查集)相关推荐

  1. POJ2349二分+并查集,类似最小树的贪心

    题意:       给你n个点,你的任务是构建一颗通讯树,然后给你一个s表示可以选出来s个点两两通讯不花钱,就是费用是0,其他的费用就是两点的距离,有个要求就是其他的费用中最大的那个最小. 思路:   ...

  2. HDU - 3081 Marriage Match II(二分+并查集+最大流/匈牙利删边)

    题目链接:点击查看 题目大意:n个男生和n个女生配对,配对规则如下: 每个女生都可以选择没有吵过架的男生匹配 若女生A的好朋友是女生B,且女生B没有和男生C吵过架,则女生A也可以和男生C匹配 现在问最 ...

  3. C. Safe Distance(二分 + 并查集)

    C. Safe Distance(二分 + 并查集) 给定一个X×YX \times YX×Y的矩形,里面有n,(1≤n≤1000)n,(1 \leq n \leq 1000)n,(1≤n≤1000) ...

  4. 洛谷P2498 [SDOI2012]拯救小云公主 【二分 + 并查集】

    题目 英雄又即将踏上拯救公主的道路-- 这次的拯救目标是--爱和正义的小云公主. 英雄来到boss的洞穴门口,他一下子就懵了,因为面前不只是一只boss,而是上千只boss.当英雄意识到自己还是等级1 ...

  5. jzoj 5904. 【NOIP2018模拟10.15】刺客信条 二分+并查集

    刺客信条 时间限制: 1 Sec 内存限制: 512 MB 题目描述 故事发生在1486 年的意大利,Ezio 原本只是一个文艺复兴时期的贵族,后来因为家族成员受到圣殿骑士的杀害, 决心成为一名刺客. ...

  6. 二分+并查集【bzoj3007】[SDOI2012]拯救小云公主

    Description 英雄又即将踏上拯救公主的道路-- 这次的拯救目标是--爱和正义的小云公主. 英雄来到boss的洞穴门口,他一下子就懵了,因为面前不只是一只boss,而是上千只boss.当英雄意 ...

  7. CH - 4901 关押罪犯(二分图判定+二分/并查集)

    题目链接:点击查看 题目大意:一共有n个罪犯,有m对仇人,每对仇人都有一个仇恨值,如果两个仇人在一起的话,会对监狱造成等价于仇恨值的损失,现在有两个监狱,可以将罪犯们分开关押,问监狱的最小损失是多少 ...

  8. [二分][并查集] Jzoj P5904 刺客信条(AC)

    Description 故事发生在1486 年的意大利,Ezio 原本只是一个文艺复兴时期的贵族,后来因为家族成员受到圣殿骑士的杀害,决心成为一名刺客.最终,凭借着他的努力和出众的天赋,成为了杰出的刺 ...

  9. bzoj3007: 拯救小云公主(二分+并查集)

    挺水的题...好多题解说是对偶图,其实感觉不能算严格意义上的对偶图吧QAQ 先二分答案r,然后以boss为中心半径为r的圆不能走,求能否从左下走到右上. 不能从左下走到右上,说明这堆圆把图隔开了,于是 ...

最新文章

  1. ntbackup 创建卷影复制:ffffffff 时出现错误
  2. 通过全备+relaylog同步恢复被drop的库或表
  3. 【嵌入式开发】gcc 学习笔记(一) - 编译C程序 及 编译过程
  4. 关于网站URL转码的问题
  5. Parity Alternated Deletions
  6. python算法与数据结构-希尔排序算法
  7. foreach判断最后一个_PHP 内核:foreach 是如何工作的(二)
  8. php当前完整url的写法
  9. Unity运行时刻资源管理
  10. python生成json_python之生成多层json结构的实现
  11. 一般处理程序页ashx 序列化 Json数组
  12. 作为前端Web开发者,这12条基本命令不可不会
  13. 博客园看到的很好的Linux网络编程技巧(此处一字不动的转载过来)
  14. 【软件测试】自动化测试到底怎么做(单元测试自动化,接口自动化,UI自动化)
  15. 大数据可以应用在哪些行业?
  16. 电路基础之:差模信号与共模信号
  17. C# Delegate引介
  18. iOS之Block报错:capturing 'self' strongly in this block is likely to lead to a retain cycle
  19. ubuntu+cuda+theano
  20. 工业互联网和物联网有什么关系?

热门文章

  1. c++游戏编程(1)开发环境与工具函数
  2. Java字节码,字节码指令
  3. Ubuntu 16.04 安装搜狗输入法(打中文)
  4. java的意思和含义,2022年最新
  5. Python数据分析初探项目 基于Python数据可视化的网易云音乐歌单分析系统 大学编程作业(TUST 天津科技大学 2022年)
  6. 17岁电竞少年追梦之旅,多次试训无果黯然返乡,沉淀一年,少年杨帆终圆梦~
  7. latex 直和 中点
  8. [矩阵计算]Lanczos方法:求稀疏矩阵特征值
  9. 根据药物名找华法林的代谢通路并可视化KGML文件
  10. python填充图像为方形