牛客编程巅峰赛S1第3场 - 青铜&白银( A dp 做法 B 暴力 C 二分 or 优先队列)

题目链接

A-位数求和

题目描述

牛牛想知道所有的长度为n的数中,各个位上的数字之和为m的这些数的和是多少呢。给定n和m,求这些数的和。

做法1:n比较小  直接暴力dfs

做法 dp做法

dp[i][j][k] 代表第i位 填数字j  每位的和为k 时  数的和。很绕。我这里贴的是带main函数的,需要的  直接复制那个函数才可以提交AC

#include<bits/stdc++.h>
using namespace std;
//dp[i][j][k] 第i位为j  每位和为k  的所有数 之和
long long sum(int n, int m) {
        // write code here
    long long dp[n+10][10][m+10];
    int f[n+10][10][m+10];
    memset(dp,0,sizeof(dp));
    memset(f,0,sizeof(f));
    f[0][0][0]=1;

    int base=1;
    for(int i=1;i<=n;++i){

        for(int j=0;j<=9;++j){
            for(int k=0;k<=9;++k){
                for(int s=0;s+j<=m;++s){
                    if(!f[i-1][k][s]) continue;
                    dp[i][j][s+j]+=dp[i-1][k][s]+j*base*f[i-1][k][s];
                    f[i][j][s+j] += f[i-1][k][s];
                }
            }
        }
        base=base*10;
    }
    long long ans = 0;

    for(int j = 0; j <= 9; ++j)
    if(f[n][j][m])
    {
        ans += dp[n][j][m] - dp[n-1][j][m];//去掉前导零
    }

    return ans;
}



int main()
{
    int n, m;
    scanf("%d%d", &n, &m);
    cout<<sum(n,m)<<endl;
}

B-不可思议

做法:做法果然很不可思议。我说这能做?结果一看标程  暴力往上跑即可??原理啥的不懂,这居然能不超时,个人猜测题目给的造树代码 树高是log级别的所以才可以暴力做

C-牛牛晾衣服

扫描二维码关注公众号,回复: 11413210 查看本文章

wa到自闭,这题意 是  烘干机每分钟可以吹k-1滴水  加上自然干 1滴水。我服了,我以为用烘干机 就不存每分钟干一滴水。。。

简单的二分题。

class Solution {
public:
    /**
     * 计算最少要多少时间可以把所有的衣服全烘干
     * @param n int整型 n件衣服
     * @param a int整型vector n件衣服所含水量数组
     * @param k int整型 烘干机1分钟可以烘干的水量
     * @return int整型
     */
   int check(vector<int>a,int mid,int k)
{
    int now = 0;
    for(int i = 0; i < a.size(); ++i){
        if(a[i] <= mid) continue;
        int hua = (a[i]-mid)/(k-1);
        if((a[i]-mid)%(k-1)) hua++;
        now+=hua;
    }
    return now <= mid;
}
int solve(int n, vector<int>& a, int k) {
    // write code here
    int l = 1, r = 1e9, ans = 1e9;
    //sort(a.begin(),a.end());
 
    while(l <= r){
        int mid = l + r >> 1;
        if(check(a,mid,k)) ans=mid,r=mid-1;
        else l=mid+1;
    }
    return ans;
}
};

猜你喜欢

转载自blog.csdn.net/qq_41286356/article/details/107397990