#include<iostream>
#include<algorithm>
using namespace std;
struct dj{
double a,b,d;
}s[105];
bool cmp(dj x,dj y){
return x.d>y.d;
}
int main ()
{
int n,m;
cin>>n>>m;
for(int i = 0 ; i<n ; i++){
cin>>s[i].a>>s[i].b;
s[i].d=s[i].b/s[i].a;
}
sort(s,s+n,cmp);
double sum=0;
for(int i = 0 ; i<n ; i++){
if(s[i].a<m){
sum+=s[i].d*s[i].a;
m=m-s[i].a;
}
else{
sum+=s[i].d*m;
break;
}
}
printf("%.2lf",sum);
}
L - 凌乱的yyy / 线段覆盖
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+5;
struct act{
int b,e;
}s[N];
bool cmp(act x,act y){
return x.e<y.e;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
int n;
cin>>n;
for(int i =1 ; i<=n ;i++){
cin>>s[i].b>>s[i].e;
}
sort(s+1,s+n+1,cmp);
int cnt=1,end=s[1].e;
for(int i=2 ; i<=n ; i++){
if(s[i].b>=end){
cnt++;
end=s[i].e;
}
}
cout<<cnt;
return 0;
}
M - 删数问题
#include<iostream>
#include<string>
using namespace std;
int main()
{
string num;
int n,k,a[255];
cin>>num>>k;
n=num.length();
for(int i=0 ; i<n ; i++){
a[i]=num[i]-'0';
}
for(int l=0 ; l<k ;l++){
for(int i=0 ;i<n ; i++){
if(a[i]>a[i+1]){
for(int j=i ; j<n ;j++){
a[j]=a[j+1];
}
n--;
break;
}
}
}
int l=0;
while(a[l]==0&&l<num.length()-k-1){
l++;
}
for(int i = l ;i<num.length()-k; i++){
cout<<a[i];
}
}