https://codeforces.com/contest/1635/problem/C
题面给你一个长度为n的数组
a
[
i
]
a[i]
a[i] ,我们有一种操作让
a
[
x
]
=
a
[
y
]
−
a
[
z
]
a[x] = a[y] - a[z]
a[x]=a[y]−a[z] ,我们可以使用无限次操作让数组
a
a
a 变成一个非递减的数组,如果可以的话,输出操作的过程(即每一步的x、y、z),否则输出 -1
因为题目中并未要求使得操作次数最小,那么我们就来思考什么情况下是不能构建的呢,于是我们分成如下几种情况讨论:
- 当序列本身就是一个非递减的,那么操作数为0
- 当 a [ n ] < a [ n − 1 ] a[n] < a[n-1] a[n] = 0 a[n] >= 0 a[n]>=0 那么,我们对前 n − 2 n-2 n−2 个数做一个 i , n − 1 , n i ,n-1,n i,n−1,n 的一个操作,那么前n-2个数就都等于 a [ n − 1 ] − a [ n ] a[n-1]-a[n] a[n−1]−a[n] 且这个数一定是比 a [ n − 1 ] a[n-1] a[n−1] 小的,因为减去的是正数,又由于 a [ n ] > = a [ n − 1 ] a[n] >= a[n-1] a[n]>=a[n−1] ,那么我们这个构建的一定是一个非递减的序列
- 如果
a
[
n
]
<
0
a[n] < 0
a[n]>n;
bool fg = true;
a[0] = -0x3f3f3f3f;
for(int i = 1;i >a[i];
if(a[i]
关注打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?