zoukankan      html  css  js  c++  java
  • 题解 CF719A 【Vitya in the Countryside】

    CF719A 【Vitya in the Countryside】,if好题,你值得拥有。


    题目大意就是给出月亮盈亏,然后预测下面的情况。

    来看一个图:

    4.4tj1.png

    (手工绘制,不要在意美观细节。)

    很显然的两个点:

    1. 当题目数据同 A、E 相同时,答案是UP

    2. 当题目数据同 C 相同时,答案是DOWN

    因为 A 段是单调上升的,B段是单调下降的。

    那么当题目数据是 ABC 三段或者 CDE 三段呢?

    很显然前者UP,后者DOWN

    因为无论前面怎么变,最后预测还是看最后一段上升或下降的曲线。

    而判断一个曲线最后的方向,只需看两个数据,因为2个数据是最短的能够判断升降序的序列。

    由此,我们得出一般性结论(敲黑板):

    当前序列((mathtt {len ge 2}))最后的升降序,由最后两个数据决定。

    但是!

    如果序列像 AB 或者 CD 呢?

    由于 B 点和 D 点分别是峰顶和峰底,下面的数据会峰回路转,所以先进行对最后一个数据的判断:

    如果这个数据是15,那么输出升序;

    如果这个数据是0,那么输出降序。

    还有一种特殊情况,当 (len == 1) 时,除上述为 15 和 0 的情况外,其他的数字都无法判断下面的是升序还是降序。理由就是2个数据是最短的能够判断升降序的序列

    分析结束,喜闻乐见上代码。

    #include<bits/stdc++.h>
    using namespace std;
    int main() {
    	int va1,va2,n;
    	cin>>n;
    	for(int i=1;i<n;i++) cin>>va1;
    	cin>>va2;
    	if(va2==15) puts("DOWN");//特判1
    	else if(va2==0) puts("UP");//特判2
    	else if(n==1) puts("-1");//序列len==1,无法判断
    	else if(va2>va1) puts("UP");//升序
    	else puts("DOWN");//降序
    	return 0;
    }
    
  • 相关阅读:
    hihoCoder#1037 : 数字三角形(DP)
    Android安全机制
    Java五道输出易错题解析(进来挑战下)
    【Mail】JavaMail介绍及发送邮件(一)
    【Mail】搭建邮件服务器(LAMP+Postfix+Dovcot+PostfixAdmin+Roundcubemail)
    【Mail】telnet收发邮件过程
    【Mail】邮件的基础知识和原理
    【Java】JavaWeb权限管理
    【Java】JDBC连接数据库
    【Mysql】权限管理
  • 原文地址:https://www.cnblogs.com/ahawzlc/p/12636889.html
Copyright © 2011-2022 走看看