当前位置: 首页 > news >正文

Codeforces Round 973 (Div. 2) - D题

传送门:Problem - D - Codeforces

题目大意:

思路:

尽量要 最大值变小,最小值变大

即求 最大值的最小 和 最小值的最大 -> 二分答案

AC代码:

代码有注释

#include<bits/stdc++.h>
using namespace std;
#define int long long
void solve()
{int n; cin >> n;vector<int> a(n + 1), b(n + 1);for (int i = 1; i <= n; i++) cin >> a[i];auto check1 = [&](int limit){// limit 此时就是 最大值的最小值// 经过操作后,若 b[i] <= limit 就是ok的,否则就放弃这个值// 最大值最小for (int i = 1; i <= n; i++) b[i] = a[i];for (int i = 1; i < n; i++){// b[i] 超过 limit ,就要减小 b[i]if (b[i] > limit){b[i + 1] += (b[i] - limit);b[i] = limit;}}for (int i = 1; i <= n; i++){if (b[i] > limit) return false;}return true;};int left = 0; int right = 1e12;while (right > left){int mid = left + right >> 1;if (check1(mid))right = mid;else left = mid + 1;}int ans = left;auto check2 = [&](int limit){// 最小值最大// limit 就是最小值的最大值for (int i = 1; i <= n; i++) b[i] = a[i];for (int i = 1; i < n; i++){if (b[i] > limit){b[i + 1] += (b[i] - limit);b[i] = limit;}}int mn = 2e18;for (int i = 1; i <= n; i++) mn = min(mn, b[i]);// 经过操作后,mn 仍大于 limit ,则可以继续增大limitif (mn >= limit)return true;else return false;};left = 0; right = 1e12;while (right > left){int mid = left + right + 1 >> 1;if (check2(mid))left = mid;else right = mid - 1;}cout << ans - left << endl;
}
signed main()
{int tt; cin >> tt;while (tt--)solve();return 0;
}

 

 加练二分:

传送门:Problem - D - Codeforces

题目大意:

 

 思路:

二分 顶点1要加上的值

AC代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
int n;
const int N = 2e5 + 10;
int h[N], e[N], ne[N], idx;
int a[N];
void add(int a, int b)
{e[idx] = b;ne[idx] = h[a];h[a] = idx++;
}
bool dfs(int u, int limit)
{if( limit > 1e9 ) return false; // 一定要加这个代码,否则就会爆 long long// 所有顶点的值都是 <= 1e9 的,所以 limit 肯定不能大于 1e9if (a[u] < limit){int temp = limit - a[u];limit += temp;}bool flag = false;for (int i = h[u]; i != -1; i = ne[i]){flag = true;int j = e[i];if (!dfs(j, limit)) return false;}if (!flag){if (a[u] >= limit) return true;else return false;}else return true;
}
bool check(int limit)
{for (int i = h[1]; i != -1; i = ne[i]){int j = e[i];if (!dfs(j, limit)) return false;}return true;
}
void solve()
{memset(h, -1, sizeof h); idx = 0;cin >> n;for (int i = 1; i <= n; i++){cin >> a[i];}for (int i = 2; i <= n; i++){int fa; cin >> fa;add(fa, i);}int left = 0; int right = 1e9;while (right > left){int mid = left + right + 1 >> 1;if (check(mid)) left = mid;else right = mid - 1;}cout << a[1] + left << endl;
}
signed main()
{int tt; cin>> tt;while(tt--)solve();return 0;
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 数据库事务中的四大问题:脏读、脏写、不可重复读与幻读详解
  • 【HTTPS】对称加密和非对称加密
  • RocketMQ控制台手动新增主题,报错:clusterName or brokerName can not be all blank
  • 【设计模式-备忘录】
  • Redisson 总结
  • 目前主流语言比较
  • Alluxio EnterpriseAI on K8s 部署教程
  • 探索 Python 的火焰:Fire 库的神秘力量
  • 2016年国赛高教杯数学建模A题系泊系统的设计解题全过程文档及程序
  • 前端开发——(1)使用vercel进行网页开发
  • 标准库标头 <bit>(C++20)学习
  • 【在Linux世界中追寻伟大的One Piece】NAT|代理服务|内网穿透你会吗?
  • 从零开始学习Linux(14)---线程池
  • python有main函数吗
  • 后端-navicat查找语句(单表与多表)
  • [PHP内核探索]PHP中的哈希表
  • Docker 笔记(2):Dockerfile
  • Java编程基础24——递归练习
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • PermissionScope Swift4 兼容问题
  • TypeScript实现数据结构(一)栈,队列,链表
  • 从setTimeout-setInterval看JS线程
  • 基于web的全景—— Pannellum小试
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 浅谈Golang中select的用法
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 数组的操作
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 用 Swift 编写面向协议的视图
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​Python 3 新特性:类型注解
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • #NOIP 2014#Day.2 T3 解方程
  • (007)XHTML文档之标题——h1~h6
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (二)Linux——Linux常用指令
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (转)Linq学习笔记
  • *算法训练(leetcode)第四十七天 | 并查集理论基础、107. 寻找存在的路径
  • .Net 6.0--通用帮助类--FileHelper
  • .NET NPOI导出Excel详解
  • .NET 发展历程
  • .net企业级架构实战之7——Spring.net整合Asp.net mvc
  • .NET设计模式(8):适配器模式(Adapter Pattern)
  • @Not - Empty-Null-Blank
  • @property @synthesize @dynamic 及相关属性作用探究