[洛谷P4385][COCI2009]Dvapravca(咕咕咕)
题目大意:很早以前做的题
题解:
卡点:
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(咕咕咕)的更多相关文章
- luogu P4385 [COCI2009]Dvapravca
传送门 我真的弱,正解都不会还打了个错的暴力 考虑平行线与x轴平行,那么可以按照y为第一关键字升序,x为第二关键字升序排序,然后合法的一段红点就是连续的一段,答案也就是最大的连续红色段 推广到一般情况 ...
- P4385 [COCI2009]Dvapravca
首先特判掉蓝点数量\(<2\)的情况.没有蓝点答案就是\(n\),有一个蓝点可以枚举一个红点,选择过这个蓝点和红点的一条线和在无穷远处的平行线(即这条线对应的两个半平面). 这里认为过一个点是与 ...
- 「P4996」「洛谷11月月赛」 咕咕咕(数论
题目描述 小 F 是一个能鸽善鹉的同学,他经常把事情拖到最后一天才去做,导致他的某些日子总是非常匆忙. 比如,时间回溯到了 2018 年 11 月 3 日.小 F 望着自己的任务清单: 看 iG 夺冠 ...
- (转)S5pv210 HDMI 接口在 Linux 3.0.8 驱动框架解析 (By liukun321 咕唧咕唧)
作者:liukun321 咕唧咕唧 日期:2014.1.18 转载请标明作者.出处:http://blog.csdn.net/liukun321/article/details/18452663 本文 ...
- 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 ...
- Lightning Conductor 洛谷P3515 决策单调性优化DP
遇见的第一道决策单调性优化DP,虽然看了题解,但是新技能√,很开森. 先%FlashHu大佬,反正我是看了他的题解和精美的配图才明白的,%%%巨佬. 废话不多说,看题: 题目大意 已知一个长度为n的序 ...
- 洛谷P1337 【[JSOI2004]平衡点 / 吊打XXX】(模拟退火)
洛谷题目传送门 很可惜,充满Mo力的Mo拟退火并不是正解.不过这是一道最适合开始入手Mo拟退火的好题. 对模拟退火还不是很清楚的可以看一下 这道题还真和能量有点关系.达到平衡稳态的时候,物体的总能量应 ...
- 【LGR-054】洛谷10月月赛II
[LGR-054]洛谷10月月赛II luogu 成功咕掉Codeforces Round #517的后果就是,我\(\mbox{T4}\)依旧没有写出来.\(\mbox{GG}\) . 浏览器 \( ...
- 洛谷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: ...
随机推荐
- SQL进阶-数据类型转换
一般有这几种转换: 一.数值型与字符型的转化 ### 数值型转为字符型: –> '65' select cast(65 as char); –> 'A' select char(65); ...
- 2019蓝桥杯Java第十题大学生B组——最短路径思想
题目: 代码: package priv.tzk.lanqiao.ten; import java.io.IOException; import java.util.Scanner; public c ...
- MySQL之replace函数应用
replace函数,从字面上看其主要作用就是替换.实际它的作用确实是替换.那么替换有哪些应用场景呢?比如A表和B表有一个关联的字段就是id,但是在A中id是数字,在B中id也是数字,但是B中id多一个 ...
- java并发编程(一)线程状态 & 线程中断 & 线程间的协作
参考文章: Java线程的5种状态及切换:http://blog.csdn.net/pange1991/article/details/53860651 线程的5种状态: 1. 新建(NEW):新创建 ...
- 【转】Linux 系统如何处理名称解析
原文写的很好:https://blog.arstercz.com/linux-%E7%B3%BB%E7%BB%9F%E5%A6%82%E4%BD%95%E5%A4%84%E7%90%86%E5%90% ...
- java.lang.IllegalArgumentException: host parameter is null
即 URL 应为 http://www.baidu.com 但是实际配置成了 www.baidu.com 所以出现此错误
- WINDOWS 命令行调用SAS代码 并指定输出路径 示例
ECHO "设置SAS.EXE 路径" SET PATH=D:\Program Files\SASHome\SASFoundation\9.4\SAS.EXE echo " ...
- Salt Highstate数据结构定义
作者言 这篇文档详细解释了SLS文件中,每个部分的名称与含义,以及SLS中的数据处理后的数据结构. 我只是SaltStack的初学者,如果文中有错误的地方,请不吝赐教.在学习的过程,我做了一些实验,犯 ...
- ssh scp 上传下载文件
scp username@servername:/path/filename 例如scp codinglog@192.168.0.101:/home/kimi/test.txt 把192.168. ...
- UPDATE REPLACE 替换"\\"
UPDATE Working_InterfaceToManager SET StudyPhotoInfoList = REPLACE(StudyPhotoInfoList,"\\\\&quo ...