博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVA 11768 Lattice Point or Not
阅读量:6310 次
发布时间:2019-06-22

本文共 1895 字,大约阅读时间需要 6 分钟。

扩展欧几里得,给两个点,就可以求出直线方程为 (yy-y)*x0 + (x-xx)*y0 = x*yy - y*xx,求的是在线段上的整点个数。所以就是(yy-y)*10*x0 + (x-xx)*10*y0 = x*yy - y*xx满足条件的解的个数。用exgcd搞之后求出一个解,再求出在线段上第一个整点的位置,然后再求有多少个在线段上的点。

exgcd有点忘了,还有就是特殊情况的判断(比如平行坐标轴),另外就是不能交换输入点,输入

1.0 0.3 0.3 10.0交换后就是0.3 0.3 1.0 10.0就变成有整点了,下次一定要注意,多想想

1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 9 using namespace std;10 #define inf 0x3f3f3f3f11 #define eps 1e-812 #define LL long long13 #define ull unsigned long long14 #define mnx 100515 16 void exgcd( LL a, LL b, LL &d, LL &x, LL &y ){17 if( !b ) {18 d = a, x = 1, y = 0; // d恰好是最大公约数19 }20 else {21 exgcd( b, a%b, d, y, x );22 y -= x*(a/b);23 }24 }25 double ax, ay, bx, by;26 void solve(){27 if( ax > bx ) swap( ax, bx );28 if( ay > by ) swap( ay, by );29 LL x = ax * 10, y = ay * 10, xx = bx * 10, yy = by * 10;30 if( x == xx || y == yy ){31 if( x == xx ) swap( ax, ay ), swap( bx, by ), swap( x, y ), swap( xx, yy );32 if( yy % 10 ){33 puts( "0" ); return ;34 }35 x = ceil( ax ) * 10, xx = floor( bx ) * 10;36 cout << x << " " << xx << endl;37 if( xx < x ){38 puts( "0" ); return ;39 }40 printf( "%lld\n", (xx-x)/10 + 1LL ); return ;41 }42 LL a = ( yy - y ) * 10, b = ( x - xx ) * 10, c = x * yy - y * xx, d, x0, y0;43 //cout << a << " "<< b <
xx || y > yy ){53 puts( "0" ); return ;54 }55 x0 = x0 * ( c / d );56 //cout << x0 << endl;57 b /= d;58 if( b < 0 ) b = -b;59 x0 = x0 - ( x0 - x ) / b * b;60 x0 -= b;61 while( x0 < x ) x0 += b;62 LL ans = ( xx - x0 ) / b;63 while( x0 + ans * b <= xx ) ans++;64 printf( "%lld\n", ans );65 }66 int main(){67 int cas;68 scanf( "%d", &cas );69 while( cas-- ){70 scanf( "%lf%lf%lf%lf", &ax, &ay, &bx, &by );71 solve();72 }73 return 0;74 }
View Code

 

转载于:https://www.cnblogs.com/LJ-blog/p/4039304.html

你可能感兴趣的文章
Factorialize a Number
查看>>
[USB-Blaster] Error (209040): Can't access JTAG chain
查看>>
TreeSet的用法
查看>>
防HTTP慢速攻击的nginx安全配置
查看>>
深入理解PHP内核(十四)类的成员变量及方法
查看>>
Spring Boot2.0+中,自定义配置类扩展springMVC的功能
查看>>
参与博客编辑器改版,我的礼物 感谢51cto
查看>>
JavaWeb笔记——JSTL标签
查看>>
Eclipse插件大全 挑选最牛的TOP30
查看>>
一些实用性的总结与纠正
查看>>
Kubernetes概念
查看>>
逻辑卷管理器(LVM)
查看>>
一个小代码,欢迎大佬的意见,求指正
查看>>
搭建LAMP架构
查看>>
神经网络注意力机制--Attention in Neural Networks
查看>>
Spring.Net+WCF实现分布式事务
查看>>
在Linux上高效开发的7个建议
查看>>
java数据结构 - 数组使用的代码
查看>>
个人简历-项目经验
查看>>
swoole异步任务task处理慢请求简单实例
查看>>