uva 11971 Polygon】的更多相关文章

链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3122 题意: 有一根长度为n的木条,随机选k个位置把它们切成k+1段小木条.求这些小木条能组成一个多边形的概率. 分析: 不难发现本题的答案与n无关.在一条直线上切似乎难以处理,可以把直线接成一个圆,多切一下,即在圆上随机选k+1个点,把圆周切成k+1段.根据对称性,两个问题的答案…
                                    Polygon  John has been given a segment of lenght N, however he needs a polygon. In order to create a polygonhe has cut given segment K times at random positions (uniformly distributed cuts). Now he has K + 1much sh…
题意:一根长度为n的木条,随机选k个位置将其切成k+1段,问这k+1段能组成k+1条边的多边形的概率. 析:这个题,很明显和 n 是没有任何关系的,因为无论 n 是多少那切多少段都可以,只与切多少段有关.然后我们要转化一下,不能直接做,因为不好做. 转化为一个圆上选 m+1 个点,能不能组成多边形,很容易知道如果一个边大于一半圆的周长,那就组不成多边形.然后位置是随便选的,概率就是1, 然后其他 m-1 个点,就只能放那一半上,每个都有1/2的概率,然后 m 个,就是1/(2^m),然后每个点都…
https://vjudge.net/problem/UVA-11971 有一根长度为n的木条,随机选k个位置把它们切成k+1段小木条.求这些小木条能组成一个多边形的概率. 将木条看做一个圆,线上切k刀等价于圆上切k+1刀 如果能组成多边形,每一段木条的长度都要<圆周长/2 反过来,如果不能组成多边形,有且仅有一段长度>=圆周长/2 如图所示,第一刀可以随便切,接下来的每一刀都要在第一刀所在的那个半圆上 概率=(1/2)^k 每一个切点处,都可以断开成为线,共有k+1种断法 所以不能构成多边形…
题意: 一根长度为n的木条,随机选k个位置将其切成k+1段,问这k+1段能组成k+1条边的多边形的概率? 思路: 数学题.要求的是概率,明显与n无关. 将木条围成一个圆后再开切k+1刀,得到k+1段.组不成多边形就是其中有一段特别长,比其他k段加起来还要长.先算出不能围成多边形的概率,那么就是圆上面必须要有一段的长度大于半个圆周长,且其他的k-1个位置都要在同一边. 第一个点随机选,概率为1,假设这个点就是木条要组成圆的那两端.接下来要选其他的k个点的位置,他们都在同一个半圆上的概率是(1/2)…
题意: 有一根绳子,在上面随机选取k个切点,将其切成k+1段,求这些线段能够成k+1边形的概率. 分析: 要构成k+1边形,必须最长的线段小于其他k个线段之和才行. 紫书上给出了一种解法,但是感觉理解得不是太好,所以又去网上找了其他解法. 知乎上有人问过这个问题,而且给出了很多种严格的解法. 最后代码里将(1LL << i)写成(1 << i),这种细节应当注意. #include <cstdio> typedef long long ll; ll gcd(ll a,…
感觉这道题的转换真的是神来之笔 把木条转换成圆,只是切得次数变多一次 然后只要有一根木条长度为直径就租不成 其他点的概率为1/2^k 当前这个点的有k+1种可能 所以答案为1 - (k+1)/2^k #include<cstdio> #include<cmath> #define REP(i, a, b) for(int i = (a); i < (b); i++) using namespace std; typedef long long ll; ll gcd(ll a,…
题意:给出两点,求经过这两点的正n边形的最小面积 题解:这两点一定是最长的弦,我们设正多边形中点c,找到c到每个点的距离(都相同) 我们知道那个等腰三角形的底与每个角度就使用余弦定理 #include<set> #include<map> #include<queue> #include<stack> #include<cmath> #include<vector> #include<string> #include<…
题意:给定两个点A和B,求包含这两个点的面积最小的正 n(已知)边形. #include<iostream> #include<iomanip> #include<cmath> #define pi 2.0*asin(1.0) #define sqr(a) ((a)*(a)) using namespace std; int main() { int n; double x1,x2,y1,y2,d,thy,s; while(cin>>x1>>y1…
题目来源:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=3&page=show_problem&problem=45  SCUD Busters  Background Some problems are difficult to solve but have a simplification that is easy to solve. Rather than…