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

【补题】Codeforces Round 776 (Div. 3) E. Rescheduling the Exam

 题意:

思路:      CF1650E Rescheduling the Exam - 洛谷
                 原题解写的非常清楚,可以去看看

假设只有三节课,很明显最佳放法只有两种
1.放到中间
2.放到最后面的d天,这个很重要,因为最后一节课之后的天数是不算的,不计入最后作为间隔天数,所以直接放在最末尾就行了

那么对于一个被移动的课程,原先的相邻的距离会受到影响,很明显的延长了,但是其他地方不会受影响,这就给了贪心的可能
那么对于这个被移动走的课程,肯定是移动这个课程与其他课程的有着最差间距的课程,那肯定就是放在最长的间隔中间,或者放在最后,这样才能最有效的延长间隔天数,但不要忘了可能延长后,依旧存在其他间隔小于试图延长后的。

那么对于那个课程,我们试图延长的是他们的间距,那么可能移动前者好,也可能移动后者好
都判断一下即可

代码:

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define IOS                       \std::ios::sync_with_stdio(0); \std::cin.tie(0);              \std::cout.tie(0)const int N = 3e5 + 5;
const int INF = 1e18;
// const int MOD = 998244353;
const int MOD=1e9+7;
// const int MOD=100003;
const int maxn=5e5+10;void solve(){int n,d;cin >> n >> d;vector<int> ve(n);for(int i=0;i<n;i++){cin >> ve[i];}int st=0;int pos=0;int mindist=INF;for(int i=0;i<n;i++){int dist=ve[i]-st-1;if(mindist>dist){pos=i;mindist=dist;}st=ve[i];}// cout << "POS " << " " << pos << '\n';int maxnum=0,minnum=INF;int last=0;for(int i=0;i<n;i++){if(i==pos) continue;int dist=ve[i]-last-1;maxnum=max(maxnum,dist);minnum=min(minnum,dist);last=ve[i];}int res=min(minnum,max((maxnum-1)/2,d-last-1));if(pos!=0){pos-=1;maxnum=0,minnum=INF;last=0;for(int i=0;i<n;i++){if(i==pos) continue;int dist=ve[i]-last-1;maxnum=max(maxnum,dist);minnum=min(minnum,dist);last=ve[i];}res=max(res,min(minnum,max((maxnum-1)/2,d-last-1)));}// cout << maxnum << " " << minnum << '\n';cout << res << '\n';
}signed main(){IOS;int t=1;cin >> t;while(t--){solve();}
}

http://www.dtcms.com/a/321817.html

相关文章:

  • 三方相机问题分析七:【datespace导致GPU异常】三方黑块和花图问题
  • 显示器同步技术终极之战:G-Sync VS. FreeSync
  • xml 格式化
  • 卷板矫平机:把“翘脾气”的金属板材变平整
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘huggingface_hub’问题
  • C# 装箱拆箱
  • 数据结构进阶 详谈红黑树
  • Redis(⑤-线程池隔离)
  • javaSE(基础):5.抽象类和接口
  • C+++——内存管理
  • 大语言模型提示工程与应用:提示工程入门指南
  • 前端后端之争?JavaScript和Java的特性与应用场景解析
  • 大型语言模型幻觉检测与缓解技术研究综述
  • 将Django项目部署到Vercel平台的完整指南
  • Spring Boot 常用注解及其功能详解
  • Numpy科学计算与数据分析:Numpy高效数据处理与优化
  • 第七章:数据持久化 —— `chrome.storage` 的记忆魔法
  • bytearray和bytes
  • 解决flex元素内部文本溢出的问题min-width: 0
  • Pytest项目_day08(setup、teardown前置后置操作)
  • 树和二叉树和算法复杂度
  • 这款MEMS组合导航系统如何实现高性价比?
  • SVM实战:从线性可分到高维映射再到实战演练
  • 智能对讲机是什么?原理、优势、应用场景、发展趋势详解
  • 前端老项目依赖安全漏洞解决
  • 【LLM实战|langchain、qwen_agent】RAG高级
  • 888. 公平的糖果交换
  • YOLO-Count:用于文本到图像生成的可微分目标计数
  • 智慧公厕自动清洁空气环境,节省门店运营成本
  • 什么是SSL证书颁发机构?