题目描述:双十一过后,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. MySQL之ERROR 1558 (HY000): Column count of mysql.user is wrong.解决方案

    一.场景 我本想在MySQL5.7上执行下列语句创建一个新用户: CREATE USER "remote"@"%" IDENTIFIED BY "12 ...

  2. 二进制、十六进制理解及int类型二进制存储方式

    二进制 0000 0000 0000 0000 0000 0000 0000 0001 // 2^0 0000 0000 0000 0000 0000 0000 0000 0010 // 2^1 00 ...

  3. SAP 如何看某个TR是否传入了Q或者P系统?

    SAP 如何看某个TR是否传入了Q或者P系统? 两种方式可以查询. 1)进入Q系统或者P系统.SE16,看表TPALOG, 输入请求号码, 执行,看记录里的字段TPSTAT_KEY是否为空,如果不为空 ...

  4. mysql在建表语句中添加索引

    普通索引创建 创建普通索引,即不添加 UNIQUE.FULLTEXT 等任何参数. [例]创建表名为 score 的数据表,并在该表的 id 字段上建立索引,SQL 语句如下: CREATE tabl ...

  5. Python股票量化第一步环境搭建

    很久之前就希望可以量化分析股票,那么国内的股票数据API也有个,最有名的就是tushare,然后还有baostock. 今天我们就来研究一下这个baostock吧. 首先,我们需要下载一个叫做anac ...

  6. cf1294E

    题意简述:给一个矩阵,有两种操作可以进行 操作1:改变矩阵中一个元素的值 操作2:将矩阵中某一列的值循环下移 要求用最少的操作次数使得矩阵变成 题解:对于一列来说,我们肯定是先变化然后再循环下移,所以 ...

  7. rabbitmq安装(ubuntu)

    本文大量复制自:https://blog.csdn.net/qq_22638399/article/details/81704372 # 安装erlang apt-get install erlang ...

  8. Dalvik虚拟机和Art虚拟机

    Dalvik虚拟机 DVM是Dalvik Virtual Machine的缩写,是Android4.4及以前使用的虚拟机,所有android程序都运行在android系统进程里,每个进程对应着一个Da ...

  9. 正则表达式之match方法

    一直以来,对正则表达式都是非常的恐惧的,以至于学习接口自动化时,到了正则,我就想放弃,于是乎,我将近有一个多月没有继续学习.某天睡醒,阳光正好,摊在床上冥想,我不能被眼前的坎挡住了我前进的路呀,说干就 ...

  10. js获取时间及转化

    有关Javascript的本地时间获取,下面我直接用代码来进行举例吧 let time = new Date(); let month = time.getMonth()+1; //获取的月份0~11 ...