• UVA11054Gergovia的酒交易


    题意:
          有n个村庄,每个村庄要么买酒要么买酒,负数是买酒,整数是买酒,题目保证所有的数字想加和为0,保证有解,然后每一个村庄往相邻的村庄运k坛酒的花费是k,问满足所有的村庄的最小花费是多少?


    思路:
          比较容易想,直接扫一遍就行了,我们从左到右,开一个变量记录当前这个点前面的和,假如是整数,说明前面整体还是卖酒的,假如是负数说明是买酒的,不论是正是负,当前这一步必须也最少要花sba(sum)那么多钱,就这样更新到最后就行了,为什么这样会是对的,很容易理解,sum+=num[i]如果是正+负就是说前面的要买到当前的位置,当然是能卖就卖了,难道还继续带着往后走?如果是正+正,说明前面有剩余,现在这家也是要卖酒,那么没办法,这能一起往右买了,同理还有两种情况,就不解释了,具体细节看代码,还有就是记得longlong,一开始大意了WA了一次。
          
          


    #include<stdio.h>


    long long abss(long long x)
    {
        return x > 0 ? x : -x;
    }


    int main ()
    {
        long long i ,n ,Ans ,num ,sum;
        while(~scanf("%lld" ,&n) && n)
        {
           Ans = sum = 0;
           for(i = 1 ;i <= n ;i ++)
           {
              scanf("%lld" ,&num);
              sum += num;
              Ans += abss(sum);
              
           }
           printf("%lld " ,Ans);
        }
        return 0;
    }

  • 相关阅读:
    SpringMVC01_入门案例
    Spring10_AOP
    Spring09_动态代理
    VisualGC IDEA插件(原创)
    IDEA 项目文件图标渲染类 CompoundIconProvider
    Visual VM 垃圾回收性能监控开源插件, 支持Java 8和VisualVM 2.0
    VisualGC 3.0 独立运行增强版, 支持JDK 8
    SpringMVC总结
    SSM框架整合
    MySQL免安装版配置教程
  • 原文地址:https://www.cnblogs.com/csnd/p/12062613.html
Copyright © 2020-2023  润新知