题目描述:双十一过后,syx发现自己快要吃土了。但是机智的他决定理财。他预测了将来n天的比特币行情,发现有涨有跌,有跌有涨。手里的钱只要在比特币的浪潮中经历沉浮,低价收入,高价卖出,就可以轻易割到别人的韭菜从而致富。为了降低风险,他决定无论何时,最多手里只保留不超过1个比特币,同时他想在获利最多的情况下尽可能减少交易发生的数量。现给出n天的比特币行情,即每天的1个比特币的价值。请你求出n天后,syx最多能获利多少?在最大获利情况下的最小交易次数是多少次?我们假设初始时syx有无限的钱财,因为哪怕借钱他也要赚一波。

输入:第一行有一个整数 T, 表示共有T组数据。 0 < T<=5  每组数据两行:

对于每组数据的第一行,有一个整数 n,表示预测了 n 天的行情 (1 <= n <= 100000)

对于每组数据的第二行,有 n 个整数 ai,分别表示第 i 天的行情。(0 <= ai <= 1010)

输出

对于每一组样例,输出一行两个整数用空格隔开,表示最大获利和最小交易次数

样例输入

2
5
9 10 7 6 8
3
3 2 1

样例输出

3 4
0 0 代码
#include<stdio.h>
int main() {
 int T;
 long long b[6],c[6];
 scanf("%d",&T);
 for(int j=0; j<T; j++) {
  int n,i=0,x=0,s=0,money=0;
  long long a[100005];
  scanf("%d",&n);          //n组数据
  for(i=1; i<=n; i++) {
   scanf("%d",&a[i]);      //n天的行情
  }
  for(i=1; i<n; i++) {
   if(a[i+1]>a[i]) {
    money=money+(a[i+1]-a[i]);
    s++;             //算差价,
   } else {
    s=0;                //引入变量s作为判断标准,无论连续交易多少次,为了算最少次数,则最终次数都是2
   }                     // 当后者比前者小,即出现亏本,s清零
   if(s==1)  x=x+2;        
  }
  b[j]=money;
  c[j]=x;
 }
 for(int i=0; i<T; i++) {
  printf("%d %d\n",b[i],c[i]);
 }
 return 0;
} 最开始没想到引入变量s,然后就无法准确算最小交易次数。最大利益,即先找最低点,再找相邻的最高点,然后作差,然后再重复以上内容,但这样不会算最小次数。
引入变量s后,只需判断后者是否比前者大,如果大,就作差算利益,s++,s初始为0,++后为1,只要为1,则次数加2,如果出现后者比前者小,那么连续交易中断,此时s清零,为了下次的连续交易做准备。

