[洛谷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: ...
随机推荐
- 系统权限远程线程注入到Explorer.exe
目录 提升为系统权限,注入到explorer中 一丶简介 二丶注入效果图 提升为系统权限,注入到explorer中 一丶简介 我们上一面说了系统服务拥有系统权限.并且拥有system权限.还尝试启动了 ...
- nginx 反向代理之 负载均衡
Nginx通过upstream和proxy_pass实现了负载均衡.本质上也是Nginx的反向代理功能,只不过后端的server为多个. 案例一(简单的轮询): upstream www { serv ...
- Redis内存数据库
remote dictionary server 远程字典服务器 Redis默认支持16个数据库,不同的应用应该使用不同的Redis实例存储数据. 支持数据类型:字符串,哈希散列,列表,集合,有序 ...
- 【Beta】Scrum meeting 6
目录 写在前面 进度情况 任务进度表 Beta-1阶段燃尽图 遇到的困难 照片 commit记录截图 小程序前端仓库 后端代码仓库 技术博客 写在前面 例会时间:5.10 22:30-22:50 例会 ...
- vue中select设置默认选中
vue中select设置默认选中 一.总结 一句话总结: 通过v-model来:select上v-model的值为option默认选中的那项的值(value) 二.select设置默认选中实例 < ...
- latch - undo global data等待事件分析
一环境跑压力测试的时候,标题所述等待事件在top N中.不用查,也知道是因为undo竞争的事件. 根据metalink文档解释,是由于undo表空间不足引起的. This implies that s ...
- ZooKeeper相关资料集锦
1.ZooKeeper相关概念总结 https://github.com/Snailclimb/JavaGuide/blob/master/docs/system-design/framework/Z ...
- 如何在nginx下实现访问web网站密码认证保护的功能
在某些特定的环境下,我们希望nginx下的web站点在访问时需要用户输入账户密码才能访问.以便拒绝那些不速之客. 其实,配置起来也很简单,按照下面的步骤即可实现. 一.编辑虚拟主机配置文件. serv ...
- rabbitMQ消息队列 – Message方法解析
消息的创建由AMQPMessage对象来创建$message = new AMQPMessage("消息内容");是不是很简单. 后边是一个数组.可以对消息进行一些特殊配置$mes ...
- Eclipse中引入com.sun.image.codec.jpeg包报错的完美解决办法
转: Eclipse中引入com.sun.image.codec.jpeg包报错的完美解决办法 更新时间:2018年02月14日 17:13:03 投稿:wdc 我要评论 Java开发中 ...