題目鏈接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1112

題意:中文題誒~

思路:對於函數 f(x) = a + kx,對於x足夠大的情況下,顯然f(x)的值的相對大小是只受 k 影響的.對於 n 條這樣的直線最多可以發生 (n-1)*n/2 次超越;

不過本題只要求輸出前 1e4 次超越,所以可以先二分出1e4次超越的時間點(這部分是用來優化常數的),然後再枚舉每一次超越即可.這樣的時間復雜

度爲 O(n^2),對於 1e4 的數據量只要常數小一點還是能過的...

代碼:

 #include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std; const int MAXN = 1e4+;
const int inf = 1e4;
pair<int, int> p[MAXN];//存儲開始時的數據
pair<int, int> p1[MAXN];//存儲1e4時間點的數據
pair<double, pair<int, int> > p2[MAXN*];//存儲答案
int vis[MAXN*], n; int get_times(int mid){ //計算在k時間點可以達到的超越次數
int ans = ;
for(int i=; i<n; i++){
p1[i].first = p[i].first + p[i].second * mid;
p1[i].second = i;
}
sort(p1, p1+n);
for(int i=; i<n; i++){
if(p1[i].second < i){
ans += i-p1[i].second;
}
}
return ans;
} void get_time(void){ //二分出達到1e4次超越的時間點
int l=, r=MAXN*;
int ans=;
while(l < r-){
int mid = (l+r)>>;
int cnt = get_times(mid);
if(cnt == inf) break;
else if(cnt > inf) r = mid;
else l = mid;
}
} int main(void){
scanf("%d", &n);
for(int i=; i<n; i++){
scanf("%d%d", &p[i].first, &p[i].second);
vis[p[i].first] = i+;
}
sort(p, p+n);
get_time();
int indx=;
for(int i=; i<n; i++){
int a2 = p[p1[i].second].first;
for(int j=; j<i; j++){
int a1 = p[p1[j].second].first;
if(a1 > a2){
int b1 = p[p1[j].second].second;
int b2 = p[p1[i].second].second;
double k = (a1-a2)*1.0/(b2-b1); //本次超越的時間點
p2[indx].first = k;
p2[indx].second.first = vis[a2];
p2[indx++].second.second = vis[a1];
}
}
}
if(!indx){
printf("No Solution\n");
}else{
sort(p2, p2+indx);
int cnt = min(indx, inf);
for(int i=; i<cnt; i++){
printf("%d %d\n", p2[i].second.first, p2[i].second.second);
}
}
return ;
}

51nod1112(xjb)的更多相关文章

  1. 程设大作业xjb写——魔方复原

    鸽了那么久总算期中过[爆]去[炸]了...该是时候写写大作业了 [总不能丢给他们不会写的来做吧 一.三阶魔方的几个基本定义 ↑就像这样,可以定义面的称呼:上U下D左L右R前F后B UD之间的叫E,LR ...

  2. hdu_5881_Tea(xjb猜)

    题目链接:hdu_5881_Tea 题意: 有一壶水, 体积在 L 和 R 之间, 有两个杯子, 你要把水倒到两个杯子里面, 使得杯子水体积几乎相同(体积的差值小于等于1), 并且使得壶里剩下水体积不 ...

  3. hdu_5873_Football Games(xjb搞)

    题目链接:hdu_5873_Football Games 题意: 有n个队,每个队都会给其他队打一场,赢一场得2分,平局得一分,输了不得分,然后给你全部比赛结束后的得分,问你是否有假分 题解: 可以知 ...

  4. hdu_5761_Rower Bo(xjb猜公式)

    题目链接:hdu_5761_Rower Bo 题意: 让你求一个物理问题 题解: xjb猜公式,由题目样例可得,答案为8/7,然后我们可以xjb猜出公式为v1*a/(v1*v1-v2*v2),然后特判 ...

  5. 51nod1276(xjb)

    题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1276 题意:中文题诶- 思路:xjb 通过画图可以发现对于当前 ...

  6. 隔壁信概大作业xjb写——同化棋ATAXX

    话说泥萌北大信科啊,助教是有多懒...去年黑白棋今年同化棋,顺带打ai都不用自己写标程... 好吧..我知道泥萌重点在各种sb的辅助操作上..什么悲剧的可以随时暂停载入...有毒吧 [据说泥萌上课没讲 ...

  7. [HDU5902]GCD is Funny(xjb搞)

    题意:n个数每次选三个数删除,取其中两个数将gcd放回去两次,问最后剩的数可能是多少 分析:考虑最优情况: 先拿出三个数,留下两个x,x  再来一个y,(x,x,y)我们可以删去一个x,留下两个gcd ...

  8. hdu_5927_Auxiliary Set(xjb搞)

    题目链接:hdu_5927_Auxiliary Set 题意: 给一棵n个节点的树,最开始全部都是重点,现在有q个询问,每次给你一些轻点,并叫你输出整棵树的重点数量, 轻点可能会变为重点,如果这个轻点 ...

  9. hdu_5813_Elegant Construction(xjb搞)

    题目链接:hdu_5813_Elegant Construction 题意: 给你n个点,每个点要可以到达ai个点,可以直接可以间接,不能有环,问是否可行,如果可行就任选一种方式连接,并输出连接的边数 ...

随机推荐

  1. 转换(旋转)transform

    div { transform:rotate(180deg); -ms-transform:rotate(180deg); /* IE 9 */ -moz-transform:rotate(180de ...

  2. Django—工程创建以及models数据库易错点

    Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...

  3. VIM中使用tab键自动完成(vim tab键自动补全 )插件supertab

    supertab.vmb 这个插件好好用, Tab自动补全 http://www.vim.org/scripts/script.php?script_id=1643 安装步骤: 1.下载 supert ...

  4. linux下编译安装python

    从官网下载指定的源码包 https://www.python.org/downloads/source/ 把源码文件以二进制方式上传到linux服务器 安装python需要用到gcc工具,首先查看gc ...

  5. contenttype应用 , 缓存相关

    一. Django的contenttypes contenttypes 是Django内置的一个应用,可以追踪项目中所有 app和model 的对应关系,并记录在 django_content_typ ...

  6. POJ3450 Corporate Identity —— 后缀数组 最长公共子序列

    题目链接:https://vjudge.net/problem/POJ-3450 Corporate Identity Time Limit: 3000MS   Memory Limit: 65536 ...

  7. matlab之plot()函数

    是个画图函数: 语法: figure(1000);hold on;plot(x,y);axis equal; 其中,x和y是某两个长度相同的列向量.比如:x=[1;2;3;4];y=[1;2;3;4] ...

  8. javascript macrotask & microtask

    先看一个 实例 案例 console.log('script start'); setTimeout(function() { console.log('setTimeout'); }, 0); Pr ...

  9. bzoj3462DZY Loves Math II

    数据范围:$$2 \leq S \leq 2 * 10^6$$ $$1 \leq n \leq 10^{18}$$ $$ 1 \leq q \leq 10^5$$ 数学+dp 题解写一年系列... 观 ...

  10. kettle结合MySQL生成保留最近6个月月度报告_20161009

    之前计算用户ID各月的金额(各月在列字段),用的是下面代码 ,b.金额,,b.金额,,b.金额,NULL)) AS 9月金额 FROM ( SELECT city AS 城市,DATE_FORMAT( ...