权限题鸭qwq

首先可以知道最优答案选出来的直线一定可以经过某条线段左端点,如果这条直线没有过左端点,可以通过平移和旋转等操作达到.所以可以枚举这条直线过了哪条线段的左端点,那么对于其他线段,能对答案产生贡献当且仅当该直线的斜率 在 选出的左端点分别和线段两端点连线 构成的斜率区间内.所以将斜率离散后每条线段会对某段区间加上该线段长度,那么只要求单点最大值就行了,可以差分处理

然而一直lower_bound,慢的飞起,吸氧卡过去的qwq

//大力爆搜------走错片场了???
#include<bits/stdc++.h>
#define LL long long
#define il inline
#define re register
#define db double
#define eps (1e-5) using namespace std;
const int N=2000+10;
il LL rd()
{
LL x=0,w=1;char ch=0;
while(ch<'0'||ch>'9') {if(ch=='-') w=-1;ch=getchar();}
while(ch>='0'&&ch<='9') {x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
return x*w;
}
struct node
{
int x,y;
node(){}
node(int nwx,int nwy){x=nwx,y=nwy;if(y<0) x=-x,y=-y;}
bool operator < (const node &bb) const {return 1ll*x*bb.y<1ll*y*bb.x;}
bool operator == (const node &bb) const {return 1ll*x*bb.y==1ll*y*bb.x;}
}b[N<<1];
int n,m,a[N][3],s[N<<1],an,ans; int main()
{
n=rd();
for(int i=1;i<=n;i++)
{
a[i][0]=rd(),a[i][1]=rd(),a[i][2]=rd();
if(a[i][0]>a[i][1]) swap(a[i][0],a[i][1]);
}
for(int i=1;i<=n;i++)
{
m=0;
for(int j=1;j<=n;j++)
{
if(i==j||a[i][2]==a[j][2]) continue;
b[++m]=node((a[j][0]-a[i][0]),(a[j][2]-a[i][2])),b[++m]=node((a[j][1]-a[i][0]),(a[j][2]-a[i][2]));
}
sort(b+1,b+m+1);
m=unique(b+1,b+m+1)-b-1;
memset(s,0,sizeof(s));
for(int j=1;j<=n;j++)
{
if(i==j||a[i][2]==a[j][2]) continue;
int ll=lower_bound(b+1,b+m+1,node((a[j][0]-a[i][0]),(a[j][2]-a[i][2])))-b,rr=lower_bound(b+1,b+m+1,node((a[j][1]-a[i][0]),(a[j][2]-a[i][2])))-b;
if(ll>rr) swap(ll,rr);
s[ll]+=a[j][1]-a[j][0],s[rr+1]-=a[j][1]-a[j][0];
}
an=0;
for(int j=1;j<=m;j++)
{
s[j]+=s[j-1];
an=max(an,s[j]);
}
ans=max(ans,an+a[i][1]-a[i][0]);
}
printf("%d\n",ans);
return 0;
}

BZOJ 4614[Wf2016]Oil的更多相关文章

  1. BZOJ 4614 【Wf2016】 Oil

    题目链接:Oil 感觉同时几线作战有点吃不消啊-- 这道题有一个显然的结论,那就是最优的直线一定过某条线段的端点. 仔细想想很有道理.如果最终的直线没有过线段的端点的话,那么这条直线就一定可以平移,直 ...

  2. 枚举(分类讨论):BZOJ 1177: [Apio2009]Oil

    1177: [Apio2009]Oil Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 1477  Solved: 589[Submit] Descri ...

  3. BZOJ 4610: [Wf2016]Ceiling Functi 水题

    4610: [Wf2016]Ceiling Functi 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4610 Description ...

  4. BZOJ4614 [Wf2016]Oil

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...

  5. BZOJ 1177 [Apio2009]Oil(递推)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1177 [题目大意] 给出一个矩阵,从中选出3个k*k且不相交的矩阵,使得其总和最大 [ ...

  6. [BZOJ]1177: [Apio2009]Oil

    题目大意:给出一个n*m的矩阵,选出3个不相交的k*k子矩阵,使得子矩阵中元素和最大.(k<=n,m<=1500) 思路:选出的子矩阵有3种情况:横着排三个.竖着排三个.三角状分布(其中有 ...

  7. BZOJ 4619: [Wf2016]Swap Space(贪心)

    传送门 解题思路 首先肯定是先处理\(b>a\)的,这样可以获得更多空间.处理时要先处理\(a\)比较小的,再处理\(a\)比较大的,因为要求最小值,而\(b>a\)的总量是确定的,那么就 ...

  8. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  9. 【BZOJ】【1177】【APIO2009】Oil

    DP 找出三个正方形,可以转化为将整个油田切成三个矩形块,每块中各找一个正方形区域,切的形式只有6种,分类更新ans即可 题解:http://trinklee.blog.163.com/blog/st ...

随机推荐

  1. Test Scenarios for result grid

    1 Page loading symbol should be displayed when it is taking more than default time to load the resul ...

  2. Jenkins中使用GitLab的配置

    1. 概述 在Jenkins中从GitLab上拉取代码进行打包或测试. 2. 安装 Jenkins和GitLab默认已经安装好,安装过程此处不再赘述. 在Jenkins上安装Git和Gitlab插件, ...

  3. 一本通1530 Ant Trip

    1530:Ant Trip [题目描述] 原题来自:2009 Multi-University Training Contest 12 - Host by FZU 给你无向图的 N 个点和 M 条边, ...

  4. MySQL Binlog详解

    MySQL Binlog详解 Mysql的binlog日志作用是用来记录mysql内部增删改查等对mysql数据库有更新的内容的记录(对数据库的改动),对数据库的查询select或show等不会被bi ...

  5. day27 封装

    广义上的面向对象的封装: 代码的保护,面向对象思想本身就是一种封装 只让自己的对象调用自己类的方法 狭义的封装: 面向对象的三大特性之一,其他两个是继承和多态. 属性和方法都可以藏起来不让你看到 cl ...

  6. Real mode & Protected mode

    [转]  https://objectkuan.gitbooks.io/ucore-docs/content/lab1/lab1_3_2_1_protection_mode.html 为何要了解Int ...

  7. 监控(1)-企业常用服务监控shell

    -----------------企业监控------------------------主动探测监控(“监控机”主动探测“被监控机”)HTTP服务器监控#!/bin/shLANG=C#被监控服务器. ...

  8. /dev/null与/dev/zero区别

    /dev/null和/dev/zero的区别 /dev/null,外号叫无底洞,你可以向它输出任何数据,它通吃,并且不会撑着! /dev/zero,是一个输入设备,你可你用它来初始化文件.该设备无穷尽 ...

  9. jieba分词器

    始终觉得官方文档是最好的学习途径.嗯,我只是一个大自然的搬运工.传送门https://github.com/fxsjy/jieba 1.分词 jieba.cut 方法接受三个输入参数: 需要分词的字符 ...

  10. 调用Microsoft.Office.Interop.Word生成自定义Word文档

    具体思路: 1.先制作Word模版,使用文本框+书签的方式来设计模版: 2.模版制作完之后,根据模版生成新文件,使用File.Copy方法,生成.doc格式新文件: 3.后台取得数据,参照网页渲染的方 ...