Codeforces 333E Summer Earnings - bitset
显然答案是三点间任意两点之间的距离的最小值的一半。
那么一定有一对点的距离会被算入答案。
考虑将所有边按距离从大到小排序。当加入某一条边的时候出现了三元环。那么这条边的长度的一半就是答案。
至于判断三元环就用bitset。再加上很难跑满,以及for自带二分之一常数就过了。
标算是二分答案,然后枚举一个点,保留距离和它大于等于$mid$的所有点,求一个凸包然后判断之间最远点对的距离是否大于等于$mid$。
时间复杂度$O(n^{2}\log V)$,常数比较大,可能会比较卡,需要特殊卡常技巧。
由于答案一定与某一条边的长度有关,所以应该可以二分是哪一条边来减小常数。
Code
/**
* Codeforces
* Problem#333E
* Accepted
* Time: 2246ms
* Memory: 142056k
*/
#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <bitset>
#include <cstdio>
#include <cmath>
#include <ctime>
using namespace std;
typedef bool boolean;
#define ll long long typedef class Point {
public:
int x, y;
}Point; ll dis2(Point a, Point b) {
return (a.x - b.x) * 1ll * (a.x - b.x) + (a.y - b.y) * 1ll * (a.y - b.y);
} typedef class Data {
public:
int x, y;
ll dis; boolean operator < (Data b) const {
return dis > b.dis;
}
}Data; int n, m;
ll res = ;
Point* ps;
Data* ds;
bitset<> *bs; inline void init() {
scanf("%d", &n);
ds = new Data[(n * n + )];
ps = new Point[(n + )];
bs = new bitset<>[(n + )];
for (int i = ; i <= n; i++)
scanf("%d%d", &ps[i].x, &ps[i].y);
} inline void solve() {
for (int i = ; i <= n; i++)
for (int j = i + ; j <= n; j++)
++m, ds[m].x = i, ds[m].y = j, ds[m].dis = dis2(ps[i], ps[j]);
sort(ds + , ds + m + );
for (int i = ; i <= m; i++) {
int x = ds[i].x, y = ds[i].y;
if ((bs[x] & bs[y]).count()) {
printf("%.9lf", sqrt(ds[i].dis) / );
return;
}
bs[x][y] = , bs[y][x] = ;
}
puts("");
} int main() {
init();
solve();
return ;
}
Codeforces 333E Summer Earnings - bitset的更多相关文章
- Codeforces 333E Summer Earnings ——Bitset
[题目分析] 找一个边长最大的三元环. 把边排序,然后依次加入.加入(i,j)时,把i和j取一个交集,看看是否存在,存在就找到了最大的三元环. 输出即可,n^3/64水过. [代码] #include ...
- Codeforces 333E Summer Earnings(bitset)
题目链接 Summer Earnings 类似MST_Kruskal的做法,连边后sort. 然后对于每条边,依次处理下来,当发现存在三角形时即停止.(具体细节见代码) 答案即为发现三角形时当前所在边 ...
- CodeForces 333E. Summer Earnings
time limit per test 9 seconds memory limit per test 256 megabytes input standard input output standa ...
- Codeforces 232E - Quick Tortoise bitset+分治
题意: 思路: //By SiriusRen #include <cstdio> #include <bitset> #include <vector> using ...
- Codeforces Gym 100342J Problem J. Triatrip 求三元环的数量 bitset
Problem J. Triatrip Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100342/at ...
- codeforces 707D-(DFS+bitset)
题目链接:http://codeforces.com/contest/707/problem/D 根据询问建立一棵树然后DFS. #include<bits/stdc++.h> using ...
- Codeforces Gym 100342J Problem J. Triatrip bitset 求三元环的数量
Problem J. TriatripTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100342/att ...
- Codeforces 917F Substrings in a String - 后缀自动机 - 分块 - bitset - KMP
题目传送门 传送点I 传送点II 传送点III 题目大意 给定一个字母串,要求支持以下操作: 修改一个位置的字母 查询一段区间中,字符串$s$作为子串出现的次数 Solution 1 Bitset 每 ...
- Codeforces 788C The Great Mixing(背包问题建模+bitset优化或BFS)
[题目链接] http://codeforces.com/problemset/problem/788/C [题目大意] 给出一些浓度的饮料,要求调出n/1000浓度的饮料,问最少需要多少升饮料 [题 ...
随机推荐
- A Java back-end engineer's study notes
loveincode's notes 学习工作中的一些记录,收藏. 人气很高的链接库 计算机基础相关笔记 操作系统 , 编译原理 , 计算机网络 , 互联网协议... 常用数据结构与算法 Java 实 ...
- 【C++/实验三】类和对象
1.定义一个矩形类,有长,宽两个属性,有成员函数计算矩形的面积. 在该矩形类中,我做了5个主要的测试. 构造函数带默认值参数,利用默认值参数计算矩形面积:rectangle(double x=2.0, ...
- 关于vue-cli创建项目(小白)
vue-cli,都说是vue脚手架,一般cli是命令行的意思,一看就知道与node有关,其实脚手架是建筑工用的工具,给工人踩在上面干活的,这里借用它的意思,我觉得应该叫vue平台工具大家更容易懂,毕竟 ...
- 谷歌浏览器(Chrome)禁止浏览器缓存 设置
在开发项目期间用谷歌浏览器调试,他总是缓存我的css样式这个很气人啊,后经过摸索找到了方法,如下 先F12或者shift+ctrl+j 打开调试者工具,在找Network这个tab按钮,点击进入,勾选 ...
- 解决mapper绑定异常:nested exception is org.apache.ibatis.binding.BindingException:
原因: 此异常的原因是由于mapper接口编译后在同一个目录下没有找到mapper映射文件而出现的.由于maven工程在默认情况下src/main/java目录下的mapper文件是不发布到targe ...
- python全栈开发 * 20 继承知识点汇总 * 180530
20 面向对象的三大特征之一(继承,多态,封装) -----继承 1.继承的定义: 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类;父类又可称为基类或超类,新建的类称为派生 ...
- Codeforces 1100 - A/B/C/D/E/F - (Undone)
链接:https://codeforces.com/contest/1100 A - Roman and Browser - [暴力枚举] 题意:浏览器有 $n$ 个网页,编号 $1 \sim n$, ...
- xss脚本绕过限制的方法
第一关:第一关比较简单,直接写入标签就可以,这里不多说了,payload如下: http://sqler.win/xss/level1.php?name=test%3Csvg/onload=alert ...
- Java ee第四周作业
代码下载链接:https://github.com/javaee/tutorial-examples/tree/master/web/jsf/hello1 代码内容: /*** Copyright ( ...
- PTA最短工期
一个项目由若干个任务组成,任务之间有先后依赖顺序.项目经理需要设置一系列里程碑,在每个里程碑节点处检查任务的完成情况,并启动后续的任务.现给定一个项目中各个任务之间的关系,请你计算出这个项目的最早完工 ...