0
已解决
WA90代码
#include<iostream>
#include<algorithm>
using namespace std;
long long n,s,cnt;
struct me {
long long Pi,Ci;
} a[100005];
bool cmp(me x,me y) {
return x.Pi<y.Pi;
}
int main() {
cin>>n>>s;
for(int i=1; i<=n; i++) {
cin>>a[i].Pi>>a[i].Ci;
}
sort(a+1,a+n+1,cmp);
for(int i=1; i<=n; i++) {
if(s>=(a[i].Pi*a[i].Ci)) {
s-=(a[i].Pi*a[i].Ci);
cnt+=a[i].Ci;
} else {
int m=s*1.0/a[i].Pi;
cnt+=m;
break;
}
}
cout<<cnt;
return 0;
}
0
已采纳
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++){
if(a[i].p*a[i].c<m){
cnt+=a[i].c;
m-=a[i].p*a[i].c;
} else {
cnt+=m/a[i].p;
break;
}
}
cout<<cnt;
0
主函数:
n=read();
m=read();
for (int i=1;i<=n;i++){ a[i].c=read();a[i].p=read(); }
sort(a+1,a+n+1,cmp);
for (int i=1;i<=n;i++){
LL num=min(m/a[i].c,a[i].p);
ans+=num;m-=num*a[i].c;
}
printf("%lld",ans);
定义的函数:
inline bool cmp(const item &a,const item &b){return a.c<b.c;}
inline LL min(LL a,LL b){ return a<b?a:b; }
inline LL read(){
LL x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*f;
}
除了n是int,m,ans,rest都是LL,结构体对的
0
被禁言


中级光能
核心:
int n;
unsigned long long ans,v;
struct node{
unsigned long long p,c;
}a[100001];
bool cmp(node x,node y){
return x.p<y.p;
}
int main(){
cin>>n>>v;
for(int i=1;i<=n;i++)cin>>a[i].p>>a[i].c;
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n;i++){
if(v>a[i].p*a[i].c){
v-=a[i].p*a[i].c;
ans+=a[i].c;
}else{
ans+=v/a[i].p;
break;
}
}
cout<<ans;
return 0;
}
0
定义
long long n,ans,b;
struct P{
long long p,c;
}a[100005];
bool cmp(P a,P b){
return a.p<b.p;
}
核心
cin>>n>>b;
for(int i=1;i<=n;i++){
cin>>a[i].p>>a[i].c;
}
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n;i++){
long long x=b*1.0/a[i].p;
if(x>a[i].c){
x=a[i].c;
}
ans+=x;
b-=a[i].p*x;
}
输出ans
0
0