AtCoder Non-decreasing(数学思维)
2024-09-01 07:46:07
题目链接:https://abc081.contest.atcoder.jp/tasks/arc086_b
题目大意:有n个数,最多可以执行2*n次操作,每次可以选择将ai加到aj上,最终使得该序列满足a1<=a2<=a3....<=an。求操作过程,答案不唯一。
解题思路:我们分三种情况讨论:
①a1~an都大于等于0,那么只要从左往右使a2+=a1,a3+=a2,.....an+=an-1.总共n-1次操作就能保证a1<=a2<=a3....<=an.
②a1~an都小于等于0,那么只要从右往左使an-1+=an,.....a2+=a3,a1+=a2.总共n-1次操作就能保证a1<=a2<=a3....<=an.
③a1~an中有正数也有负数,取最小值MIN和最大值MAX,若abs(MAX)>=abs(MIN),就令a1~an都加上MAX,n次操作就可以得到情况①,总计2*n-1次操作。
若abs(MAX)<abs(MIN),就令a1~an都加上MIN,n次操作就可以得到情况②,总计2*n-1次操作。
总结一下,我们只要根据abs(MAX)和abs(MIN)的大小执行2*n-1次操作,就一定可以得到满足条件的序列。
代码:
#include<cstdio>
#include<cmath>
#include<cctype>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
#include<set>
#include<map>
#include<stack>
#include<string>
#define INF 0x3f3f3f3f
#define LC(a) (a<<1)
#define RC(a) (a<<1|1)
#define MID(a,b) ((a+b)>>1)
#define fin(name) freopen(name,"r",stdin)
#define fout(name) freopen(name,"w",stdout)
#define CLR(arr,val) memset(arr,val,sizeof(arr))
#define FOR(i,start,end) for(int i=start;i<=end;i++)
#define FAST_IO ios::sync_with_stdio(false);cin.tie(0);
using namespace std;
typedef long long LL;
const int N=1e3+; int a[N]; int main(){
int n,ma=,mi=;
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%d",&a[i]);
if(a[i]<a[mi])
mi=i;
if(a[i]>a[ma])
ma=i;
}
printf("%d\n",*n-);
if(abs(a[ma])>=abs(a[mi])){
for(int i=;i<=n;i++){
printf("%d %d\n",ma,i);
}
for(int i=;i<=n;i++){
printf("%d %d\n",i-,i);
}
}
else{
for(int i=;i<=n;i++){
printf("%d %d\n",mi,i);
}
for(int i=n-;i>=;i--){
printf("%d %d\n",i+,i);
}
}
return ;
}
最新文章
- 用极简方式实现新浪新版本特性展示效果--view的图片轮播
- thinkphp中volist标签
- 服务器端高性能的IO模型 转自酷勤网
- [工作中的设计模式]策略模式stategy
- PHP 表单添加隐藏 Token 阻止外部提交
- 【Java安装】Centos6.8 安装Java1.6
- ionic 不同view的數據交互
- BZOJ 1756: Vijos1083 小白逛公园
- tomcat加入系统服务+开机自启
- springboot~mockMvc和asciidoctor生成基于TDD的API文档
- 关于pandas 调用mongodb出Memory error错误
- Windows 10 RS4 无法完全关闭Hyper-V导致Virtual Box 虚拟机无法启动
- Python Day 11
- oracle表空间扩容方法
- Effective C++(第三版)笔记 ---- 第一部分让自己习惯C++
- JustOj 1036: 习题6.11 迭代法求平方根
- 在ToolStrip中加入具有更好体验性的DateTimePicker
- ip地址、子网掩码、DNS的关系与区别
- es6 入坑笔记(五)
- 常用模块random,time,os,sys,序列化模块
热门文章
- 2018九省联考(SHOI2018)
- 洛谷p1017 进制转换(2000noip提高组)
- WinForm二三事(三)Control.Invoke&;Control.BeginInvoke
- Codeforces Round #305 (Div. 2) D 维护单调栈
- angular 有关侦测组件变化的 ChangeDetectorRef 对象
- win7 64位环境下配置汇编环境和程序设计
- bzoj 1528 [POI2005]sam-Toy Cars 堆维护+贪心
- Bolt XML和JQBolt Lua代码自动补全插件配置教程
- 在xadmin中自定义内容的变量及优化汇总
- 2015/11/1用Python写游戏,pygame入门(1):pygame的安装