POLYGON

源程序名 POLYGON.??? (PAS,C,CPP)

可执行文件名   POLYGON.EXE

输入文件名     POLYGON.IN

输出文件名     POLYGON.OUT

对于一个多边形来说,在该多边形内任取两点,如果这两点连成的线段落在多边形内,则称这样的多边形为凸多边形。

平面上有N个坐标值为自然数的圆点。顶点数最多凸多边形是指由给定的圆点中的一部分组成的凸多边形,它包含最大可能的顶点数。原点,即坐标内中心(0,0)必须是顶点数最多凸多边形的一个顶点。

编写程序求出这样的凸多边形的最大顶点数。注意一个多边形的连续的边不能是平行的。

输入

输入文件的第一行包含一个自然数N,2≤N≤100,表示给定的圆点数。

下面的N行每行包含两个用空格隔开的自然数X和Y,1≤X≤100,1≤Y≤100,表示一个圆点的坐标值。所有的圆点是不相同的。

输出

输出文件的第一行也是唯一的一行应该包含顶点数最多凸多边形的顶点数。注意结果应不小于3。

样例

POLYGON.IN

8

10 8

3 9

2 8

2 3

9 2

9 10

10 3

8 10

POLYGON.OUT

8

【题解】

有点坑。。第一眼看成求凸包顶点数了结果竟然还有50分= =

然后后面想了半天不会做

然后呢想了半天发现设f[i,j]表示最后两个点为i和j的情况下凸多边形最大顶点数

那么枚举k [1...i-1]即可,f[i,j]即可用f[k,i]更新

更新的情况当且仅当是个凸多边形(用向量叉积判断)

 1 #include <stdio.h>
 2 using namespace std;
 3 struct P {
 4     int x,y;
 5 }p[105];
 6 int n;
 7 int f[105][105];
 8 // f i,j 表示凸多边形的最后两个顶点为i,j所构成的最多顶点数
 9 inline void IO() {
10     freopen("polygon.in","r",stdin);
11     freopen("polygon.out","w",stdout);
12 }
13 inline int max(int a,int b) {return a<b?b:a;}
14 inline void swap(P &a, P &b) {
15     int _tem;
16     _tem=a.x, a.x=b.x, b.x=_tem;
17     _tem=a.y, a.y=b.y, b.y=_tem;
18 }
19 inline int cj(P a, P b) {
20     return a.x*b.y-b.x*a.y;
21 }
22
23 inline void RS() {
24     p[0].x=0, p[0].y=0;
25     scanf("%d",&n);
26     for (int i=1;i<=n;++i) scanf("%d %d",&p[i].x,&p[i].y);
27     //按照斜率排序
28     for (int i=1;i<n;++i) for (int j=i+1;j<=n;++j)
29         if (p[i].x*p[j].y < p[j].x*p[i].y)  // y1/x1 > y2/x2
30             swap(p[i],p[j]);
31     for (int i=1;i<=n;++i) f[0][i]=1;
32     for (int i=1;i<=n;++i)
33         for (int j2=i+1;j2<=n+1;++j2)
34             for (int k=0;k<=i-1;++k) {
35                 int j;
36                 P _x, _y; int _tem;
37                 if (j2==n+1) j=0;
38                 else j=j2;
39                 _x.x=p[i].x-p[k].x, _x.y=p[i].y-p[k].y;
40                 _y.x=p[j].x-p[i].x, _y.y=p[j].y-p[i].y;
41                 int c = cj(_y,_x);
42                 if (c<0) f[i][j]=max(f[i][j],f[k][i]+1);
43             }
44     int ans=0;
45     for (int i=0;i<=n;++i)
46         for (int j2=i+1;j2<=n+1;++j2) {
47             int j;
48             if (j2==n+1) j=0; else j=j2;
49             ans = max(ans,f[i][j]);
50         }
51     printf("%d\n",ans);
52 }
53 int main() {
54     IO(),
55     RS();
56     return 0;
57 }

View Code

转载于:https://www.cnblogs.com/TonyNeal/p/noip_polygon.html

