首页 > 其他分享 >Lifting the Stone

Lifting the Stone

时间:2023-08-15 17:35:25浏览次数:30  
标签:Stone return Point int double ans include Lifting

Smiling & Weeping

                  ----繁花落尽,我心中仍有花落的声音

                     一朵,一朵,在无人的山间轻轻飘落

题目链接:1385 -- Lifting the Stone (poj.org)

思路:将多边形三角剖分,计算出每个三角形的重心,三角形的重心是顶点坐标的平均值,然后对每个三角形的有向面积求加权平均。

Talk is cheap , show me the code

 1 #include<iostream>
 2 #include<cstring>
 3 #include<cmath>
 4 #include<algorithm>
 5 #include<cstdio>
 6 using namespace std;
 7 int t , n;
 8 struct Point{
 9     double x,y;
10     Point(){}
11     Point(double x , double y):x(x) , y(y){}    
12     Point operator + (Point b) {return Point(x+b.x , y+b.y); }
13     Point operator - (Point b) {return Point(x-b.x , y-b.y); }
14     Point operator * (double k) {return Point(x*k , y*k); }
15     Point operator / (double k) {return Point(x/k , y/k); }
16 }p[20010];
17 typedef Point Vector;
18 double Cross(Vector a , Vector b){
19     return a.x*b.y - a.y*b.x;
20 }
21 double Polygon_area(Point *p , int n){
22     double area=0;
23     for(int i = 0; i < n; i++)
24         area += Cross(p[i] , p[(i+1)%n]);
25     return area/2;
26 }
27 Point Polygon_center(Point *p , int n){
28     Point ans(0.0,0.0);
29     for(int i = 0; i < n; i++)
30         ans = ans + (p[i]+p[(i+1)%n])*Cross(p[i] , p[(i+1)%n]);
31     return ans/Polygon_area(p,n)/6;
32 }
33 int main()
34 {
35     scanf("%d",&t);
36     while(t--)
37     {
38         scanf("%d",&n);
39         for(int i = 0; i < n; i++)
40             scanf("%lf %lf",&p[i].x,&p[i].y);
41         Point ans = Polygon_center(p,n);
42         printf("%.2f %.2f\n",ans.x,ans.y);
43         // 注意尽量使用%f,兼容性好一些,G++能过
44     }
45     return 0;
46 }

                    喜欢出发  喜欢离开

                   喜欢一生中都能有新的梦想

文章到此结束,我们下次再见ヾ(@^▽^@)ノ

标签:Stone,return,Point,int,double,ans,include,Lifting
From: https://www.cnblogs.com/smiling-weeping-zhr/p/17631909.html

相关文章

  • abc270d Stones
    abc270d直接贪心每次取最大的会有问题,比如说下面的例子11245我们考虑dp\(f[i]\)表示在先手的情况下,有i个石头的局面,最多能拿多少个石头,同时记录\(g[i]\)表示选的哪一个\(a[i]\)那么转移就是\(f[i]=max(f[i-a[j]-a[g[i-a[j]]]]+a[j])\)#include<algorithm>#include<cst......
  • StoneDB 源码解读系列|Tianmu 引擎工具类模块源码详解(一)
    StoneDB源码解读系列文章正式开启,预计以周更的形式跟大家见面,请多多支持~本篇源码解读内容已进行直播分享,可在视频号观看直播回放,也可点击阅读原文跳转至B站观看回放视频。PPT内容可在社区论坛中查看下载:https://forum.stonedb.io/t/topic/89各个工具类属于Tianmu引擎的......
  • 稳扎稳打,坚定前行 | 一文带你回顾 StoneDB 的 2022 年
    2022年6月29号,StoneDB正式宣布开源,自开源以来,StoneDB开源团队在用心打磨产品的同时,也在积极地拥抱开源社区,与万千数据库开发者共同成长,我们从day1就励志要做一款立足中国、面向全球的开源数据库,内核代码已经在Github上完全开源,欢迎大家前往关注:https://github.com/sto......
  • 哪篇论文宣布了 HTAP 数据库的诞生? | StoneDB学术分享会#5
    本文是StoneDB学术分享会专栏的第五篇,我们来分享一下HTAP学术界上比较经典的一篇论文《ACommonDatabaseApproachforOLTPandOLAPUsinganIn-MemoryColumnDataBase》。<br>为什么说这篇论文经典呢,因为这篇论文来自国际著名厂商,号称欧洲最大的软件公司SAP(思爱普,截......
  • 稳扎稳打,坚定前行 | 一文带你回顾 StoneDB 的 2022 年
    2022年6月29号,StoneDB正式宣布开源,自开源以来,StoneDB开源团队在用心打磨产品的同时,也在积极地拥抱开源社区,与万千数据库开发者共同成长,我们从day1就励志要做一款立足中国、面向全球的开源数据库,内核代码已经在Github上完全开源,欢迎大家前往关注:https://github.com/stone......
  • StoneDB 开源社区月刊 | 2022122期
    StoneDB开源社区第六期月刊来啦!StoneDB开源社区12月月度会议暨2022年度会议在1月10日晚上准时跟社区的小伙伴们见面了。本次会议是StoneDB在2022年月份中的最后一次月会,也是我们的第一次年度会议。特别感谢大家在2022年的陪伴和支持,也期待大家更多的参与到开源社区中来,新的一年......
  • 产品再受认可,StoneDB 荣获“2022 年度创新产品奖”
    12月29日,由中国权威的数据库及架构技术社区ITPUB、业界知名IT垂直门户媒体IT168联合主办的第18届《技术改变世界 创新引领未来——2022技术卓越奖》评选结果正式揭晓,StoneDB凭借优秀创新的产品架构荣获"2022年度创新产品奖"。“技术卓越奖”由行业CIO/CTO大咖、技术......
  • StoneDB 助力亚马逊云科技 re:Invent 活动
    亚马逊云科技re:Invent全球大会是全球云计算引领者——亚马逊云科技(AmazonWebServices)举办的年度盛会,首届大会始于2012年。其中,数据库和物联网一直都是备受关注的两个热点话题。本周五下午,石原子科技产品负责人张道山受邀参加re:Inventre:Cap系列活动-杭州站。本次活动主题......
  • CodeForces 1848E Vika and Stone Skipping
    洛谷传送门CF传送门感觉比这场的F简单。发现我们要进行\(x\)不断乘一些数然后求答案的操作,猜测答案与\(x\)的因数有关。如果你对数字比较敏感,不难发现答案就是\(x\)的奇因子个数。官方题解的证明:设\(x=f+(f-1)+\cdots+(f-(c-1))\),由等差数列求和公......
  • 1.3认证管理Keystone
    1、简介定位:Keystone属于共享服务层,为OpenStack其他项目提供认证交互关系:没有依赖服务基本概念:2、作用6个Keystone作为OpenStack中一个独立的提供安全认证的模块,主要负责OpenStack用户的身份认证、令牌管理、提供访问资源的服务目录,以及基于用户角色的访问控制用户访问系统的用户名......