清北学堂-D1-T2-polyline
来源:互联网 发布:网络小贷 编辑:程序博客网 时间:2024/05/16 07:43
题目给定了若干条直线,并将它们的小于0的部分强制改为0,然后定义了一个累加函数,将所有函数加到一起,然后求拐点个数。
题解:可以看出,所有函数单独拿出来斜率单增,所以加到一起斜率也是单增的,然后问题就变成了求不同的零点个数,然后有两个办法,一个卡精度,另一个就是改一下比较函数,不要算零点(那个比较的函数可以去掉除号,可以互相乘过去),然后就判断就好了。
代码:(卡精度)
#include<cstdio>#include<cstdlib>#include<iostream>#include<cmath>#include<cstring>#include<algorithm>#define ll long longusing namespace std;inline int read(){ int x=0,f=1;char ch=' '; while(ch!='-'&&(ch<'0'||ch>'9'))ch=getchar(); if(ch=='-')f=-1,ch=getchar(); while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar(); return x*f;}int n,nn;int k[100001],b[100001];long double c[100001];int main(){ freopen("polyline.in","r",stdin); freopen("polyline.out","w",stdout); n=read();nn=1; for(int i=1;i<=n;i++){ k[nn]=read();b[nn]=read(); if(k[nn]) c[nn]=-(long double)b[nn]/(long double)k[nn++]; } nn--; sort(c+1,c+nn+1); int ans=nn; if(nn==0){ printf("0");return 0; } for(int i=2;i<=nn;i++){ if(fabs(c[i]-c[i-1])<1e-18){ ans--; } } printf("%d",ans); return 0;}
代码2:(乘法/std)
#include <iostream>#include <cstdio>#include <algorithm>using namespace std;const int N = 201000;long long a[N], b[N];int q[N];int gcd(int x, int y){ int t = x % y; while (t != 0) { x = y; y = t; t = x % y; } return y;}bool cmp(int i, int j){ if (a[i] * b[j] < a[j] * b[i]) return 1; return 0;}int main(){ freopen("polyline.in","r",stdin); freopen("polyline.out","w",stdout); int m, n = 0; scanf("%d", &m); for (int i = 1; i <= m; ++i) { int x, y; scanf("%d%d", &x, &y); if (x == 0) continue; ++n; q[n] = n; a[n] = -y; b[n] = x; if (b[n] < 0) { a[n] *= -1; b[n] *= -1; } if (y == 0) { b[i] = 1; continue; } int d = gcd(abs(a[n]), abs(b[n])); a[n] /= d; b[n] /= d; } sort(q + 1, q + n + 1, cmp); int ans = n; for (int i = 1; i < n; ++i) { int k = q[i]; int kk = q[i + 1]; if (a[k] == a[kk] && b[k] == b[kk]) --ans; } printf("%d\n", ans); return 0;}
阅读全文
0 0
- 清北学堂-D1-T2-polyline
- 清北学堂-D1-T1-alien
- 清北学堂-D1-T3-roadwork
- 清北学堂-D2-T2-chance
- 清北学堂-D3-T2-safe
- 清北学堂-D4-T2-xor
- 清北学堂-D5-T2-bw
- 清北学堂-D6-T2-tree
- 【清北学堂】number
- 【清北学堂】dwarf
- 清北学堂上课记录
- 清北学堂夏令营有感
- 清北学堂复习笔记
- 清北学堂集训day1
- 清北学堂十一培训酱油记
- 2016国庆清北学堂游记
- 【清北学堂】 死亡(death)
- 清北学堂入学测试d
- Eclipse设置去掉一些不必要的注释
- [Oracle]理解undo表空间
- 内部类的理解
- Spring-Data-Rest 构建Spring-boot Web应用—— rest风格访问JPA数据
- 刷紫书第四章例题(例题4-4,4-5,4-6)
- 清北学堂-D1-T2-polyline
- 庆祝伟大祖国六十八生辰
- iOS 快捷键~系统级别、移动光标、选中文字
- 第四周项目四__链表解决约瑟夫问题
- maven项目管理器,Junit测试单元以及C3P0数据库连接池的会用总结
- Spring自定义Handler关键点
- 第三章遇到的问题&搜到的解释3
- Ngnix技术研究系列2-基于Redis实现动态路由
- java HashMap原理分析