题目描述
n 位同学(编号从1 到n)同时来到体育馆报名签到,领取准考证和参赛资料。为了有序报名,这n 位同学需要按编号次序(编号为1 的同学站在最前面)从前往后排成一条直线。然而每一位同学都不喜欢拥挤,对于第i 位同学,如果有另外一位同学距离他(她)的距离小于a[i],那么就会发生冲突。小可可想知道如果要不发生任何冲突的情况下,这n 位同学排队的队列最短长度是多少。
输入输出格式
输入格式:输入有两行:
第一行一个整数n,表示报名签到的同学人数。
第二行有n 个整数,第i 个整数a[i]表示第i 个同学必须与其他同学保持的距离。
输出一行,包括一个整数,表示这n 位同学排队队列的最小长度。
注意:n 位同学要按1~n 的次序从前往后排队。
输入输出样例
说明
对于20%的数据满足:1≤n≤20;
对于70%的数据满足:1≤n≤10000;
对于100%的数据满足:1≤n≤100000,1≤a[i]≤100000。
这个题看看数据范围,只要别爆就行qwq
#include<bits/stdc++.h> #define A using #define man namespace #define called std #define hqk ; #define aks int #define ioi main #define every ( #define day ) A man called hqk aks ioi every day { int n,a[100001]; long long ans=0; cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; } for(int i=2;i<=n;i++) { ans+=max(a[i],a[i-1]); } cout<<ans; return 0; } // _ooOoo_ // o8888888o // 88" . "88 // (| -_- |) // O\ = /O // ____/`---'\____ // . ' \\| |// `. // / \\||| : |||// \ // / _||||| -:- |||||- \ // | | \\\ - /// | | // | \_| ''\---/'' | | // \ .-\__ `-` ___/-. / // ___`. .' /--.--\ `. . __ // ."" '< `.___\_<|>_/___.' >' "". // | | : `- \`.;`\ _ /`;.`/ - ` : | | // \ \ `-. \_ __\ /__ _/ .-` / / // ======`-.____`-.___\_____/___.-`____.-'====== // `=---=' // // ............................................. // 佛祖保佑 永无BUG // 佛曰: // 写字楼里写字间,写字间里程序员; // 程序人员写程序,又拿程序换酒钱。 // 酒醒只在网上坐,酒醉还来网下眠; // 酒醉酒醒日复日,网上网下年复年。 // 但愿老死电脑间,不愿鞠躬老板前; // 奔驰宝马贵者趣,公交自行程序员。 // 别人笑我忒疯癫,我笑自己命太贱; // 不见满街漂亮妹,哪个归得程序员?