[Noip模拟赛] Polygon相关推荐

  1. NOI.AC NOIP模拟赛 第六场 游记

    NOI.AC NOIP模拟赛 第六场 游记 queen 题目大意: 在一个\(n\times n(n\le10^5)\)的棋盘上,放有\(m(m\le10^5)\)个皇后,其中每一个皇后都可以向上.下 ...

  2. 【noip模拟赛4】Matrix67的派对 暴力dfs

    [noip模拟赛4]Matrix67的派对 描述 Matrix67发现身高接近的人似乎更合得来.Matrix67举办的派对共有N(1<=N<=10)个人参加,Matrix67需要把他们安排 ...

  3. 【HHHOJ】NOIP模拟赛 捌 解题报告

    点此进入比赛 得分: \(30+30+70=130\)(弱爆了) 排名: \(Rank\ 22\) \(Rating\):\(-31\) \(T1\):[HHHOJ260]「NOIP模拟赛 捌」Dig ...

  4. jyzy noip模拟赛5.22-2

    不知道哪来的题 jyzy noip模拟赛5.22-2 样例输入 1 2 3 4 样例输出 0.200000000000000 数据 |a|,|b|,|c|,|d|<=1e9 很多大佬迅速想到二分 ...

  5. NOIP模拟赛csy2021/10/30

    NOIP模拟赛csy2021/10/30 比赛时间规划 赛后反思与总结 这..总的来说感觉打的很不好,根本没有状态,有一部分原因是今天来晚了,太慌,更多的还是这次题感觉很难o(╥﹏╥)o 比赛时间规划 ...

  6. 【WZOI第二次NOIP模拟赛Day1T2】世界末日 解题报告

    [WZOI第二次NOIP模拟赛Day1T2]世界末日 Problem 2 世界末日 (doomsday.pas/c/cpp) 背景 话说CWQ大牛终于打开了那扇神秘大门,但迎接他的不是什么神秘的东西, ...

  7. NOIP 模拟赛 长寿花 题解

    NOIP 模拟赛 长寿花 题解 要放 \(n\) 层物品,第 \(i\) 层有 \(a_i\) 个位置放物品,物品有 \(m\) 中颜色,有约束条件: 同一层两个相邻物品颜色不能相同. 相邻两层颜色集 ...

  8. 辣鸡(ljh) NOIP模拟赛 模拟 平面几何 数论 化学相关(雾)

    [题目描述] 辣鸡ljhNOI之后就退役了,然后就滚去学文化课了. 然而在上化学课的时候,数学和化学都不好的ljh却被一道简单题难住了,受到了大佬的嘲笑. 题目描述是这样的:在一个二维平面上有一层水分 ...

  9. NOIP模拟赛套路技巧经验总结

    前言 还有2天就NOIP了,之前做了这么多场模拟赛,是时候拿出来总结一下, 算是给自己一针强心剂. 列表 从最近的考试总结起(个人认为的重点,可能有重复,仅供参考): (转化很重要,一定要简化问题过后 ...

最新文章

  1. Openresty使用
  2. 2017年第八届蓝桥杯C/C++ A组国赛 —— 第一题:平方十位数
  3. Android 4.0 截屏(Screenshot)代码流程小结
  4. hdu 2049 考新郎
  5. zabbix自动发现主机并加入组绑定模板
  6. vue项目:this.function()中关于:this指针失效的问题
  7. 送货只服京东“特快送”:航空快件可送达近300个城市
  8. des和aes相比较有哪些特点_高精度的交叉滚子轴承与传统轴承相比较,有哪些优点?...
  9. c#语言asp.net实现treeview控件读数据库动态生成树的代码
  10. vue v-if 和 v-show 的知识点
  11. 批量修改图片格式类型
  12. 真值表-Python实现
  13. 基于华为java编程规范的checkstyle.xml以及格式化模版,注释模版
  14. 上班,老实人和精明人的区别是什么?
  15. 大数据技术之Flume —— (1)一文入门学习Flume
  16. 2022-iOS个人开发者账号申请流程
  17. 网络广播mms直播地址
  18. java并发学习28:有序性
  19. 强弩之末,刘强东草根创业恐难迎圆满结局?
  20. 蓄电池内阻测量系统设计

热门文章

  1. sdut 3361迷宫探索dfs
  2. 离散问题的最大似然估计
  3. You are what you say!
  4. @Autowired与@Resource的区别
  5. SpringCloud2.0入门3-新的eureka依赖
  6. 2018 计蒜之道 初赛 第四场
  7. matplotlib的下载和安装方法
  8. @JsonProperty的使用
  9. [LeetCode] Wildcard Matching 题解
  10. Python自动化开发 - RESTful API