Codeforces 849B Tell Your World (数学题)

题目链接:http://codeforces.com/problemset/problem/849/B

题意:给定n个点,每个点坐标(i,yi),求是否存在两条平行线使得所有的点都在这两条平行线上。

题解:两条平行线斜率都是k,我们可以先确定两条平行线的两个基点(最左边的那个点),然后再枚举是不是斜率都是k。

根据鸽巢原理,前三个点肯定能够确定这条斜率,这样能够求出三个斜率,然后检查这三个斜率是否有符合条件的,有的话就可以了。

这个想法是别人那里看过来的,是真的厉害!(Orz Orz Orz....

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3
 4 int n,y[1111];
 5 bool check(double k){
 6     int point=-1;
 7     int flag=0;
 8     for(int i=2;i<=n;i++){
 9         if(y[i]-y[1]==k*(i-1)) continue;//第一个基点
10         flag=1;
11         if(point<0) point=i;//第二个基点,两条平行线
12         if(y[i]-y[point]!=k*(i-point)){
13             flag=0;break;
14         }
15     }
16     if(flag) return true;
17     else return false;
18 }
19
20 int main(){
21     cin>>n;
22     for(int i=1;i<=n;i++) cin>>y[i];
23     double k1=1.0*(y[2]-y[1]);
24     double k2=0.5*(y[3]-y[1]);
25     double k3=1.0*(y[3]-y[2]);
26     if(check(k1)||check(k2)||check(k3)) cout<<"Yes"<<endl;
27     else cout<<"No"<<endl;
28     return 0;
29 }
时间: 2024-12-20 11:21:15

Codeforces 849B Tell Your World (数学题)的相关文章

Codeforces 849B Tell Your World (计算几何)

题目链接 Tell Your World 题意 给出N个点(i, xi),问是否存在两条平行的直线,使得每一个点恰好在两条直线的其中一条上. 每条直线必须穿过至少一个点. 考虑每个点和第1个点的斜率,相同的用并查集弄成一个连通块. 然后我们枚举每个连通块,判断不在连通块内的这些点是否在同一条直线上,且斜率必须满足和另一条相等. 注意特殊情况 1号点单独占一条直线,其他的点占另一条直线. 这种情况样例里就有. #include <bits/stdc++.h> using namespace st

周记 - 2019年11月03日

2019年11月05日 2019年徐州区域赛结束了.封榜前3题铜牌前部,封榜后最后27分钟罚了4次通过E题.虽然4题罚时爆炸,不过万幸得了银牌后部.目前看应该还会再参加一年的,这个博客会不断更新记录最后一年参加比赛的学习进度(以及最后两年本科的其他事情),今年的目标是做一个真正的全能选手,首先希望在寒假结束前把Codeforces打到橙色(2100+),证明自己思维还行吧. 既然想做全能选手,每个专题都要学到省选级别吧,学习的分类就参照OI-Wiki的分类,题单的话,模板题从洛谷找,思维题从Co

Codeforces Round #261 (Div. 2) 459B. Pashmak and Flowers(数学题,组合)

题目链接:http://codeforces.com/problemset/problem/459/B B. Pashmak and Flowers time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Pashmak decided to give Parmida a pair of flowers from the garden.

Codeforces Round #261 (Div. 2)459A. Pashmak and Garden(数学题)

题目链接:http://codeforces.com/problemset/problem/459/A A. Pashmak and Garden time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Pashmak has fallen in love with an attractive girl called Parmida s

Codeforces Round #262 (Div. 2)460A. Vasya and Socks(简单数学题)

题目链接:http://codeforces.com/contest/460/problem/A A. Vasya and Socks time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Vasya has n pairs of socks. In the morning of each day Vasya has to put o

Codeforces Round #258 (Div. 2) A. Game With Sticks(数学题)

题目链接:http://codeforces.com/contest/451/problem/A ---------------------------------------------------------------------------------------------------------------------------------------------------------- 欢迎光临天资小屋:http://user.qzone.qq.com/593830943/ma

组合数学题 Codeforces Round #108 (Div. 2) C. Pocket Book

题目传送门 1 /* 2 题意:每一次任选i,j行字符串进行任意长度前缀交换,然后不断重复这个过程,问在过程中,第一行字符串不同的个数 3 组合数学题:每一列不同的字母都有可能到第一行,所以每列的可能值相乘取模就行了.这题主要坑在题意理解上... 4 */ 5 #include <cstdio> 6 #include <algorithm> 7 #include <cstring> 8 #include <cmath> 9 #include <map&

codeforces 701 D. As Fast As Possible(数学题)

题目链接:http://codeforces.com/problemset/problem/701/D 题意:给你n个人,每个人走路的速度v1,有一辆车速度为v2,每次可以载k个人,总路程为l,每个人只能上一次车,问最少需要多少时间把所有人送到终点 题解:首先要使的时间最短肯定是所有人同时到达终点,那么肯定每人坐车的时间是相同的. 不妨设一下车一趟来回的时间为t,乘车距离为a.可以得到 (l-a)/v1+a/v2=t*(gg-1)+a/v2(意思就是最后一批人乘车到达终点时所有人同时到达终点)

Codeforces Round #265 (Div. 2) 465A. inc ARG(数学题)

题目链接:http://codeforces.com/problemset/problem/465/A Sergey is testing a next-generation processor. Instead of bytes the processor works with memory cells consisting of n bits. These bits are numbered from 1 to n. An integer is stored in the cell in t