CodeForces - 659D 思维题
2019-09-02 21:45
44 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44705665/article/details/100397803
小明从小就喜欢骑自行车,自行车环湖骑行大赛马上开始了,小明当然也参加了。为了能取得更好地成绩,小明想知道在哪些地方需要格外的注意,以防掉湖。
现在已知该湖为n边形且形状均由直线和直角组成(可以参照样例解释),小明从起始点沿着环湖路线顺时针骑到终点,求小明可能由于忘记拐弯而导致掉湖的次数。
Input
第一行一个整数n(4<=n<=1000)
下面n+1行每行包含两个数,为每个直角处的坐标,第一个点为起始点,相邻两行的坐标构成一条直线,即环湖路线,最后一个点与第一个点重合即终止点。
Output
一个整数。(可能由于忘记拐弯而掉进湖的次数)
Examples
输入
6 0 0 0 1 1 1 1 2 2 2 2 0 0 0
输出
1
输入
16 1 1 1 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 1 1 1
输出
6
Note
第一个实例如下:
小明在(1,1)处可能由于忘记拐弯而掉进湖中,答案为1
本题行走为顺时针,两条线之间为直角,可以发现只有当自行车向左走时,才有掉进湖中的可能。
代码如下:
[code]#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> using namespace std; int f; int main(){ int n,a,b,c,d; scanf("%d",&n); scanf("%d %d %d %d",&a,&b,&c,&d); if(a>c)f=4; if(a<c)f=2; if(b<d)f=1; if(b>d)f=3; n--; a=c;b=d; int ans=0; while(n--){ scanf("%d %d",&c,&d); if(f==1){ if(a>c){ f=4;ans++; }else f=2; }else if(f==2){ if(b<d){ f=1;ans++; }else f=3; }else if(f==3){ if(a<c){ f=2;ans++; }else f=4; }else{ if(b>d){ f=3,ans++; }else f=1; } a=c;b=d; } printf("%d\n",ans); return 0; }
相关文章推荐
- Codeforce Flea CodeForces - 32C 规律|思维
- CodeForces - 296D.Greg and Graph(Floyd+逆序思维)
- 【Codeforces-402C】-Dishonest Sellers(思维)
- Codeforces 501C Rational Resistance 迭代+思维
- codeforces-761【思维】
- Codeforces 301A Yaroslav and Sequence 【思维】
- CodeForces - 789D Weird journey 【思维 + 欧拉路径计数】
- codeforces 466B Wonder Room(思维,暴力)
- Codeforces 320E Kalila and Dimna in the Logging Industry【思维+贪心+斜率优化Dp】好题!
- Codeforces 954C - Matrix Walk(思维 + 模拟)
- Codeforces 239E World Eater Brothers【思维+树形Dp】
- CodeForces - 729D Sea Battle(思维题)
- Codeforces 599C Day at the Beach【思维+优先队列】
- Codeforces 722C Destroying Array【逆序(离线)思维+并查集】
- CodeForces - 711C Coloring Trees(DP)(思维)
- codeforces 232A Cycles 图论 贪心 思维
- CodeForces 554B. Ohana Cleans Up【思维】
- Codeforces 789A Anastasia and pebbles(数学,思维题)
- CodeForces 721D. Maxim and Array(贪心,思维题)
- Codeforces 500B - New Year Permutation (思维)