18新生赛 4. Deal的更多相关文章

  1. SCNU ACM 2016新生赛初赛 解题报告

    新生初赛题目.解题思路.参考代码一览 1001. 无聊的日常 Problem Description 两位小朋友小A和小B无聊时玩了个游戏,在限定时间内说出一排数字,那边说出的数大就赢,你的工作是帮他 ...

  2. [BUUCTF]REVERSE——[ACTF新生赛2020]Oruga

    [ACTF新生赛2020]Oruga 附件 步骤: 例行检查,64位程序,无壳 64位ida载入,检索字符串,根据提示来到关键函数 14行~18行就是让字符串的前5位是 actf{ ,sub_78A( ...

  3. SCNU 2015ACM新生赛决赛【F. Oyk闯机关】解题报告

            题目大意:一个$N$$\times$$N$的阵列,每个格子有$X_{ij}$个调和之音,若每次只能选择走右边或下边,从左上角出发走到右下角,问最多能收集到多少个调和之音?       ...

  4. [10.18模拟赛] 序列 (DP)

    [10.18模拟赛] 序列 题目描述 山山有一个整数序列s1,s2,-,sn,其中1≤si≤k. 求出有多少个准确移除m个元素后不同的序列.答案模(1e9+7) 输入 输入包括几个测试用例,并且由文件 ...

  5. Codeforces 801 A.Vicious Keyboard & Jxnu Group Programming Ladder Tournament 2017江西师大新生赛 L1-2.叶神的字符串

    A. Vicious Keyboard time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  6. [ACTF2020 新生赛]BackupFile && [ACTF2020 新生赛]Upload &&[GYCTF2020]Blacklist

    [ACTF2020 新生赛]BackupFile 尝试找到源代码,加上题目是备份文件,猜测备份文件里面有网站的源代码,御剑扫描一下,就扫到index.php 访问index.php.bak 下载源代码 ...

  7. [BUUCTF]REVERSE——[ACTF新生赛2020]usualCrypt

    [ACTF新生赛2020]usualCrypt 附件 步骤: 例行检查,无壳,32位程序 32位ida载入,直接看main函数 逻辑很简单,一开始让我们输入一个字符串,然后该字符串经过sub_4010 ...

  8. [BUUCTF]REVERSE——[ACTF新生赛2020]rome

    [ACTF新生赛2020]rome 附件 步骤 无壳,32位程序 32位ida载入,根据提示字符串"You are correct!",找到关键函数func v15 = 'Q'; ...

  9. [BUUCTF]REVERSE——[ACTF新生赛2020]easyre

    [ACTF新生赛2020]easyre 附件 步骤 查壳,32位程序,upx壳儿 脱完壳儿,扔进ida 分析 一开始给我们定义了一个数组, v4=[42,70,39,34,78,44,34,40,73 ...

随机推荐

  1. webpack--介绍、安装及入门

    最早的时候,所有Javascript代码都写在一个文件里面,只要加载这一个文件就够了.后来,代码越来越多,一个文件不够了,必须分成多个文件,依次加载.下面的网页代码,相信很多人都见过. <scr ...

  2. 【WPF学习】第四十八章 理解WPF动画

    在许多用户框架中(特别是WPF之前的框架,如Windows窗体和MFC),开发人员必须从头构建自己的动画系统.最常用的技术是结合使用计时器和一些自定义的绘图逻辑.WPF通过自带的基于属性的动画系统,改 ...

  3. 最通俗易懂的 Java 10 新特性讲解

    自从 Java 9 开始,Oracle 调整了 Java 版本的发布策略,不再是之前的 N 年一个大版本,取而代之的是 6 个月一个小版本,三年一个大版本,这样可以让 Java 的最新改变迅速上线,而 ...

  4. 用msi安装MySQL时MySQL Server组件不能安装,或安装失败

    我的环境:       MySQL8.0.15,       win10 错误描述:在安装MySQL时,如果MySQL Server组件提示不能安装,错误提示是:VS 2015没有安装或安装失败.原因 ...

  5. 工作五年的.neter的一些经历感想和对未来的一些疑惑

    本次疫情在家办公快一个月了,节省了上下班的时间,外出活动时间,感觉有好多时间可以利用.人一闲下来就容易想事情,很多事情想不通心里堵的厉害,做事都提不起兴趣.至于想些什么呢,我给大家摆一下. 我的经历 ...

  6. 前端html,css考点

    1, 内联元素,块级元素相关知识点 参考链接:https://edu.aliyun.com/a/103378 (1)置换元素 概念:浏览器根据元素的标签和属性,来决定元素的具体显示内容.<img ...

  7. python学习------文件的读与写

    f=open("yesterday","r",encoding="utf-8") #文件句柄 data=f.read() data2=f.r ...

  8. CentOS7 GlusterFS文件系统部署

    一.GlusterFS简介 GlusterFS(GNU ClusterFile System)是一种全对称的开源分布式文件系统,所谓全对称是指GlusterFS采用弹性哈希算法,没有中心节点,所有节点 ...

  9. C#实现的一些常见时间格式

    string aa = DateTime.Now.ToShortDateString();//"2019/9/23" string bb = DateTime.Now.ToShor ...

  10. RAID | 故障处理

    RAID | 故障处理 Unconfigured(good), Spun Up 背景:磁盘替换后在导入外部配置时提示失败,磁盘状态如题. MegaCli -pdgetmissing -a0查看miss ...