题意:

给出机器人移动的向量, 计算包围区域的内部整点, 边上整点, 面积.

思路:

面积是用三角剖分, 边上整点与GCD有关, 内部整点套用Pick定理.

S = I + E / 2 - 1

I 为内整点数, E为边界整点数, S为面积.

Separate the three numbers by two single blanks.....好吧, 理解成中间空两格PE一次> <

  1. #include <cstdio>
  2. #include <cstring>
  3. #include <cmath>
  4. using namespace std;
  5. const int MAXN = 105;
  6. int n;
  7. int GCD(int a, int b)
  8. {
  9. return !b?a:GCD(b,a%b);
  10. }
  11. struct point
  12. {
  13. int x,y;
  14. }p[MAXN];
  15. int det(int i, int j)
  16. {
  17. return p[i].x*p[j].y - p[j].x*p[i].y;
  18. }
  19. double CalS()
  20. {
  21. double ret = 0;
  22. for(int i=0;i<n;i++)
  23. {
  24. ret += det(i, i+1);
  25. }
  26. return fabs(ret/2.0);
  27. }
  28. int CalE()
  29. {
  30. int ans = n;
  31. for(int i=0;i<n;i++)
  32. {
  33. int dx = (int)abs((double)(p[i].x - p[i+1].x));
  34. int dy = (int)abs((double)(p[i].y - p[i+1].y));
  35. if(!dx)
  36. {
  37. if(!dy) continue;
  38. ans += dy - 1;
  39. continue;
  40. }
  41. if(!dx)
  42. {
  43. ans += dx - 1;
  44. continue;
  45. }
  46. ans += GCD(dx, dy) - 1;
  47. }
  48. return ans;
  49. }
  50. int main()
  51. {
  52. int T;
  53. scanf("%d",&T);
  54. for(int k=1;k<=T;k++)
  55. {
  56. scanf("%d",&n);
  57. p[0].x = p[0].y = 0;
  58. for(int i=1;i<=n;i++)
  59. {
  60. scanf("%d %d",&p[i].x,&p[i].y);
  61. p[i].x += p[i-1].x, p[i].y += p[i-1].y;
  62. }
  63. double S = CalS();
  64. int E = CalE();
  65. printf("Scenario #%d:\n%d %d %.1lf\n\n",k,(int)(S+1.0-E/2.0),E,S);
  66. }
  67. }

[poj 1265]Area[Pick定理][三角剖分]的更多相关文章

  1. poj 1265 Area (Pick定理+求面积)

    链接:http://poj.org/problem?id=1265 Area Time Limit: 1000MS   Memory Limit: 10000K Total Submissions:  ...

  2. POJ 1265 Area (Pick定理 & 多边形面积)

    题目链接:POJ 1265 Problem Description Being well known for its highly innovative products, Merck would d ...

  3. poj 1265 Area(pick定理)

    Area Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 4373 Accepted: 1983 Description Bein ...

  4. poj 1265 Area( pick 定理 )

    题目:http://poj.org/problem?id=1265 题意:已知机器人行走步数及每一步的坐标   变化量 ,求机器人所走路径围成的多边形的面积.多边形边上和内部的点的数量. 思路:1.以 ...

  5. Area - POJ 1265(pick定理求格点数+求多边形面积)

    题目大意:以原点为起点然后每次增加一个x,y的值,求出来最后在多边形边上的点有多少个,内部的点有多少个,多边形的面积是多少. 分析: 1.以格子点为顶点的线段,覆盖的点的个数为GCD(dx,dy),其 ...

  6. poj 1265 Area 面积+多边形内点数

    Area Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 5861   Accepted: 2612 Description ...

  7. POJ 1265 Area POJ 2954 Triangle Pick定理

    Area Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 5227   Accepted: 2342 Description ...

  8. poj 1265 Area(Pick定理)

    Area Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 5666   Accepted: 2533 Description ...

  9. POJ 1265 Area (pick定理)

    题目大意:已知机器人行走步数及每一步的坐标变化量,求机器人所走路径围成的多边形的面积.多边形边上和内部的点的数量. 思路:叉积求面积,pick定理求点. pick定理:面积=内部点数+边上点数/2-1 ...

随机推荐

  1. Java安全机制之泛型(JDK1.5)

    泛型,类型安全机制. 好处: 1.将运行时期出现问题ClassCastException转移到了编译时期,方便解决问题,减少运行时期的问题,有利于程序的健壮性. 2.避免了强制转换的麻烦 泛型格式: ...

  2. [转载]MySql常用命令总结

    原文:http://www.php100.com/html/webkaifa/database/Mysql/2009/0910/3288.html1:使用SHOW语句找出在服务器上当前存在什么数据库: ...

  3. android自动化(appium)

    目录 一.Appium环境搭建 1.下载nodejs,并安装 2.下载appium,并安装 3.安装python.安装pip.安装appium 4.安装java的jdk 5.安装andriod的sdk ...

  4. commons-logging和slf4j都是日志的接口

    过上面的图,可以简单的理清关系! commons-logging和slf4j都是日志的接口,供用户使用,而没有提供实现! log4j,logback等等才是日志的真正实现. 当我们调用接口时,接口的工 ...

  5. 链接分析算法之:主题敏感PageRank

    链接分析算法之:主题敏感PageRank     前面的讨论提到.PageRank忽略了主题相关性,导致结果的相关性和主题性降低,对于不同的用户,甚至有很大的差别.例如,当搜索“苹果”时,一个数码爱好 ...

  6. C++一些注意点之异常处理

    几篇文章:(1)http://blog.csdn.net/daheiantian/article/details/6530318 (2)http://blog.chinaunix.net/uid-21 ...

  7. ASP.NET站点安全

    <configuration> <appSettings/> <connectionStrings> <add name="MyBookShop&q ...

  8. ViewPager实现启动引导页面(个人认为很详细)

    效果如图: 启动页面是一张图片+延时效果,这里就不给出布局文件了. WelcomeActivity分析:在启动页面检测是否是第一次运行程序,如果是,则先跳转到引导界面的Activity——AndyVi ...

  9. BZOJ 1270: [BeijingWc2008]雷涛的小猫( dp )

    简单的dp.. dp(i,j) = max(dp(x,y))+cnt[i][j], (x,y)->(i,j)是合法路径. 设f(i)= max(dp(x,y))(1≤x≤N, 1≤y≤i), g ...

  10. Android中EditText,Button等控件的设置

    EditText可以使用:TextView.setEnabled(true)来设置为可编辑,其实很简单,写在这里以便以后自己查看. Button设置可用性:setVisibility(View.VIS ...