uva10088

裸的pick定理。

[Pick定理]
设以整数点为顶点的多边形的面积为S,
多边形内部的整数点数为N,
多边形边界上的整数点数为L, 则
   N + L/2 - 1 = S
注意范围,我用long long 了,因为中间乘法往转换了 WA了一次。。。

#include <queue>
#include <stack>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <limits.h>
#include <string.h>
#include <string>
#include <algorithm>
using namespace std;
const int MAX = 1010;
struct point{ int x,y;};
point p[MAX];
int gcd(int n,int m)//斜率为整数时 ,退出循环。 有点没想明白。。 
{
	return m == 0 ? n : gcd(m,n%m);
}
int intp_insegment(point a, point b)
{
	int aa = abs(b.y - a.y), bb = abs(b.x - a.x);
	if(aa == 0 && bb == 0)	return 0;
	if(aa == 0)	return bb - 1;
	if(bb == 0)	return aa - 1;
	return gcd(aa, bb) - 1;
}
long long intp_edge(point p[],int n)
{
	long long ans = n;
	for(int i=0; i<n; i++)
		ans += intp_insegment(p[i], p[(i+1)%n]);
	return ans;
}
double area_polygon(point p[],int n)
{
	double s = 0.0;
	for(int i=0; i<n; i++)
		s += p[(i+1)%n].y *1ll* p[i].x - p[(i+1)%n].x*1ll * p[i].y;
	return fabs(s)/2.0;
} 
long long intp_inpolygon(point p[],int n)
{
	double area = area_polygon(p,n);
	long long pinedge = intp_edge(p,n);
	return (long long)(area) - pinedge/2ll + 1;
}
int main()
{
	int n;
	
	while( ~scanf("%d",&n) && n )
	{
		for(int i=0; i<n; i++)
			scanf("%d %d",&p[i].x,&p[i].y);
		
		long long ans = intp_inpolygon(p,n);
		printf("%lld/n",ans);
	}
return 0;
}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值