C++临项交换模版代码常见题型:
1.求损失最小问题
1.求损失最小问题模版
//
//Created by Carlgood.
//
#include<iostream>
#include<cmath>
#include<string>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<sstream>
using namespace std;
struct cow
{
int t,d;
}a[100010];
bool cmp(const cow &x,const cow &y)
{
return x.t*y.d<y.t*x.d;
}
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i].t>>a[i].d;
}
sort(a+1,a+n+1,cmp);
long long ans=0,t=0;
for(int i=1;i<=n;i++)
{
ans+=t*a[i].d;
t+=a[i].t*2;
}
cout<<ans;
return 0;
}
2.求最大值的那位(COW)找最小风险值模版代码
//
//Created by Carlgood.
//
#include<iostream>
#include<cmath>
#include<string>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<sstream>
using namespace std;
struct cow
{
int w,s;
}a[50010];
bool cmp(const cow &x,const cow &y)
{
return x.w-y.s<y.w-x.s;
}
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i].w>>a[i].s;
}
sort(a+1,a+n+1,cmp);
int maxn=-1E9,sum=0;
for(int i=1;i<=n;i++)
{
int t=sum-a[i].s;
maxn=max(maxn,t);
sum+=a[i].w;
}
cout<<maxn;
return 0;
}
3.排队等待问题模版代码
//
//Created by Carlgood.
//
#include<iostream>
#include<cmath>
#include<string>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<sstream>
using namespace std;
struct water
{
int id,t;
}a[1010];
bool cmp(const water &x,const water &y)
{
return x.t<y.t;
}
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i].t;
a[i].id=i;
}
sort(a+1,a+n+1,cmp);
int sum=0;
int t=0;
for(int i=1;i<=n;i++)
{
sum+=t;
t+=a[i].t;
cout<<a[i].id<<' ';
}
printf("\n%.2lf",sum*1.0/n);
return 0;
}