zoukankan      html  css  js  c++  java
  • Codeforces 808E

    点这里

     1 #include<bits/stdc++.h>
     2 #define ll long long
     3 using namespace std;
     4 const int N=1e5+5,M=3e5+5;
     5 int n,m,num[4],a[4][N];
     6 ll ans,sum3[N];
     7 struct node {ll v; int s1,s2;}f[M];
     8 inline int read() {
     9     int x=0; char c=getchar();
    10     while(c<'0'||c>'9') c=getchar();
    11     while(c>='0'&&c<='9') x=(x<<3)+(x<<1)+c-'0',c=getchar();
    12     return x;
    13 }
    14 bool cmp(int x,int y) {return x>y;}
    15 
    16 int main() {
    17     n=read(),m=read();
    18     for(int i=1;i<=n;i++) {
    19         int w=read(),c=read();
    20         a[w][++num[w]]=c;
    21     }
    22     for(int i=1;i<=3;i++) 
    23      sort(a[i]+1,a[i]+num[i]+1,cmp);
    24     for(int i=1;i<=num[3];i++)
    25      sum3[i]=sum3[i-1]+a[3][i];
    26     
    27     for(int i=1;i<=m;i++) {
    28         f[i]=f[i-1];
    29         //1
    30         if(f[i-1].v+a[1][f[i-1].s1+1]>f[i].v) {
    31             f[i].v=f[i-1].v+a[1][f[i-1].s1+1];
    32             f[i].s1=f[i-1].s1+1;
    33             f[i].s2=f[i-1].s2;
    34         }
    35         //2 
    36         if(i>=2&&f[i-2].v+a[2][f[i-2].s2+1]>f[i].v) {
    37             f[i].v=f[i-2].v+a[2][f[i-2].s2+1];
    38             f[i].s1=f[i-2].s1;
    39             f[i].s2=f[i-2].s2+1;
    40         }
    41     }
    42     for(int i=0;i<=num[3]&&3*i<=m;i++)
    43      if(sum3[i]+f[m-3*i].v>ans) ans=sum3[i]+f[m-3*i].v;
    44     printf("%lld",ans);
    45 }
  • 相关阅读:
    javascript类继承系列一
    Update Statistics用法
    FOR XML PATH
    SQL Server 中WITH (NOLOCK)
    ROW_NUMBER () 与 PARTITION组合拳
    sql脚本的格式
    存储过程
    动态sql
    尽量不要用select into 复制表
    杂谈
  • 原文地址:https://www.cnblogs.com/qq8260573/p/10834158.html
Copyright © 2011-2022 走看看