POJ 3668 分数保存斜率
来源:互联网 发布:淘宝买蜂蜜是真的吗 编辑:程序博客网 时间:2024/05/18 02:48
一开始的时候直接用 double 来保存斜率,真是 too young too simple .. always naive
2000*2000的数组开不下,只好优化下内存,好在hash这个东西存的时候每个只需要1 bit ,一个int就能装32bit拉。
最后 斜率为0和斜率为 无穷大要特判一下。
#include <stdio.h>#include <iostream>#include <queue>#include <algorithm>#include <map>#include <vector>#include <cmath>#include <string.h>#include <stdlib.h>#include <time.h>#include <fstream>#include <set>#include <stack>using namespace std;#define READ freopen("acm.in","r",stdin)#define WRITE freopen("acm.out","w",stdout)#define ll long long#define ull unsigned long long #define PII pair<int,int>#define PDI pair<double,int>#define PDD pair<double,double>#define MII map<int,int>::iterator #define fst first#define sec second#define MS(x,d) memset(x,d,sizeof(x))#define INF 0x3f3f3f3f#define ALL(x) x.begin(),x.end()#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1#define ROOT 0,n-1,1#define PB push_back#define FOR(a,b,c) for(int a=b;a<c;a++)#define MOD 1000000007#define keyTree (ch[ ch[root][1] ][0])#define MAX 200000int n;int x[500],y[500];int hash[2][2100][2100/32];void setbit(int x,int y,int pos){ hash[pos][x][y/32]|=(1<<(y%32));}bool getbit(int x,int y,int pos){ return hash[pos][x][y/32]&(1<<(y%32));}int main(){ //READ; while(cin>>n) { MS(hash,0); for(int i=0;i<n;i++) scanf("%d%d",&x[i],&y[i]); int ans=0; int flag=0; for(int i=0;i<n;i++) for(int j=i+1;j<n;j++) { if(x[j]==x[i]) flag|=1; else if(y[j]==y[i]) flag|=2; else { int dx=x[j]-x[i]; int dy=y[j]-y[i]; int pos=dy*dx>0?1:0; dx=dx>0?dx:-dx; dy=dy>0?dy:-dy; int g=__gcd(dx,dy); dx/=g,dy/=g; if(!getbit(dx,dy,pos)) { ans++; setbit(dx,dy,pos); } } } if(flag>0&&flag<3) ans++; else if(flag==3) ans+=2; cout<<ans<<endl; } return 0;}
0 0
- POJ 3668 分数保存斜率
- Poj 2018 Best Cow Fences(分数规划+DP&&斜率优化)
- poj 2018 斜率优化
- POJ 1180 斜率DP
- poj 1180 dp 斜率优化
- poj 1180 斜率优化dp
- poj 1180 斜率优化DP
- POJ 2018 斜率优化DP
- poj 3979 分数加减法
- poj 3979 分数加减法
- poj 2976 分数规划
- POJ 3979 分数加减法
- 分数加减法 poj 3979
- POJ-3979-分数加减法(分数运算)
- poj 1180 Batch Scheduling 斜率优化dp
- poj 1180 Batch Scheduling ( 斜率优化DP )
- poj 1260 Pearls 斜率优化dp
- poj 1260 Pearls 斜率优化dp
- 用JDK7新实现的椭圆曲线加密算法对数据进行校验
- TypeError: 'tuple' object is not callable
- 低版本兼容使用Fragment
- C++:输入10个数字,找出最大最小值(可处理误输入)
- 获取当前图纸的名称(获取图纸名)和路径(path)
- POJ 3668 分数保存斜率
- Exchange Server 2010硬件负载均衡架构
- [Unity3D] monodevelop 在 MacOS 中文显示解决方法
- myeclipse中将整块的代码所选中的代码左右移动的快捷键
- PHP环境搭建
- 分治法:求解一个乱序数组中距离最近的两个数
- 测试一下
- 三角形类2
- PCA算法与Opencv实现