题目大意:很早以前做的题

题解:

卡点:

C++ Code:

#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#include <algorithm>
#include <random>
#include <cstdio>
#include <cstdlib>
#include <ctime>
#define maxn 1010
#define long
const long double eps = 1e-8;
inline long double abs(long double x) { return x < 0 ? -x : x; } struct Point {
int x, y;
bool isR;
long double b;
Point() { }
Point(int __x, int __y, bool __isR) : x(__x), y(__y), isR(__isR), b(__x) { }
inline bool operator == (const Point &rhs) const {
return abs(b - rhs.b) < eps;
}
} P[maxn];
inline long double slope(const Point &lhs, const Point &rhs) {
return (lhs.y - rhs.y) / static_cast<long double> (lhs.x - rhs.x);
}
inline bool cmp(int a, int b) { return P[a].b < P[b].b; }
inline int sign(long double x) { return x < -eps ? -1 : x > eps; } std::mt19937 rd(time(0));
int n, totR, totB;
int R[maxn], B[maxn], rnk[maxn];
int ans; void calc() {
std::sort(rnk + 1, rnk + n + 1, cmp);
for (int l = 1, r, cnt[2], res = 0; l <= n; l = r) {
r = l;
cnt[0] = cnt[1] = 0;
while (r <= n && P[rnk[l]] == P[rnk[r]])
++cnt[P[rnk[r]].isR], ++r;
res += cnt[1];
ans = std::max(ans, res);
if (cnt[0]) res = cnt[1];
}
}
void solve() {
int __B = rd() % totB, __R = rd() % totR;
Point _R = P[R[__R]], _B = P[B[__B]];
if (_R.x == _B.x) return ;
const long double k = slope(_R, _B), b = _R.y - _R.x * k;
for (register int i = 1; i <= n; ++i) P[i].b = P[i].y - P[i].x * k;
long double min = 1e20, max = -1e20;
for (int *i = B; i != B + totB; ++i) {
int __s = sign(P[*i].b - b);
if (__s) {
if (__s == 1) min = std::min(min, P[*i].b);
else max = std::max(max, P[*i].b);
}
}
int resm = 1, resM = 1;
for (int *i = R; i != R + totR; ++i) {
int __s = sign(P[*i].b - b);
if (__s) {
if (__s == 1) resM += (P[*i].b <= min + eps);
else resm += (P[*i].b >= max - eps);
}
}
ans = std::max(ans, std::max(resm, resM));
} int main() {
scanf("%d", &n);
for (int i = 1, x, y; i <= n; ++i) {
static char ch;
scanf("%d%d%1s", &x, &y, &ch);
P[i] = Point(x, y, ch == 'R');
rnk[i] = i;
if (ch == 'R') R[totR++] = i;
else B[totB++] = i;
}
if (totB == 0 || totR == 0) {
printf("%d\n", totR);
return 0;
}
calc();
while (true) {
for(int i = 1; i <= 10; ++i) solve();
if (clock() / static_cast<double> (CLOCKS_PER_SEC) > 0.998) break;
}
printf("%d\n", ans);
return 0;
}

  

