zoukankan      html  css  js  c++  java
  • YYHS-NOIP2017Training0921-逆光

    题目描述

    有一束光/那瞬间/是什么痛得刺眼/你的视线是谅解/为什么舍不得熄灭/我逆着光却看见/那是泪光/那力量/我不想再去抵挡/面对希望/逆着光/感觉爱存在的地方/一直就在我身旁

    Description

    Zyh养着n盆太阳花,它们被排在一列直线上。为了简化问题,太阳花的朝向只有向左和向右这两种。Zyh非常喜欢这些花,于是他在每盆花的上方放置了光源。

    太阳花和Zyh幸福地生活着,然而每次要关掉这些光源的时候就会出现一个问题。因为Zyh的动作问题,他每次只能关掉一个光源,在关掉这个光源后,这个光源下方的花就会休眠。然而,对于每一个未休眠的太阳花,如果它的朝向向左,那么每看到一个在它左边的光源关闭,它就会认为自己的人生有些黑暗,于是对Zyh的好感减1。同样地,如果它的朝向向右,那么每看到一个在它右边的光源关闭,也会导致它对Zyh的好感减1。

    Zyh不想看到太阳花对他的好感下降太多。于是他想知道关掉所有灯后,太阳花下降的好感总值是多少。

    输入

    输入包含两行。第一行是一个数正整数n表示太阳花的盆数。然后第二行是n个由空格隔开的0或1。0表示向左,1表示向右。

    输出

    只有一个数,太阳花下降的好感总值。

    样例输入

    5 0 0 0 1 0

    样例输出

    1

    提示

    Case two

    Input

    5

    1 0 1 0 1

    Output

    3

    Hint

    对于30%的数据 n<10

    对于70%的数据 n<=5000

    对于100%的数据 n<=1000000

    题解

    这道题0表示朝左,1表示朝右

    首先我们考虑0 1的情况,这样下降的好感度是为0的,而1 0是需要下降1好感度的

    再来一个样例1 0 0 0,这样需要下降3好感度,相信大家已经想到了一些

    通过这几个样例可以发现

    关掉1,下降的好感度是它右边的0的个数

    关掉0,下降的好感度是它左边的1的个数

    所以不管关0还是1,下降的好感度就是逆序对的个数

    所以答案就是逆序对个数,因为数为0或1,所以我们可以预处理

    sum[i]表示1~i中1的个数,每次判断朝向为0,ans+=sum[i]即可 注意ans要开long long

     1 #include<bits/stdc++.h>
     2 #define ll long long
     3 #define N 1000005
     4 using namespace std;
     5 int n,x;
     6 ll ans;
     7 int sum[N];
     8 int main(){
     9     scanf("%d",&n);
    10     for (int i=1;i<=n;i++){
    11         scanf("%d",&x);
    12         sum[i]=sum[i-1]+x;
    13         if (!x) ans+=sum[i];
    14     }
    15     printf("%lld
    ",ans);
    16     return 0;
    17 } 
    View Code
  • 相关阅读:
    asp.net,cookie,写cookie,取cookie(转载)
    Powerdesign使用小技巧(转载)
    注册asp.net 4.0 到iis
    jQuery的弹出窗口插件colorbox
    sql自动增长标识(转载)
    SVN服务器更改ip地址客户端怎么设置(转载)
    IIS6.0应用程序池回收(转载)
    [delphi]修改indy源码后重新编译
    IdHttp 资料
    c/s程序版本自动升级的问题,如何判断client端版本号是否最新,然后从指定ftp服务器down
  • 原文地址:https://www.cnblogs.com/zhuchenrui/p/7573081.html
Copyright © 2011-2022 走看看