`
lilisalo
  • 浏览: 1108502 次
文章分类
社区版块
存档分类
最新评论

POJ 3258 二分算法

 
阅读更多

题目链接:http://poj.org/problem?id=3258

题意:有一条河流,上面原来有n个石头,FJ的cow可以从这些石头上跳过去,现在FJ想训练他的cow的跳跃能力,于是乎想移去其中的m个石头,而且他要求,去掉这m个石头后,石头与石头之间的最小值必须最大。

思路:二分答案,然后验证当前答案下最少需要移去的石头数量

my ugly code:

Source Code

Problem: 3258 User: bingshen
Memory: 324K Time: 172MS
Language: C++ Result: Accepted
  • Source Code
    #include<stdio.h>
    #include<algorithm>
    
    using namespace std;
    
    int dis[50005];
    int n,m;
    
    int slove(int mid)
    {
    	int res=0,temp=0,i,pre=0;
    	for(i=1;i<=n;i++)
    	{
    		if(dis[i]-dis[pre]<mid)
    			res++;
    		else
    			pre=i;
    	}
    	return res;
    }
    
    int max(int a,int b)
    {
    	if(a>b)
    		return a;
    	else
    		return b;
    }
    
    int main()
    {
    	int i,left=0,right=0,mid,l;
    	while(scanf("%d%d%d",&l,&n,&m)!=EOF)
    	{
    		left=99999999;
    		right=0;
    		for(i=1;i<=n;i++)
    			scanf("%d",&dis[i]);
    		dis[n+1]=l;
    		n++;
    		sort(dis+1,dis+n+1);
    		for(i=1;i<=n;i++)
    		{
    			if(dis[i]-dis[i-1]<left)
    				left=dis[i]-dis[i-1];
    		}
    		right=l;
    		while(left<=right)
    		{
    			mid=(left+right)>>1;
    			int temp=slove(mid);
    			if(temp>m)
    				right=mid-1;
    			else
    				left=mid+1;
    		}
    		printf("%d/n",right);
    	}
    	return 0;
    }
    
分享到:
评论

相关推荐

    北大oj 题目分类

    (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. (5)构造法.(poj3295) (6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996) 二.图算法: (1)图的深度优先遍历和广度优先遍历. (2)最短...

    POJ 1727 Advanced Causal Measurements (ACM)解题报告

    业余爱好。所以,算法不一定好,CODING也不一定佳,效率不一定高,只是能通过online judge而已。

    算法之路 ,成功掌握各种算法

    4.二分查找. (代码可在五行以内) 5.叉乘、判线段相交、然后写个凸包. 6.BFS、DFS,同时熟练hash表(要熟,要灵活,代码要简) 7.数学上的有:辗转相除(两行内),线段交点、多角形面积公式. 8. 调用系统的qsort...

    算法实验(二分+中位数-9-11题)1

    分治+中位数第 9 题:poj1723 SOLDIERSN soldiers of the land Gridland are randomly scatter

    leetcode中国-MyAlgorithmSolutions::balloon:记录我所有的算法/数据结构

    二分 高精度 前缀和差分 双指针 位运算 离散化 区间合并 单链表 双链表 栈 队列 单调栈 单调队列 KMP Tire 并查集 堆 哈希表 DFS BFS 快速幂 背包问题 区间DP 区间问题 绝对值不等式 DP课 寒假每日一题 基础班 提高...

    挑战程序设计竞赛(第2版)

    “二分搜索” 3.1.1 从有序数组中查找某个值 3.1.2 假定一个解并判断是否可行 3.1.3 最大化最小值 3.1.4 最大化平均值 3.2 常用技巧精选(一) 3.2.1 尺取法 3.2.2 反转(开关问题) 3.2.3 弹性碰撞 3.2.4 折半枚举...

    leetcode中国-ACM-Learning:ACM竞赛中关于算法的代码

    leetcode中国 POJ problems ID Problem C++ 1001 1002 1003 1004 1006 1007 ...2 ...POJ ...POJ ...POJ ...POJ ...POJ ...(二)树 ID Problem C++ Source 1 LeetCode 100 2 LeetCode 101 3 LeetCode 437 4 LeetCode 235

    浙江大学ACM模板 计算几何,图论,数据结构,经典题的模板

    1.16.8 pku_2600_二分+圆的参数方程 74 1.16.9 pku_1151_矩形相交的面积 76 1.16.10 pku_1118_共线最多的点的个数 78 1.16.11 pku2826_线段围成的区域可储水量 80 1.16.12 Pick公式 84 1.16.13 N点中三个点组成...

    leetcode2sumc-coding:用C++编码

    二分查找:代码、#、#、# 选择 数组中第 K 个最大元素:# 递归 排列:#、# 哈希 二和:# 同构字符串:# 注意:构建堆,O(n); 提取根并重建 O(logn) 从数据流中查找中位数:# 合并 k 个排序的数组/列表:# 链表 #,#...

    acm_problems:刷题!!!

    #POJ 题集 数论 欧几里得/拓展欧几里得算法 1006 1061 搜索 普通搜索 1062, 1088, 2386 剪枝优化 1011 动态规划 背包 1014 高精度 加减乘除 1001 巧妙处理 思维处理 ...二分查找 1003 1005 ###贪心 1089

    程序设计计算机科学与技术的核心.pptx

    内容 程序设计课程 算法 + 数据结构 = 程序 程序设计计算机科学与技术的核心全文共42页,当前为第2页。 程序设计课程 课程性质 科学?技术?工程? 技术课程 课程目的 编写程序解决问题 教学方式 课堂讲授 / 理论...

Global site tag (gtag.js) - Google Analytics