Codeforces Round #346 (Div. 2) D. Bicycle Race
2016-04-01 19:49
253 查看
D. Bicycle Race
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
Maria participates in a bicycle race.
The speedway takes place on the shores of Lake Lucerne, just repeating its contour. As you know, the lake shore consists only of straight sections, directed to the north, south, east or west.
Let's introduce a system of coordinates, directing the Ox axis from west to east, and the Oy axis
from south to north. As a starting position of the race the southernmost point of the track is selected (and if there are several such points, the most western among them). The participants start the race, moving to the north. At all straight sections of the
track, the participants travel in one of the four directions (north, south, east or west) and change the direction of movement only in bends between the straight sections. The participants, of course, never turn back, that is, they do not change the direction
of movement from north to south or from east to west (or vice versa).
Maria is still young, so she does not feel confident at some turns. Namely, Maria feels insecure if at a failed or untimely turn, she gets into the water. In other words, Maria considers the turn dangerous if she immediately gets into the water if it is ignored.
Help Maria get ready for the competition — determine the number of dangerous turns on the track.
Input
The first line of the input contains an integer n (4 ≤ n ≤ 1000) —
the number of straight sections of the track.
The following (n + 1)-th line contains pairs of integers (xi, yi) ( - 10 000 ≤ xi, yi ≤ 10 000).
The first of these points is the starting position. The i-th straight section of the track begins at the point (xi, yi) and
ends at the point (xi + 1, yi + 1).
It is guaranteed that:
the first straight section is directed to the north;
the southernmost (and if there are several, then the most western of among them) point of the track is the first point;
the last point coincides with the first one (i.e., the start position);
any pair of straight sections of the track has no shared points (except for the neighboring ones, they share exactly one point);
no pair of points (except for the first and last one) is the same;
no two adjacent straight sections are directed in the same direction or in opposite directions.
Output
Print a single integer — the number of dangerous turns on the track.
Examples
input
output
input
output
Note
The first sample corresponds to the picture:
The picture shows that you can get in the water under unfortunate circumstances only at turn at the point (1, 1). Thus, the answer is 1.
此题可以找规律,也可以用叉积来做
规律应该是总的边减去左上、右下四条边,然后其他的每两条边组成一个危险点
叉积:
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
Maria participates in a bicycle race.
The speedway takes place on the shores of Lake Lucerne, just repeating its contour. As you know, the lake shore consists only of straight sections, directed to the north, south, east or west.
Let's introduce a system of coordinates, directing the Ox axis from west to east, and the Oy axis
from south to north. As a starting position of the race the southernmost point of the track is selected (and if there are several such points, the most western among them). The participants start the race, moving to the north. At all straight sections of the
track, the participants travel in one of the four directions (north, south, east or west) and change the direction of movement only in bends between the straight sections. The participants, of course, never turn back, that is, they do not change the direction
of movement from north to south or from east to west (or vice versa).
Maria is still young, so she does not feel confident at some turns. Namely, Maria feels insecure if at a failed or untimely turn, she gets into the water. In other words, Maria considers the turn dangerous if she immediately gets into the water if it is ignored.
Help Maria get ready for the competition — determine the number of dangerous turns on the track.
Input
The first line of the input contains an integer n (4 ≤ n ≤ 1000) —
the number of straight sections of the track.
The following (n + 1)-th line contains pairs of integers (xi, yi) ( - 10 000 ≤ xi, yi ≤ 10 000).
The first of these points is the starting position. The i-th straight section of the track begins at the point (xi, yi) and
ends at the point (xi + 1, yi + 1).
It is guaranteed that:
the first straight section is directed to the north;
the southernmost (and if there are several, then the most western of among them) point of the track is the first point;
the last point coincides with the first one (i.e., the start position);
any pair of straight sections of the track has no shared points (except for the neighboring ones, they share exactly one point);
no pair of points (except for the first and last one) is the same;
no two adjacent straight sections are directed in the same direction or in opposite directions.
Output
Print a single integer — the number of dangerous turns on the track.
Examples
input
6 0 0 0 1 1 1 1 2 2 2 2 0 0 0
output
1
input
161 11 5
3 5
3 7
2 7
2 9
6 9
6 7
5 7
5 3
4 3
4 4
3 4
3 2
5 2
5 11 1
output
6
Note
The first sample corresponds to the picture:
The picture shows that you can get in the water under unfortunate circumstances only at turn at the point (1, 1). Thus, the answer is 1.
此题可以找规律,也可以用叉积来做
规律应该是总的边减去左上、右下四条边,然后其他的每两条边组成一个危险点
#include<iostream> using namespace std; int main() { int n,a,b; cin>>n; for(int i=0;i<n;i++) cin>>a>>b; cout<<(n-4)/2<<endl; }
叉积:
#include<iostream> using namespace std; struct p { int x,y; }a[20000]; int cha(p aa,p b,p c) { return (aa.x-c.x)*(b.y-c.y)-(b.x-c.x)*(aa.y-c.y)>0; } int main() { int n; while(cin>>n) { int ans=0; for(int i=0;i<=n;i++) cin>>a[i].x>>a[i].y; for(int i=1;i<n;i++) ans+=cha(a[i-1],a[i],a[i+1]); cout<<ans<<endl; } }
相关文章推荐
- TCP 聊天室
- 全排列问题、八皇后问题、组合问题的递归解法
- 在原装Win8操作系统的计算机上U盘安装CentOS6.5系统
- iOS界面篇 - bounds和frame的相同和区别
- NSOJ 飞船汇合(经典)
- rsyslog日志系统
- hdu 2860 Regroup【并查集+有道】
- 读取数据库表的前十条数据
- a标签冒泡
- 码农小汪-Hibernate学习5-hibernate中对象的三种状态分析
- 去掉input框点击时的默认颜色
- 剑指offer-面试题23:从上往下打印二叉树
- CentOS 6.0 启动时出现fstab错误时的修复
- c#-随机数2
- 像Maven一样构建java项目的目录,更好的管理java工程的源码
- java基础知识总结(二)
- 一个简单的时间获取客户程序
- 关于Xib 需要注意的地方
- 网络配置
- hibernate常用集合映射详解