JZYZOJ1452 NOIP2015_提高组Day2_1_跳石头
2024-08-21 14:42:22
http://172.20.6.3/Problem_Show.asp?id=1452
很简单的二分,最开始以为是优先队列,想了想发现优先队列是有情况不能达到最优的,所以二分+贪心处理,在贪心check的时候想得有点复杂(或者说有漏洞),调了几次才过。
写代码的时候果然不能硬莽,不思考乱莽只能随机30,70,90分,没法ac。
代码
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<iostream>
using namespace std;
const int maxn=;
int z,m,n;
int a[maxn]={},tot=;
int check(int x){
int y=;int w=,hug=z,t1=z;
for(int i=;i<=n+;i++){
if(a[i]-a[y]>=x){
hug=min(hug,t1);
t1=a[i]-a[y];
w+=(i-y-);y=i;
}
}if(n+!=y){
w+=n+-y;
if(y==)w--;
t1+=a[n+]-a[y];
hug=min(hug,t1);
}
if(w==m){
if(hug<x) return ;
else return ;
}
else if(w>m) return ;
else return ;
}
int doit(){
int l=,r=z;
while(l+<r){
int mid=(l+r)/;
int w=check(mid);
if(!w)r=mid-;
else l=mid;
}int w=check(r);
if(!w)return l;
else return r;
}
int main(){
//freopen("wtf.in","r",stdin);
scanf("%d%d%d",&z,&n,&m);
tot=n+;
for(int i=;i<=n;i++){
scanf("%d",&a[i]);
}a[n+]=z;
printf("%d\n",doit());
return ;
}
最新文章
- 为maven插件设置参数的三种方法
- iOS使用Charles(青花瓷)抓包并篡改返回数据图文详解
- 大数据公益课堂成就你高薪之梦,30W,50W,100W...
- 一. JVM发展史,运行时数据区域,四大引用
- jQuery 杂项方法
- Windows多线程同步系列之二-----关键区
- SharePoint 2013 创建一个搜索中心和搜索设置
- 一篇文章学懂Shell脚本
- Django资源
- 【转】Nginx SSL_PROTOCOL_ERROR 问题
- Java 多线程异步处理demo
- 数据库用户映射到SQL Server登录名
- vue 脚手架关于路由的一点理解
- PL/SQL编程--变量声明及赋值
- How to mount HFS EFI on macOS
- C语言学习记录之一
- 《HTTP 权威指南》笔记:第三章 HTTP 报文
- 升级Linux内核导致vmware无法使用(vmnet模块无法编译)解决方式
- Lua------------------改善Unity编辑器对Lua文件的支持
- Uncaught TypeError: $(...).daterangepicker is not a function