题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1100

题意:中文题啦~

思路:算斜率不用多说吧?本题唯一一个小问题是数据量是1e4,O(n^2)可能超时,我们可以用个小技巧来解决这个问题;

对这些点用x坐标排序,斜率最大的点一定是排序后相邻的两个点。

上述结论的正确性我们不难证明:

对于已排序的3个点a, b, c,通过画图我们可以知道其有3种排列方式:

1. c在ab延长线上,此时他们的斜率相等;

2. c在ab延长线下侧,很显然此时斜率最大的是ab;

3. c在ab延长线上侧,那么此时ac>ab,bc>ac,所以斜率最大的是bc;

通过上述分析我们可以发现,对于一个点x, 若其后存在点y使得斜率xy>xx+1,那么一定有y-1y>xy,所以斜率最大的两点一定是x坐标相邻的两点;

代码:

 #include <bits/stdc++.h>
#define MAXN 10010
using namespace std; struct Node{
int x, y, number;
}gg[MAXN]; bool cmp(Node a, Node b){
return a.x<b.x;
} int main(void){
std::ios::sync_with_stdio(false), cin.tie(), cout.tie();
int n;
cin >> n;
for(int i=; i<n; i++){
cin >> gg[i].x >> gg[i].y;
gg[i].number=i+;
}
sort(gg, gg+n, cmp);
queue<int> node1, node2;
double cnt=, cc=;
for(int i=; i<n; i++){
cnt=(gg[i].y-gg[i-].y)*1.0/(gg[i].x-gg[i-].x);
if(cnt>cc){
cc=cnt;
while(!node1.empty()){
node1.pop();
}
while(!node2.empty()){
node2.pop();
}
node1.push(gg[i-].number);
node2.push(gg[i].number);
}else if(cnt==cc){
node1.push(gg[i-].number);
node2.push(gg[i].number);
}
}
while(!node1.empty()){
cout << node1.front() << " " << node2.front() << endl;
node1.pop();
node2.pop();
}
return ;
}

51nod1100(计算斜率)的更多相关文章

  1. loj#2483. 「CEOI2017」Building Bridges 斜率优化 cdq分治

    loj#2483. 「CEOI2017」Building Bridges 链接 https://loj.ac/problem/2483 思路 \[f[i]=f[j]+(h[i]-h[j])^2+(su ...

  2. 『科学计算_理论』优化算法:梯度下降法&牛顿法

    梯度下降法 梯度下降法用来求解目标函数的极值.这个极值是给定模型给定数据之后在参数空间中搜索找到的.迭代过程为: 可以看出,梯度下降法更新参数的方式为目标函数在当前参数取值下的梯度值,前面再加上一个步 ...

  3. 计算一元一次方程Y=kX+b

    开发过程中用不到一元一次方程吗?非也,iOS开发中经常会遇到根据某个ScrollView动态偏移量的值来实时设置一个View的透明度,你敢说你不用一元一次方程你能搞定? 想把一个动画效果做好,经常会遇 ...

  4. hdu 3507 斜率优化

    我的第一道斜率优化. 就这道题而言,写出原始的方程: dp[i] = min{ dp[j] + (sum[i]-sum[j])2  + M | j in [0,i) } O(n^2)的复杂度肯定超时, ...

  5. HDU 4258 斜率优化dp

    Covered Walkway Time Limit: 30000/10000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Othe ...

  6. 【斜率优化】bzoj3675-[Apio2014]序列分割&&Uoj104

    题目大意 将一个长度为N的非负整数序列分割成k+l个非空的子序列,每次选择一位置分割后,将会得到一定的分数,这个分数为两个新序列中元素和的乘积.求最大的分数. [UOJ104]并输出任意一种方案 思路 ...

  7. 【计算几何】【斜率】bzoj1610 [Usaco2008 Feb]Line连线游戏

    枚举直线,计算斜率,排序,统计答案. #include<cstdio> #include<cmath> #include<algorithm> using name ...

  8. bzoj 5163: 第k大斜率

    5163: 第k大斜率 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 15  Solved: 4[Submit][Status][Discuss] D ...

  9. 【学习笔记】动态规划—斜率优化DP(超详细)

    [学习笔记]动态规划-斜率优化DP(超详细) [前言] 第一次写这么长的文章. 写完后感觉对斜优的理解又加深了一些. 斜优通常与决策单调性同时出现.可以说决策单调性是斜率优化的前提. 斜率优化 \(D ...

随机推荐

  1. python多进程编程常用到的方法

    python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU资源,在python中大部分情况需要使用多进程.python提供了非常好用的多进程包Multiprocessing,只需要定义 ...

  2. Django--组件-用户认证Auth(auth_user增加字段)

    引入 :  from django.db import models from django.contrib.auth.models import AbstractBaseUser 源码 :  fro ...

  3. 最新App Store审核指南与10大被拒理由

    最近,苹果在官网给出了截至2015年2月份应用被拒绝的十大理由,其中50%以上的应用被拒绝都是因为这10个原因,其中7个理由和2014年相同,其中排名前三的原因分别是:需要补充更多信息.存在明显的bu ...

  4. String源码中hashCode算法

    针对java中String源码hashcode算法源码分析 /** The value is used for character storage. */ private final char val ...

  5. NodeJs如何全局统一处理异常,实现RestFull风格

    当在controller中处理客户端发来的数据时,我们会去校验数据,当数据错误时,我们会给客户端返回一个信息,如: export function add (req, res, next) { con ...

  6. git format-patch的使用【转】

    本文转载自:http://blog.chinaunix.net/uid-28621021-id-3487102.html git format-patch的使用   1.在dev1分支上,打出所有de ...

  7. html5+css3酷炫音频播放器代码

    1. [代码][JavaScript]代码         (function($){    jQuery.fn.extend({        "initAudio" : fun ...

  8. Java接口 详解(二)

    上一篇Java接口 详解(一)讲到了接口的基本概念.接口的使用和接口的实际应用(标准定义).我们接着来讲. 一.接口的应用—工厂设计模式(Factory) 我们先看一个范例: package com. ...

  9. ZOJ 3640 Help Me Escape:期望dp

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3640 题意: 有一个吸血鬼被困住了,他要逃跑... 他面前有n条 ...

  10. TP框架控制器和对应方法创建

    控制器和对应方法创建 控制器是MVC模式中的核心,TP默认有一个控制器:   Index控制器里面有一个操作方法:Index   我们在访问http://localhost:8080/Thinkphp ...