2017第二次多校联合Regular polygon

假装这里有题目。
题意大概就是给你一些整数点集,然后判断里面有多少正多边形。因为一定是整数,所以必定只有正方形,然后锁定两个点,可以知道其他两个点可能的位置,然后去搜索这两个点存不存在就好了,要预处理一下,排个序,然后二分就好了。
唯一搞不明白的是这个题为什么是poj2002.。。。。

#include<bits/stdc++.h>
using namespace std;
const int maxn=550;
struct bbq
{
    int x,y;
};
bbq p[maxn];
bool cmp(bbq x,bbq y)
{
    if(x.x<y.x)
        return 1;
    else if(x.x==y.x&&x.y<y.y)
        return 1;
    else return 0;
}
int n;
int serch(int x, int y)
{
    int     m, s, t;
    s = 0;
    t = n-1;
    while (s <= t) {
        m = (s+t)/2;
        if (p[m].x == x && p[m].y == y) return 1;
        if (p[m].x > x || (p[m].x == x && p[m].y > y)) {
            t = m-1;
        }
        else {
            s = m+1;
        }
    }
    return 0;
}
int main()
{
    int x,y;
    while(~scanf("%d",&n))
    {
        memset(p,0,sizeof p);
        int mount=0;
        for(int i=0; i<n; i++)
            scanf("%d %d",&p[i].x,&p[i].y);
        sort(p,p+n,cmp);
        for(int i=0; i<n; i++)
            for(int j=(i+1); j<n; j++)
            {
                x=p[i].y-p[j].y+p[i].x;
                y=p[j].x-p[i].x+p[i].y;
                if (serch(x,y) == 0)
                {
                    continue;
                }
                x = p[i].y-p[j].y+p[j].x;
                y = p[j].x-p[i].x+p[j].y;
                if (serch(x,y)) {
                    mount++;
                }
            }
            printf("%d\n",mount/2);
    }
}
### 关于QGIS二次开发中Polygon操作的相关教程和资源 #### 导入库与初始化环境 为了在QGIS环境中进行边形(Polygon)的操作,首先需要导入必要的核心库并设置好工作环境。这通常涉及到引入`qgis.core`下的个组件来支持不同层面的功能需求。 ```python from qgis.core import ( QgsApplication, QgsVectorLayer, QgsFeature, QgsGeometry, QgsField ) ``` 这些模块允许开发者创建、编辑以及查询基于矢量的数据结构,特别是对于几何图形如边形的支持[^1]。 #### 创建一个边形图层 通过编程方式新建一个边形图层数组,可以利用`QgsVectorLayer`类完成此过程: ```python uri = "Polygon?crs=epsg:4326&field=id:integer" vl = QgsVectorLayer(uri, 'temporary_polygon', 'memory') pr = vl.dataProvider() ``` 这里定义了一个临时性的内存存储图层,并指定了坐标参照系(CRS),同时添加了字段描述以便后续属性表填充。 #### 添加特征到边形图层 当有了基础的图层框架之后,则可以通过构建具体的地理实体——即特征(`feature`)的方式向其中加入实际的空间信息: ```python feat = QgsFeature() geom = QgsGeometry.fromWkt('POLYGON((0 0, 4 0, 4 4, 0 4, 0 0))') feat.setGeometry(geom) # Add attribute values to the feature. feat.setAttributes([1]) pr.addFeatures([feat]) vl.updateExtents() ``` 上述代码片段展示了如何使用WKT格式字符串表示法构造一个简单的矩形区域作为边形对象的一部分;接着将其赋给新建立好的要素实例,并设定相应的属性值最后提交至数据提供者处保存更新范围变化。 #### 显示边形图层 为了让用户能够直观看到所绘制出来的边形效果,在界面端还需要借助`QgsMapCanvas`来进行可视化呈现: ```python canvas = iface.mapCanvas() canvas.setExtent(vl.extent()) canvas.refresh() QgsProject.instance().addMapLayers([vl]) ``` 这段脚本负责调整当前视窗大小适应新增加的地图元素边界,并刷新渲染结果使之立即生效,最终把自定义制作完毕后的图层正式纳入全局项目管理当中去[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值