3 条题解
-
1
#include <bits/stdc++.h> #define ll long long #define db double #define cr char #define scd(x) scanf("%d",&x) #define prd(x) printf("%d",x) #define prl() printf("\n") #define prsp() printf(" ") #define rep(i,x,y) for(int i=x;i<=y;i++) using namespace std; ll n,n1,n2,v,x,y,yu1[30100],yu2[30100],f[60100],l1[60100],l2[60100]; int main(){ cin>>n>>v; for(int i=1;i<=n;i++){ cin>>x>>y; if(x==1) yu1[++n1]=y; else yu2[++n2]=y; } sort(yu1+1,yu1+n1+1); sort(yu2+1,yu2+n2+1); l1[1]=n1; l2[0]=l2[1]=n2; f[1]=yu1[n1]; l1[1]--; for(int i=2;i<=v;i++){ if(f[i-2]+yu2[l2[i-2]]>=f[i-1]+yu1[l1[i-1]]){ l2[i]=l2[i-2]-1; l1[i]=l1[i-1]; f[i]=f[i-2]+yu2[l2[i-2]]; } else{ l2[i]=l2[i-2]; l1[i]=l1[i-1]-1; f[i]=f[i-1]+yu1[l1[i-1]]; } } cout<<f[v]; return 0; }
-
1
#include <bits/stdc++.h> using namespace std; #define int long long int read() { char ch=getchar(); int x=0,m=1; while(!isdigit(ch)){ if (ch=='-') m=-1; ch=getchar(); } while(isdigit(ch)){ x=x*10+ch-'0'; ch=getchar(); } return x*m; } void write(int x) { if (x<0) putchar('-'),x=-x; if (x>=10) write(x/10); putchar(x%10+'0'); } int n=read(),v=read(),mid,ans; struct Node{ short x; int y; }a[30010]; bool cmp(Node x,Node y) { return x.x < y.x || (x.y > y.y && x.x == y.x); } signed main() { for (int i=1;i<=n;i++){ a[i].x=read(); a[i].y=read(); if (a[i].x==1) mid++; } sort(a+1,a+1+n,cmp); int i=0,j=mid; while(i<mid&&i<v) ans+=a[++i].y; while(j<n&&i+(j-mid+1<<1)<=v) ans+=a[++j].y; while(i>=2&&j<n&&a[i].y+a[i-1].y<=a[j+1].y) ans+=a[++j].y-a[i--].y-a[i--].y; if (i<mid&&i+(j-mid<<1)<v) ans+=a[++i].y; write(ans); return 0; }
-
0
#include<bits/stdc++.h> using namespace std; long i,n,m,s,a,b[30005],o,o1,c[30005],k,j; bool cmp(long x,long y) { return x>y; } void main() { cin>>n>>m; for(i=1;i<=n;i++) { cin>>a; if(a>1)cin>>b[++o]; else cin>>c[++o1]; } sort(b+1,b+o+1,cmp); sort(c+1,c+o1+1,cmp); i=j=1; while(m) { if(m>1) { if(b[i]<c[j]+c[j+1])s+=c[j]+c[j+1],j+=2; else s+=b[i],i++; m-=2; } else{ s+=c[j]; j++; m--; } }cout<<s; return; }
- 1
信息
- ID
- 32
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- (无)
- 递交数
- 92
- 已通过
- 22
- 上传者