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;
    }
    
  • 相关阅读:
    C# 关于爬取网站数据遇到csrf-token的分析与解决
    Nginx实现同一端口HTTP跳转HTTPS
    Console也要美颜了,来给Console添色彩
    程序员如何巧用Excel提高工作效率
    LeetCode每日一练(1-3)
    Json对象转Ts类
    JcApiHelper 简单好用的.Net ApiHelper
    .Net Core Mvc/WebApi 返回结果封装
    C#光盘刻录
    Orm框架开发之NewExpression合并问题
  • 原文地址:https://www.cnblogs.com/ahawzlc/p/12636889.html
Copyright © 2011-2022 走看看