博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
polyline NOIP模拟 数论 规律
阅读量:6818 次
发布时间:2019-06-26

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

有若⼲个类似于下⾯的函数:

定义 n 个函数 y1(x), ..., yn(x) 的对于任意 x 的总和 s(x) = y1(x) + ... + yn(x),很容易发现 s(x) 的 图像是多段线组成。给你 n 个函数,你的任务是找出 s(x) 图像不等于 180 度的⾓的个数。

多模拟几次数据,我们就可以注意到这个结果仅与图像的“拐点个数”有关,而拐点个数我们是可以求到的。

首先,我们知道,对于一个yi(x)的函数:

当ki=0时,他对结果是没有影响的,我们在计算的时候可以省略。

当ki≠0时,我们可以根据函数中的条件式(ki·x+bi≥0)得到一个拐点坐标 x=-bi/ki(拐点是指图像在拐点处形成了一个角,即这个角的顶点)

我们把这个拐点坐标存下来。

当我们处理完所有的(k,b)数据后,我们就得到了一系列拐点,若“一种拐点”表示拐点坐标相同的一系列拐点,那么一种拐点就会对应函数图像中的一个角(一定会形成一个不等于180°的角)。

也就是说,所有拐点去掉重复坐标之后的剩余个数,就是答案个数。

需要证明?——你的数学函数部分学得好吗?

· 怎么实现去重?

第一个,我们可以sort一次然后手动去重。

第二个,我们可以用STL中的set来实现。(set是自动去重的)

第三个,你甚至可以用map<long double,bool>来存拐点,显然这也是不会重复记录的。然后用iterator来遍历。

· 为什么是long double?

在题目涉及浮点数计算的时候,若条件足够,应尽量选择精度高的数据结构,避免精度误差导致的答案错误。(请注意,部分低级编译器不支持long double)

附上AC代码

#include
#include
using namespace std;template
inline void read(T &_a){ bool f=0;char _ch=getchar();_a=0; while(_ch<'0'||_ch>'9'){
if(_ch=='-')f=1;_ch=getchar();} while(_ch>='0'&&_ch<='9'){_a=(_a<<3)+(_a<<1)+_ch-'0';_ch=getchar();} if(f)_a=-_a;}const int maxn=100001;int n,ans;long double cnt[maxn];int main(){ freopen("polyline.in","r",stdin); freopen("polyline.out","w",stdout); read(n); for (register int i=1,k,b;i<=n;++i) { read(k); read(b); if(!k) {--i; --n; continue;} cnt[i]=-(long double)b/(long double)k; } ans=n; sort(cnt+1,cnt+n+1); for (register int i=1;i<=n;++i) if(cnt[i]==cnt[i-1]) --ans; printf("%d",ans); return 0;}

 

转载于:https://www.cnblogs.com/jaywang/p/7748279.html

你可能感兴趣的文章
tomcat
查看>>
微信原图泄露的只能是 Exif ,你的隐私不在这!!!
查看>>
在 V8 中从 JavaScript 到 C++ 的类型转换
查看>>
升级Python导致的yum,pip报错解决方案
查看>>
leetcode 342. Power of Four
查看>>
【Node断言assert】
查看>>
python 多继承
查看>>
2017-06-13 前端日报
查看>>
正则表达式 (一)
查看>>
JavaScript深入之call和apply的模拟实现
查看>>
Electron 桌面应用开发系列文章 - 减小应用的打包体积
查看>>
Android仿淘宝头条竖直跑马灯式新闻标题及“分页思想
查看>>
openresty + lua 入口
查看>>
Angular 2 Input
查看>>
《Ruby 元编程》读后总结
查看>>
Kotlin成为正式的Android编程语言
查看>>
Facebook黄毅博士:像加工艺术品一样构建技术产品
查看>>
《A Practical Guide to Continuous Delivery》作者访谈录
查看>>
经典大数据架构案例:酷狗音乐的大数据平台重构
查看>>
一个小米SRE的日常问题排查记录
查看>>