CodeForces 800B Volatile Kite(点与直线的距离)(Java 实现) 传送门 如果想要一个凸多边形不退化为凹多边形,那么任意的相邻的三个点必然最多形成一条直线.因此我们可以求出点i-1和i+1的直线向量,再求点i到这条直线的距离,答案必然是取其中最小的一个值 import java.io.*; import java.util.*; public class Main { static class Point { double x,y; Point(double xx,…
计算几何,直觉. 凭直觉猜的做法,把每条线段的中点连起来,每个点到对应内部线段的距离,取个最小值. #include <iostream> #include <cstdio> #include <cmath> #include <cstring> #include <string> #include <queue> #include <stack> #include <vector> #include <…
地址:http://codeforces.com/contest/801/problem/D 题目: D. Volatile Kite time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output You are given a convex polygon P with n distinct vertices p1, p2, ..., p…
D. Volatile Kite time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output You are given a convex polygon P with n distinct vertices p1, p2, ..., pn. Vertex pi has coordinates (xi, yi) in the 2D pla…
我们在检测图像的边缘图时,有时需要检测出直线目标,hough变换检测出直线后怎么能更进一步的缩小区域呢?其中,可以根据距离来再做一判断,就涉及到了点与直线的距离问题. 点到直线距离代码如下: //=================================排除干扰直线============================================ // 根据中心点与直线的距离 排除干扰直线 // 点(x0,y0)到直线Ax+By+C=0的距离为d = (A*x0+B*y0+C)/s…
求点到直线的距离: double dis(point p1,point p2){   if(fabs(p1.x-p2.x)<exp)//相等的  {    return fabs(p2.x-pegx);    }  else     {   double k=(p2.y-p1.y)/(p2.x-p1.x);   double b=p2.y-k*p2.x;   return fabs(k*pegx-pegy+b)/sqrt(k*k+1);//返回的是距离的   }}判断多边形是否为凸多边形 if…
/****点到直线的距离*** * 过点(x1,y1)和点(x2,y2)的直线方程为:KX -Y + (x2y1 - x1y2)/(x2-x1) = 0 * 设直线斜率为K = (y2-y1)/(x2-x1),C=(x2y1 - x1y2)/(x2-x1) * 点P(x0,y0)到直线AX + BY +C =0DE 距离为:d=|Ax0 + By0 + C|/sqrt(A*A + B*B) * 点(x3,y3)到经过点(x1,y1)和点(x2,y2)的直线的最短距离为: * distance =…
最后一面挂在volatile关键字上,面试官:重新学学Java吧! 为什么会有volatile关键字? volatile: 易变的; 无定性的; 无常性的; 可能急剧波动的; 不稳定的; 易恶化的; 易挥发的; 易发散的; 从上面的单词本意我们可以知道这个关键词用于修饰那些易变的变量 为了让我们更好理解为什么volatile这个关键字的作用以及存在的意义 我们先来看一段代码: package com.laoqin.juc; /** * @Description TODO 测试volatile关键…
[题目链接]:http://codeforces.com/contest/801/problem/D [题意] 给你一个凸多边形的n个点; 然后允许你将每个点移动到距离不超过D的范围内; 要求无论如何移动这n个点始终形成凸多边形; 问D最大为多少; [题解] 如上图 是相邻的3个点(顺时针) 则我们要在(x1,y1)到直线(x0,y0)->(x2,y2)的距离的二分之一 即 1/2Di中取最小值 因为如果D再大一点 连成的l1和l2就会出现 l2在l1的另外一侧的情况; 而这就使得边l2的两侧都…
题目链接:http://codeforces.com/contest/801/problem/D 题意:求出一个最大值D,使得一个给定的凸多边形任意点移动范围在半径为D的圆中,都不会构成一个凹都边形. 还有给出的多边形的点是按顺时针给出的. 题解:要使的任意点移动都不构成凹多边形,显然只要最极限的移动状态就是相邻的3个点在同一直线上. 于是只要遍历一遍所有的点然后计算出该点到相邻两点构成的直线距离d.D=min(d[i]/2); 所以这题还会用到一个公式点到线的距离 #include <iost…
需要用到2个数学公式 1,已知2点求其直线方程 2,点到直线的距离 1,Y=kX+b 分别将两点带入以上方程,求出k 和b 例如: p0={x:?,y:?}, p1={x:?,y:?} 可解得方程: -((p0.y-p1.y)/(p0.x-p1.x))*x  + 1*y +   (p0.y*p1.x-p1.y*p0.x)/(p1.x-p0.x)=0 其中: k=-((p0.y-p1.y)/(p0.x-p1.x)) b=(p0.y*p1.x-p1.y*p0.x)/(p1.x-p0.x) 2,点到直…
/* 爆头 Description gameboy是一个CS高手,他最喜欢的就是扮演警察, 手持M4爆土匪的头.也许这里有人没玩过CS,有必 要介绍一下“爆头”这个术语:所谓爆头,就是子 弹直接命中对方的头部,以秒杀敌人. 现在用一个三维的直角坐标系来描述游戏中的三维空间 (水平面为xoy平面,z轴正方向是上方). 假设游戏中角色的头是一个标准的球.告诉 你土匪的身高,头部半径,所站位置的坐标: gameboy所控警察的身高,头部半径, 所站位置的坐标,以及枪头所指方向的单位向量. gamebo…
数学知识太差,一点点积累,高手勿喷. 1. 先求出AB向量 a = ( x2-x1, y2-y1 ) 2. 求AB向量的单位方向向量 b = √((x2-x1)^2 + (y2-y1)^2)) a1 = ( (x2-x1)/b, (y2-y1)/b ) 3.求出CA的法向向量(或CB的法向向量) c = ( y0-y1, -(x0-x1) ) 4. 距离 = AC法向向量与BC向量的单位方向向量的数量积 距离d = a1 * c = ( (x2-x1)(y0-y1) - (y2-y1)(x0-x…
爆头 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 2002    Accepted Submission(s): 868 Problem Description gameboy是一个CS高手,他最喜欢的就是扮演警察,手持M4爆土匪的头.也许这里有人没玩过CS,有必要介绍一下“爆头”这个术语:所谓爆头,就是子弹直接命中对方的头部,以秒杀…
最远曼哈顿距离有两个性质: 1: 对每一个点(x,y)  分别计算  +x+y , -x+y , x-y , -x-y 然后统计每种组合的最大值就能够了, 不会对结果产生影响 2: 去掉绝对值 , 设正号为0负号为1 则 两个点的符号是能够通过异或的得到的. 如两个点 P(x,y) 和 Q(a,b) 若去掉绝对值符号后P的两个坐标为 -x +y 既相应数字 10  那么Q相应的数字则为 01 既 +a -b 两个点的曼哈顿距离为 -x +y +a -b B. New York Hotel tim…
A. Vicious Keyboard time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Tonio has a keyboard with only two letters, "V" and "K". One day, he has typed out a string s with only t…
来自FallDream的博客,未经允许,请勿转载,谢谢. 和ditoly组队打VK-Cup,起了个名字叫Vegetable Chicken(意思显然),然后昨天我做AB他切C 很不幸的是.....我写的两题都挂了......坑队友了...A被疯狂卡精度  B简单计算几何瞎写挂了  GG 滚去外卡赛 A.Voltage Keepsake 你有n个东西,每个东西每秒钟消耗ai的能源,初始有bi的能源.你还有一个充电器,每秒钟可以充p的能源,问最多多久之后才有东西爆零.n<=100000 直接二分呗.…
A. Vicious Keyboard 题意:给你一个字符串,里面只会包含VK,这两种字符,然后你可以改变一个字符,你要求VK这个字串出现的次数最多. 题解:数据范围很小,暴力枚举改变哪个字符,然后check就好. #include<bits/stdc++.h> using namespace std; int main(){ string s; cin>>s; int ans = 0; for(int i=0;i<s.size();i++){ if(s[i]=='V'){…
Codeforces Beta Round #32 (Div. 2, Codeforces format) http://codeforces.com/contest/32 A #include<bits/stdc++.h> using namespace std; #define lson l,mid,rt<<1 #define rson mid+1,r,rt<<1|1 #define sqr(x) ((x)*(x)) #define pb push_back #de…
题目链接 http://codeforces.com/contest/1254/problem/C 题解 sb题. 第一次,通过\((n-2)\)次询问2确定\(p[2]\),也就是从\(1\)来看"最逆时针"的点. 第二次,通过\((n-2)\)次询问1确定每个点与\(a_1a_{p_2}\)这条直线的距离,并将所有点按该值排序.设排序后的数组是\(s_3,s_4,...\). 第三次,通过\((n-3)\)次询问2将所有点定序.我们实际上就是要将\((n-2)\)个点分成两组,一组…
Codeforces Round #573 (Div. 1) E 题意:二维平面上有 n 个点,你可以放至多 m 条直线使得 (0,0) 与每个点的连线至少与一条直线相交.求原点与所有直线的距离最小值最大是多少. \(n,m \le 2*10^5,-10^5\le x_i, y_i \le 10^5\) key:二分,贪心 二分答案,此时可以以原点画圆,那么每条直线都可以与该圆相切.每个点与该圆的两切点形成一个区间.问题变成对于 n 个环形区间,用至多 m 个点去覆盖使得每个区间都被覆盖,问是否…
//http://codeforces.com/contest/631/problem/Apackage codeforces344; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.util.StringTokenizer; /** * Created by lenovo on…
Java语言规范第三版中对volatile的定义如下: Java编程语言允许线程访问共享变量,为了确保共享变量能被准确和一致性的更新,线程应该确保通过排他锁 单独获得这个变量. volatile有时候比锁更加方便,比如一个字段被声明成volatile,Java线程内存模型确保所有线程看到这个变量的 值是一致性的. volatile是如何来保证可见性的?  需要查看Java代码转换成汇编代码之后,具体执行的过程可参考<Java并发编程的艺术> 第二章,或者其他资料.(主要是我对汇编不太熟) 还涉…
题 题意 给出原点(不是(0,0)那个原点)的坐标和一个多边形的顶点坐标,求多边形绕原点转一圈扫过的面积(每个顶点到原点距离保持不变). 分析 多边形到原点的最小距离和最大距离构成的两个圆之间的圆环就是所求面积. 判断最大距离一定在顶点上,最小距离可能在点上也可能在边上. 如果原点到一个顶点的连线和它所在的边构成钝角,那么最小距离在点上,否则最小距离就是顶点和该边构成三角形的原点所在的高,可以用海伦公式求三角形面积,然后求高. 不过我用的方法是点到直线的距离公式. 然后π用 acos(-1.0)…
题目传送门 题意:从一条马路(线段)看对面的房子(线段),问连续的能看到房子全部的最长区间 分析:自己的思路WA了:先对障碍物根据坐标排序,然后在相邻的障碍物的间隔找到区间,这样还要判断是否被其他障碍物遮挡住(哇 网上有很好的思路,先对每条线段找到阴影的端点,然后根据坐标排序,求和左端点的距离的最大值,这样省去线段相交的判断. trick点应该就是障碍物的位置随意,可能在房子和马路的外面. /************************************************ * A…
题目传送门 题意:一根管道,有光源从入口发射,问光源最远到达的地方. 分析:黑书上的例题,解法是枚举任意的一个上顶点和一个下顶点(优化后),组成直线,如果直线与所有竖直线段有交点,则表示能穿过管道. /************************************************ * Author :Running_Time * Created Time :2015/10/31 星期六 10:28:12 * File Name :POJ_1039.cpp ***********…
题目传送门 题意:有两个一大一小的同心圆,圆心在原点,大圆外有一小圆,其圆心有一个速度(vx, vy),如果碰到了小圆会反弹,问该圆在大圆内运动的时间 分析:将圆外的小圆看成一个点,判断该直线与同心圆的交点,根据交点个数计算时间.用到了直线的定义,圆的定义,直线与圆交点的个数. /************************************************ * Author :Running_Time * Created Time :2015/10/24 星期六 16:14:…
题目传送门 题意:判断两条直线的位置关系,共线或平行或相交 分析:先判断平行还是共线,最后就是相交.平行用叉积判断向量,共线的话也用叉积判断点,相交求交点 /************************************************ * Author :Running_Time * Created Time :2015/10/24 星期六 09:08:55 * File Name :POJ_1269.cpp *********************************…
题目传送门 题意:有若干线段,问是否存在一条直线,所有线段投影到直线上时至少有一个公共点 分析:有一个很好的解题报告:二维平面上线段与直线位置关系的判定.首先原问题可以转换为是否存在一条直线与所有线段相交,然后可以离散化枚举通过枚举端点来枚举直线,再用叉积判断直线和线段是否相交.用到了叉积 /************************************************ * Author :Running_Time * Created Time :2015/10/23 星期五…
A. Hexadecimal's theorem 三个数没有限制,直接输出\(0\ 0\ n\). B. Special Olympics 分包含和外离情况,包含分2种情况. C. About Bacteria 考虑1个细菌需要多少时间增长到\(t\),扣掉即可. D. Jumping on Walls bfs. E. Delivering Carcinogen 题目保证\(v \gt v_p\),所以到达时间具有单调性. 二分到达时间,那么此时星球的位置已经固定,问题转化成考虑两个固定点在不穿…