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

D. Doremy‘s Connecting Plan Codeforces Round 906 (Div. 2)

Problem - D - Codeforces

题目大意:有一个长度为n的数组a,同时有一个n个点的图,编号与数组的编号对应,初始没有边,如果当前连通块的中a[i]的和+某一个点a[j]>=连通块的一个点i*某一个点j*c,那么就可以连通i和j,问能否使所有点在一个连通块内。

2<=n<=2e5;0<=a[i]<=1e12

思路:令当前已有的一个连通块为s,我们要找一个点j和s连通,那么我么肯定选择连通块中编号最小的一个点i,使i*j*c最小,如果s内的和+a[j]>=i*j*c,i和j就可以连通,既然i*j*c已经小于等于当前连通块的和,那么对于小于j的所有编号i*j*c都一定小于等于。

那么既然要选最小的i,那么我们就令a[1]是最小的连通块,因为反正要所有点联通也要连1,那不如从1开始连,这样就从1到n遍历,检查符不符合连通条件,如果到n时也符合,那么就是能连通

#include <bits/stdc++.h>
//#include<__msvc_all_public_headers.hpp>
using namespace std;
const int N = 2e5 + 5;
typedef long long ll;
const ll MOD = 1e9 + 7;
ll a[N];
int n;
void solve()
{ll c;cin >> n;cin >> c;for (ll i = 1; i <= n; i++){cin >> a[i];}int ma = 1;//最大的能联通的位置ll sum = a[1];//前缀和ll nsum = a[1];//当前连通块的和for (ll i = 2; i <= n; i++){sum += a[i];if (nsum + a[i] >= i * c){//满足连通条件nsum = sum;ma = i;}}cout << (ma == n ? "YES" : "NO") << '\n';
}
int main()
{ios::sync_with_stdio(false);cin.tie(0);int t;cin >> t;while (t--){solve();}}

http://www.lryc.cn/news/215170.html

相关文章:

  • Prometheus+Grafana
  • CoCa论文笔记
  • uniapp 微信小程ios端键盘弹起后导致页面无法滚动
  • 三维模型优势在哪里?如何提升产品自身商业价值?
  • WheatA 轻量级生态数据软件
  • 2127. 参加会议的最多员工数 : 啥是内向/外向基环树(拓扑排序)
  • Qt入门日记1
  • SpringBoot_第七章(读写分离)
  • linux下mysql-8.2.0集群部署(python版本要在2.7以上)
  • 40 深度学习(四):卷积神经网络|深度可分离卷积|colab和kaggle的基础使用
  • Spring Boot面向切面加注解
  • uniapp小程序授权统一处理
  • 光学仿真|优化汽车内部照明体验
  • Spring XML使用CASE WHEN处理SELECT字段
  • 关于C#中使用多线程的讨论
  • 工程机械数字孪生可视化平台建设,推动大型装备智能化数字化转型升级
  • Linux 网络流量监控利器 iftop命令详解及实战
  • protected by SourceGuardian and requires a SourceGuardian loader ‘ixed.8解决方案
  • KWin、libdrm、DRM从上到下全过程 —— drmModeAddFBxxx(14)
  • 2023-macOS下安装anaconda,终端自动会出现(base)字样,如何取消
  • Nginx搭载负载均衡及前端项目部署
  • 深度学习——炼丹
  • Matlab中的app设计
  • 曾经遇到过的无法解释的问题
  • 基于uniapp与uview做一个按拼音首字母排序的通讯录页面
  • 网络工程师-入门基础课:华为HCIA认证课程介绍
  • 玻色量子成功研制光量子计算专用光纤恒温控制设备——“量晷”
  • 力扣:147. 对链表进行插入排序(Python3)
  • OpenCV4(C++)——形态学(腐蚀、膨胀)
  • C++设计模式_24_Visitor 访问器