结构体排序
怎么排序,w+s之和升序排序
why? (ps:感觉还是这题做的少)
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e5+9;
struct we{
ll w,s;
bool operator<(const we&t)const{
return w+s<t.w+t.s;
}
}a[N];
void moyuhualuo(){
int n ;cin >> n;
// int w,s; cin>>w>>s;
for(int i = 1; i <=n ;i++){
cin>>a[i].w>>a[i].s;
} sort(a+1,a+1+n);
ll ans=-0x3f3f3f3f,tt=0;
for(int i=1;i<=n;i++){
tt+=a[i-1].w;
ans=max(ans,tt-a[i].s);
} cout<<ans;
}
int main( )
{
moyuhualuo();
return 0;
}
伸展运动?
是不是有点像 集合的同学,伸开双臂,空出距离,准备做体操?
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e5+9;
void moyuhualuo(){
int n,k; cin>>n>>k;
vector<int>a(n+1),b(n+1);
for(int i=1;i<=n;i++){
cin>>a[i];
} b[1]=a[1];//第一个不用更改
for(int i=2;i<=n;i++){
sort(a.begin(),a.begin()+i);//每次排序,更改
for(int j=1;j<i;j++){
if(abs(a[i]-a[j])<k){ // a[i] 与 a[j]的距离
a[i]=a[j]+k;
b[i]=a[i];
}else{
b[i]=a[i];
}
}
}
for(int i=1;i<=n;i++){
cout<<b[i]<<' ';
}
}
int main( )
{
moyuhualuo();
return 0;
}