18新生赛 4. Deal
题目描述:双十一过后,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的更多相关文章
- SCNU ACM 2016新生赛初赛 解题报告
新生初赛题目.解题思路.参考代码一览 1001. 无聊的日常 Problem Description 两位小朋友小A和小B无聊时玩了个游戏,在限定时间内说出一排数字,那边说出的数大就赢,你的工作是帮他 ...
- [BUUCTF]REVERSE——[ACTF新生赛2020]Oruga
[ACTF新生赛2020]Oruga 附件 步骤: 例行检查,64位程序,无壳 64位ida载入,检索字符串,根据提示来到关键函数 14行~18行就是让字符串的前5位是 actf{ ,sub_78A( ...
- SCNU 2015ACM新生赛决赛【F. Oyk闯机关】解题报告
题目大意:一个$N$$\times$$N$的阵列,每个格子有$X_{ij}$个调和之音,若每次只能选择走右边或下边,从左上角出发走到右下角,问最多能收集到多少个调和之音? ...
- [10.18模拟赛] 序列 (DP)
[10.18模拟赛] 序列 题目描述 山山有一个整数序列s1,s2,-,sn,其中1≤si≤k. 求出有多少个准确移除m个元素后不同的序列.答案模(1e9+7) 输入 输入包括几个测试用例,并且由文件 ...
- 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 ...
- [ACTF2020 新生赛]BackupFile && [ACTF2020 新生赛]Upload &&[GYCTF2020]Blacklist
[ACTF2020 新生赛]BackupFile 尝试找到源代码,加上题目是备份文件,猜测备份文件里面有网站的源代码,御剑扫描一下,就扫到index.php 访问index.php.bak 下载源代码 ...
- [BUUCTF]REVERSE——[ACTF新生赛2020]usualCrypt
[ACTF新生赛2020]usualCrypt 附件 步骤: 例行检查,无壳,32位程序 32位ida载入,直接看main函数 逻辑很简单,一开始让我们输入一个字符串,然后该字符串经过sub_4010 ...
- [BUUCTF]REVERSE——[ACTF新生赛2020]rome
[ACTF新生赛2020]rome 附件 步骤 无壳,32位程序 32位ida载入,根据提示字符串"You are correct!",找到关键函数func v15 = 'Q'; ...
- [BUUCTF]REVERSE——[ACTF新生赛2020]easyre
[ACTF新生赛2020]easyre 附件 步骤 查壳,32位程序,upx壳儿 脱完壳儿,扔进ida 分析 一开始给我们定义了一个数组, v4=[42,70,39,34,78,44,34,40,73 ...
随机推荐
- 10个用于C#.NET开发的基本调试工具
在调试软件时,工具非常重要.获取正确的工具,然后再调试时提起正确的信息.根据获取的正确的错误信息,可以找到问题的根源所在.找到问题根源所在,你就能够解决该错误了. 你将看到我认为最基本的解决在C# . ...
- K8S集群入门:运行一个应用程序究竟需要多少集群?
如果你使用Kubernetes作为应用程序的操作平台,那么你应该会遇到一些有关使用集群的方式的基本问题: 你应该有多少集群? 它们应该多大? 它们应该包含什么? 本文将深入讨论这些问题,并分析你所拥有 ...
- Git push时不需要总输入密码
遇到问题: 最近因为换了自己的邮箱密码后,每次push的时候都需要填写密码,账号.很烦 解决方法: [戎马半生的答案] (http://www.cnblogs.com/zhaoyu1995/p/650 ...
- Linux Samba文件共享服务,安装与案例配置
Samba服务器安装和配置 1:安装Samba服务器软件包 [root@localhost ~]# rpm -qa | grep samba [root@localhost ~]# yum -y in ...
- JS淘宝小广告
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...
- node.remove()
node.remove()方法是在DOM 4规范中实现的,由于糟糕的浏览器支持,不建议使用.应该使用removeChild方法,但是该方法必须要清楚父元素,通常的做法是:node.parentNode ...
- opencv —— floodFill 漫水填充法 实现证件照换背景
漫水填充:floodFill 函数 简单来说,漫水填充就是自动选中与种子像素相连的区域,利用指定颜色进行区域颜色填充.Windows 画图工具中的油漆桶功能和 Photoshop 的魔法棒选择工具,都 ...
- HTML速查
HTML 基本文档 <!DOCTYPE html> <html> <head> <title>文档标题</title> </head& ...
- setter&getter
let _age = 4 class Animal { construct (type){ this.type = type } get age(){ return _age } set age(va ...
- import,export深入理解
export 最正常: var firstName = 'Michael'; var lastName = 'Jackson'; var year = 1958; export { firstName ...