luogu2305 解题报告

第一次写这种什么玩意,求大神指教。

真相如图

这里写图片描述
洛谷2305 “不断进步”的八尾勇
本题地址: http://www.luogu.org/problem/show?pid=2305

题目描述
noip训练时,我们的勇姐做了大量的模拟比赛——能力有限,当然没法每一场都AK(All Kill)。结果其父过来“关心”她的模拟比赛成绩。
八尾勇为了造成自己不断进步的假象,打算篡改自己的成绩。
她为了对得起自己的良心,不会真的篡改,而是将相邻的两场比赛合并为一场,分数累加,变成了一场分数为之前两场之和的大比赛。
之前题目题意有些歧义更正如下
八尾勇是这么处理的:她从前往后扫一遍成绩,发现第一个“不和谐”的成绩,就将这场比赛并入这场比赛后面的一场比赛。然后如此反复。第一个“不和谐”的意思是一组数列中第一个不满足单调不减的数字。
如果没有后面的比赛可以加,那就加到前面的一个的成绩中去。
新增一组样例

已经合并比赛可以再次进行合并。
八尾勇的父亲只关心分数的高低,才不管满分多少。八尾勇希望通过最少的合并次数,变成一个单调不减的成绩单
输入输出格式
输入格式:
第一行一个整数N
第二行,N个整数,分别表示这N次比赛的成绩

输出格式:
一个整数,表示最小合并次数。

输入输出样例
输入样例#1:
92 3 5 1 2 4 8 7 8输出样例#1:
3输入样例#2:
43 2 6 7输出样例#2:
2
说明
样例解释1
2 3 5 【1 2】 4 8 7 8
2 3 5 【3 4】 8 7 8
2 3 5 7 8 【7 8】
2 3 5 7 8 15
一共合并3次

样例解释2
3 【2 6】 7
3 【8 7】
3 15
2次,而不是直接【3 2】6 7。因为第一个“不和谐”的成绩是2

对于40%的数据,0<=N<=2000
对于100%的数据,0<=N<=200000,成绩的范围均0<=A_i<=2^31-1

这些只是复制的。。。

首先,这只是到简单的模拟(第一次写当然要容易的了。。。)
完全不需要数组!!!读一个处理一个就行了!!!
范围在longlong内
本人AC代码(本人蒟蒻)

#include<iostream>                                //不解释
#include<cstdio>
using namespace std; 
int n,cnt=0;long long q=0,h=0,t;                         //n是数量,cnt统计,q是前面的那个数,h是后面的,t用来读
int main(){
cin>>n;
while(n--){
scanf("%lld",&t);
h+=t;                //读入的数加入后面的数
if(h>=q){         //如果可以不作弊,后面的数就成了前面这个数,后面数归零
q=h;
h=0;
}
else cnt++;                                          //否则作弊
}
printf("%d",cnt);                  //输出结果啦ORZ
} 

P党(未经提交)

var n,cnt,i:longint;
      q,h,t:int64;
begin
cnt:=0;
q:=0;
h:=0;
read(n);
for i:=1 to n do
begin
read(t);
h:=h+t;
if(h>=q)
begin
q:=h;
h:=0;
end
else  inc(cnt);
end;
writeln(cnt);
end. 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值