AtCoder Beginner Contest 081 D
来源:互联网 发布:可视化网页编辑软件 编辑:程序博客网 时间:2024/06/12 23:36
D Non-decreasing
题意:给N个数,有操作f(a,b) 把第a个数的值加到第b个数上。求一个小于2N的操作序列,使给出的序列变成非递减序列。
题解:当序列为非负序列时,通过a[i+1]+=a[i]构造;
当为非正序列时a[i]+=a[i+1];
所以先用N个操作(加绝对值最大的数)变成非正/非负序列,然后按照上面的构造方法构造即可。
注意边界。
#include<bits/stdc++.h> using namespace std; typedef long long ll; typedef long double db; typedef pair<int,int> pii; typedef vector<int> vi; #define de(x) cout << #x << "=" << x << endl #define rep(i,a,b) for(int i=a;i<(b);++i) #define per(i,a,b) for(int i=b-1;i>=(a);i--) #define all(x) (x).begin(),(x).end() #define sz(x) (int)(x).size() #define mp make_pair #define pb push_back #define fi first #define se second #define lb(x) (x&-(x)) const int N = 101010; int a[200]; int main(){ int maxx=INT_MIN; int maxxi,minni; int minn=INT_MAX; int n; cin>>n; rep(i,0,n) { scanf("%d",&a[i]); if(a[i]>maxx) { maxx=a[i]; maxxi=i; } if(a[i]<minn) { minn=min(minn,a[i]); minni=i; } } printf("%d\n",n+n-1); if(maxx+minn>=0) { rep(i,0,n) { printf("%d %d\n",maxxi+1,i+1); a[i]+=maxx; } // rep(i,0,n) cout<<a[i]<<" ";cout<<endl; rep(i,0,n-1) { printf("%d %d\n",i+1,i+2); a[i+1]+=a[i]; } } else { rep(i,0,n) { printf("%d %d\n",minni+1,i+1); a[i]+=minn; } // rep(i,0,n) cout<<a[i]<<" ";cout<<endl; per(i,0,n-1) { printf("%d %d\n",i+2,i+1); a[i]+=a[i+1]; } } return 0; }
阅读全文
0 0
- AtCoder Beginner Contest 081 D
- AtCoder Beginner Contest 081 D
- AtCoder Beginner Contest 081
- AtCoder Beginner Contest 081
- AtCoder Beginner Contest 061 D
- AtCoder Beginner Contest 066 D
- AtCoder Beginner Contest 067 D
- AtCoder Beginner Contest 067 D
- AtCoder Beginner Contest 068 D
- AtCoder Beginner Contest 069 D
- AtCoder Beginner Contest 070-D
- AtCoder Beginner Contest 070 D
- AtCoder Beginner Contest 071 D
- AtCoder Beginner Contest 075 D
- AtCoder Beginner Contest 076 D
- AtCoder AtCoder Beginner Contest 063 D
- AtCoder Beginner Contest 081 C
- AtCoder Beginner Contest 058 D井井井 / ###【“贡献”】
- linux守护进程
- 消息队列:ActiveMQ
- PATH环境变量-学习小记
- Kafka设计解析(六)- Kafka高性能关键技术解析
- Android攻击方式与安全分析
- AtCoder Beginner Contest 081 D
- 机器学习笔记(0)-统计学习方法与感知机
- 搭建个人博客
- Fiddler实战之http[s]流量分析
- 对象的销毁
- CUDA并行规约(相邻配对)
- mysql查询数据表中某字段重复的数据
- 盒子模型
- 给定一个没有重复的已排序整数数组,返回其范围的摘要。