[洛谷P4385][COCI2009]Dvapravca(咕咕咕)的更多相关文章

  1. luogu P4385 [COCI2009]Dvapravca

    传送门 我真的弱,正解都不会还打了个错的暴力 考虑平行线与x轴平行,那么可以按照y为第一关键字升序,x为第二关键字升序排序,然后合法的一段红点就是连续的一段,答案也就是最大的连续红色段 推广到一般情况 ...

  2. P4385 [COCI2009]Dvapravca

    首先特判掉蓝点数量\(<2\)的情况.没有蓝点答案就是\(n\),有一个蓝点可以枚举一个红点,选择过这个蓝点和红点的一条线和在无穷远处的平行线(即这条线对应的两个半平面). 这里认为过一个点是与 ...

  3. 「P4996」「洛谷11月月赛」 咕咕咕(数论

    题目描述 小 F 是一个能鸽善鹉的同学,他经常把事情拖到最后一天才去做,导致他的某些日子总是非常匆忙. 比如,时间回溯到了 2018 年 11 月 3 日.小 F 望着自己的任务清单: 看 iG 夺冠 ...

  4. (转)S5pv210 HDMI 接口在 Linux 3.0.8 驱动框架解析 (By liukun321 咕唧咕唧)

    作者:liukun321 咕唧咕唧 日期:2014.1.18 转载请标明作者.出处:http://blog.csdn.net/liukun321/article/details/18452663 本文 ...

  5. u-boot for tiny210 ver1.0(by liukun321咕唧咕唧)

     新版本下载: 下面的链接提供了较新版本的源码 ver4.0源码下载:u-boot for tiny210 ver4.0 ver3.1源码下载: u-boot for tiny210 ver3.1 v ...

  6. Lightning Conductor 洛谷P3515 决策单调性优化DP

    遇见的第一道决策单调性优化DP,虽然看了题解,但是新技能√,很开森. 先%FlashHu大佬,反正我是看了他的题解和精美的配图才明白的,%%%巨佬. 废话不多说,看题: 题目大意 已知一个长度为n的序 ...

  7. 洛谷P1337 【[JSOI2004]平衡点 / 吊打XXX】(模拟退火)

    洛谷题目传送门 很可惜,充满Mo力的Mo拟退火并不是正解.不过这是一道最适合开始入手Mo拟退火的好题. 对模拟退火还不是很清楚的可以看一下 这道题还真和能量有点关系.达到平衡稳态的时候,物体的总能量应 ...

  8. 【LGR-054】洛谷10月月赛II

    [LGR-054]洛谷10月月赛II luogu 成功咕掉Codeforces Round #517的后果就是,我\(\mbox{T4}\)依旧没有写出来.\(\mbox{GG}\) . 浏览器 \( ...

  9. 洛谷P3195||bzoj1010 [HNOI2008]玩具装箱TOY

    洛谷P3195 bzoj1010 设s数组为C的前缀和 首先$ans_i=min_{j<i}\{ans_j+(i-j-1+s_i-s_j-L)^2\}$ (斜率优化dp)参考(复读)https: ...

随机推荐

  1. hbase基础知识一

    1. hbase是什么 漫画学习hbase----最易懂的Hbase架构原理解析 http://developer.51cto.com/art/201904/595698.htm 1.1 hbase的 ...

  2. R 语言处理excel为data.frame

    使用 R包 xlsx 或者 openxlsx 安装 install.packages("xlsx", repos="https://cloud.r-project.org ...

  3. Zabbix实战-简易教程--中间件kafka监控

    一.环境准备 1.安装kafka Step 1: 下载代码 你可以登录Apache kafka 官方下载.http://kafka.apache.org/downloads.html备注:2.11-1 ...

  4. C#控制台程序入口函数 Main(string[] args) 参数详解

    学习C#编程最常见的示例程序是在控制台应用程序中输出Hello World! using System; namespace DemoMainArgs { class Program { static ...

  5. Python 下载依赖包环境经常失败超时解决方法

    人生苦短,我用python!为什么很多人喜欢用python,因为包多呀,各种调包.但是调包有的时候也调的闹心,因为安装包不是失败就是很慢,很影响自己的工作进度,这里给出一个pip快速安装工具包的办法, ...

  6. Sketch2Code - Transform sketches into HTML using AI

    Sketch2Code - Transform sketches into HTML using AI https://sketch2code.azurewebsites.net/generated- ...

  7. 多线程--同步--方法块和同步块synchronized

    package com.sxt.syn; /** * 线程安全: 在并发时保证数据的正确性.效率尽可能高 * synchronized * 1.同步方法 * 2.同步块 * * */ public c ...

  8. (.Net) NLog 记录日志功能

    https://codeload.github.com/NLog/NLog/zip/v4.6.6 https://nlog-project.org/?r=redirect Logger logger ...

  9. (原)关于OpenGL中的几个坐标系统的理解

    在我们使用opengl做图像处理的过程中,其中必不可少的基本都会用到顶点着色器和片元着色器. 完整的渲染管线图: 那么在这两个着色器程序中,我们需要绘制我们的图像的时候,他们的坐标和位置对应关系是如何 ...

  10. xpath库学习

    xpath解析是我们在爬虫中最常用也是最通用的一种数据解析方式. 环境安装 pip install lxml 解析原理 使用通用爬虫爬取网页数据 实例化etree对象,且将页面数据加载到该对象中 使用 ...