AcWing 4961. 整数删除
原题链接
中等
作者:
naasi
,
2024-02-26 20:49:30
,
所有人可见
,
阅读 108
使用stl的暴力骗分代码,目的是练习一下stl,下更满分做法
Vector
push_back()
向末尾放一个数
erase()
可重载
- 删除指定位置
erase(v.begin()+2)
- 删除指定区域
erase(v.begin()+1,v.begin()+3)
int minValue = *min_element(v.begin(),v.end());
求最小值
int minPosition = min_element(v.begin(),v.end()) - v.begin();
求最小值的下标
- auto 可以自动转换成迭代器的类型
代码
#include <bits/stdc++.h>
using namespace std;
int n , K;
vector <int> V;
void f()
{
auto index = min_element(V.begin(),V.end())-V.begin(); //最小值的下标
if(index==0)//下标是开始
{
V[index+1]+=V[index];
}
else if(index==int(V.size()-1))// 下标是末尾
{
V[index-1] += V[index];
}
else
{
V[index+1]+=V[index];
V[index-1] += V[index];
}
V.erase(V.begin()+index);
}
int main()
{
cin >> n >> K;
while(n--)
{
int a;
cin >> a;
V.push_back(a);
}
while(K--)
f();
for(auto i:V)
cout << i << " ";
}