UVa 10213 How Many Pieces of Land (欧拉定理)

来源:互联网 发布:佳能打印机清零软件 编辑:程序博客网 时间:2024/05/16 12:18

题解:根据欧拉定理V+F-E = 2,V是点数,E是边数,F是面数

欧拉公式VE+F=2所以找出顶点数和边数就行了,枚举两个点,在左半边的如果有i个,右边有ni2个,交点个数i(ni2),然后这条线段被分成了i(ni2)+1部分,然后外围凸包上的边有n条,圆弧分成了n段,所以V,E就能算出来了。

V=n+n4i=1n3i(n2i)因为经过交点的有两条线会被求4次

E=2n+n2i=1n3(i(n2i)+1)因为边又两个点会被求2次所以n/2
上面外加的n,2n是因为刚才本身的点和相邻的边没有算

化简一下就是124(n463+23n218n)+1

因为n比较大用long long 数值会爆所以我们可以用__int128操作

#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<set>#include<vector>#include<queue>#include<stack>#include<map>using namespace std;#define rep(a,b) for(int i = a; i <= b; i++)#define dec(a,b) for(int i = a; i >= b; i--)#define root 1,1,n#define ls 2*rt#define rs 2*rt+1#define mid (L+R)/2#define lson ls,L,mid#define rson rs,mid+1,R#define fi first#define se secondtypedef long long int ll;const int mx = 1e5+5;void print(__int128 ans){if(ans==0)return;print(ans/10);printf("%d",ans%10);//print(ans/10);}int main(){int n;int t;scanf("%d",&t);while(t--){scanf("%d",&n);__int128 x = n;__int128 ans = (x*x*x*x + 23*x*x-6*x*x*x-18*x)/24+1;print(ans);puts("");}return 0;}


124(n463+23n218n)+1

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 奎托斯上过的女神 魔卡幻想 森林女神 宅男心目中的女神 女祸补天 女祸补天的故事 女祸补天的神话故事 女祸造人的故事 女篮亚洲杯 女篮 中国女篮 中国女篮对阵新西兰女篮 女篮世界杯 中国女篮对战日本女篮 中国女篮对新西兰女篮 女篮决赛 日本女篮 女篮亚锦赛 女篮世锦赛 王思雨女篮 女篮李梦 女篮韩旭 军运会女篮 八一女篮 美国女篮 女篮王芳 女篮规则 女篮亚洲杯赛程表 中国女篮对战日本 中国女篮两连胜 中国女篮战胜澳大利亚女篮 女篮亚洲杯决赛 2019女篮亚洲杯 中国女篮大胜日本 中国女篮对战日本时间 中国女篮大胜菲律宾 中国女篮对战日本几点开始 2019女篮亚洲杯时间表 中国女篮进入决赛 中国女篮大胜韩国 中国女篮大胜韩国女篮录像 中国女篮决赛