2020 年百度之星·程序设计大赛 初赛一

一如既往地菜...

a.

 

b.

 

 

 

 

#include <bits/stdc++.h>

using namespace std;

double point[105];
double dp[5][405];

int main(){
    /*
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    */

    memset(dp,0,sizeof(dp));
    for(int i=0;i<=100;i++){
        if(i>=0&&i<=59) point[i]=0.0;
        if(i>=60&&i<=61) point[i]=1.0;
        if(i>=62&&i<=64) point[i]=1.7;
        if(i>=65&&i<=66) point[i]=2.0;
        if(i>=67&&i<=69) point[i]=2.3;
        if(i>=70&&i<=74) point[i]=2.7;
        if(i>=75&&i<=79) point[i]=3.0;
        if(i>=80&&i<=84) point[i]=3.3;
        if(i>=85&&i<=89) point[i]=3.7;
        if(i>=90&&i<=94) point[i]=4.0;
        if(i>=95&&i<=100) point[i]=4.3;
    }
    for(int j=1;j<=4;j++){
        for(int i=0;i<=100*j;i++){
            for(int k=0;k<=min(i,100);k++){
                dp[j][i]=max(dp[j][i],dp[j-1][i-k]+point[k]);
            }
        }
    }

    int t,x;
    cin>>t;
    while(t--){
        cin>>x;
        printf("%.1f\n",dp[4][x]);
    }
    return 0;
}
View Code

c.

 

 

 

 

 

#include <bits/stdc++.h>

using namespace std;

int dp[1005][1005];

bool huzhi(int j,int k){
    int r=j%k;
    while(r){
        j=k;
        k=r;
        r=j%k;
    }
    if(k==1){
        return true;
    }else{
        return false;
    }
}


int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int t;
    int a,b;

    for(int j=1;j<=1000;j++){
        dp[j][1]=j;
    }
    for(int j=1;j<=1000;j++){
        dp[1][j]=j;
    }

    for(int j=2;j<=1000;j++){
        for(int k=2;k<=1000;k++){
            if(huzhi(j,k)){
                dp[j][k]=max(dp[j-1][k],dp[j][k-1])+1;
            }else{
                dp[j][k]=max(dp[j-1][k],dp[j][k-1]);
            }

        }
    }


    cin>>t;
    for(int i=0;i<t;i++){
        cin>>a>>b;
        cout<<dp[a][b]<<endl;
    }



    return 0;
}
View Code

 

posted @ 2020-07-19 17:16  多一份不为什么的坚持  阅读(470)  评论(0编辑  收藏  举报