51nod 1243 排船的问题
二分,分了老半天也没分出来结果,只好跑去找题解
参考:http://www.cnblogs.com/TheRoadToTheGold/p/6421882.html
这题还有O(n)解法,后边讨论里说可以转化成最大子段和。。。
using System;
using System.IO;namespace ConsoleApplication1
{class Program{private static int N, X, M;private static int[] wood;static void Main(string[] args){StreamReader sr = new StreamReader(Console.OpenStandardInput());StreamWriter sw = new StreamWriter(Console.OpenStandardOutput());string[] input = sr.ReadLine().Split(' ');N = Convert.ToInt32(input[0]);X = Convert.ToInt32(input[1]);M = Convert.ToInt32(input[2]);wood = new int[N];for (int i = 0; i < N; ++i)wood[i] = Convert.ToInt32(sr.ReadLine());int temp = X * 2 * N;if (temp > M){sw.WriteLine(-1);}else{sw.WriteLine(solve());}sw.Flush();sr.Close();sw.Close();}public static int solve(){int lb = 0;int ub = M;while (lb <= ub){int mid = (lb + ub) / 2;if (C(mid)) ub = mid - 1;else lb = mid + 1;}return lb;}public static bool C(int d){int head = 0;int tail = 0;for (int i = 0; i < N; ++i){head = tail;if (head + X + d <= wood[i]){head = Math.Max(head, wood[i] - d - X);tail = head + 2 * X;}else{if (head + X - wood[i] > d) return false;tail = tail + 2 * X;}if (tail > M)return false;}return true;}}
}
51nod 1243 排船的问题相关推荐
- 51nod 1243 排船的问题(二分)
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1243 题意: 思路: 二分来做,每次贪心的把船安排到能安排的最左边即可. ...
- 程序员必学电脑计算机专业英语词汇 04 (200 单词)
corner n.角落,角: 拐角: 困境: [商]囤积 vi.驾车转弯: 聚于角落 vt.垄断: 逼入困境 adj.位于角落的 present n. 礼物, 现在 adj. 当面的, 出席的, 现在 ...
- 大航海时代 收夺全攻略
2008年10月21日 16:14:04 作者:watbal 获得积分: Z 投稿总数: 篇 大航海时代 收夺全攻略 在下2区2服西瓜菜军一名,三围36/64/65,品行端正.无不良嗜好.凡事任劳任怨 ...
- 回答一些朋友的收掠问题(二)(转自:老公婆)
回答一些朋友的问题(二) Q1:如何防止稀有NPC被系统刷掉? A1:防止被刷掉的方法是要时刻保持海域人数(至少达到5人),被刷新掉的原因很简单:假设海域5人时候可以同时刷新5个怪,而5人以下只能同时 ...
- 51nod 1272 最大距离 O(nlog(n)) , 快排 , 最大连续子串
题目: 解法:排序,把值小的和索引小的放在前面,记录一下之前索引最小的就可以了. 没什么可以讲的,上代码吧: #include <bits\stdc++.h> using namespac ...
- js汉字排序问题--支持中英文混排,兼容各浏览器,包括CHROME
这套排序机制同时兼容了IE和ff 可以实现所有浏览器下排序的统一哦~ 具体技术 1.使用GB编码与UNICODE的转换 2.数组关联排序 注意:GB编码 库地址 http://www.blueid ...
- 计蒜客/51Nod题目
题目 换位置(1) 链接https://nanti.jisuanke.com/t/T1971 思路:两两交换次序使得数组逆序,第一个到最后位置需要n-1步,第二个到倒数第二个需要n-2步,第三个到倒数 ...
- 51Nod:活动安排问题之二(贪心)
有若干个活动,第i个开始时间和结束时间是[Si,fi),同一个教室安排的活动之间不能交叠,求要安排所有活动,最少需要几个室? 输入 第一行一个正整数n (n <= 10000)代表活动的个数. ...
- 51nod 省选联测 R2
51nod 省选联测 R2 上场的题我到现在一道都没A,等哪天改完了再写题解吧,现在直接写第二场的. 第二场比第一场简单很多(然而这并不妨碍我不会做). A.抽卡大赛:http://www.51nod ...
最新文章
- android开发字体样式,Android开发中修改程序字体的样式
- 互联网1分钟 |1219
- 想要成为一名三维建模师?想要月薪10K?你了解这些吗?
- mysql Subqueries
- sql server2008如果表中已经有很多条记录,再添加一个非空字段
- 工作中遇到的问题 二 乱码问题
- 分享 45 个让你提升工作效率的前端工具
- linux udp 套接字编程获取源地址和目的地址(一)
- 云终端服务器属于计算机设备吗,云终端不等于云电脑
- 怎样打开t6系统服务器,t6客户端如何连接服务器
- 思科路由器配置NAT地址转换
- 计算机网络(十)CSMA详解
- 如何判断你是合格的高级iOS开发工程师?
- 新一轮的XNA学习开始
- C# 实现俄罗斯方块
- 手把手教你写一个点菜系统(附源码)
- ccf 3. 缺席考试的是谁?(难度3)
- mysql中 符号什么意思_MySQL中的 || 符号是什么意思?
- linux输入密码后提示密码错误,用sudo命令没有提示输入密码,而是出现sudo:3次错误密码尝试的解决...
- Mybatis ResultType处理返回类型
热门文章
- 笔记本计算机没有声音是怎么回事,笔记本电脑声音没了怎么恢复_笔记本怎么没有声音-win7之家...
- 怎么提高计算机用户权限,在USER用户下提升自已的权限
- 介绍几个好用的小软件
- ZOJ 2975	Kinds of Fuwas(暴力)
- 自动驾驶漫谈之二:无人驾驶与高精度地图
- 自己如何创业,参业初创公司,看领头人,看他的人品、决心和能力 .
- win7为什么打开桌面上的计算机很卡很慢,Win7电脑开机速度慢解决方法
- js 根据中文获取拼音首字母
- my read law / notarization / gongzheng
- SZA-Template