栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

思特奇杯·云上蓝桥-算法集训营】第三周

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

思特奇杯·云上蓝桥-算法集训营】第三周

1.杨辉三角

#include
using namespace std;
int N;
long long C(int n,int m){
    long long t=1;
    for(int i=0;i         t = t*(n-i)/(i+1);
        if(t>N)return t;
    }
    return t;
}                   
bool find(int L,int R,int x){   
    long long ans=0,M=0;
    while(R>=L){
        int T = (R+L)>>1; 
        ans = C(T,x);
        if(ans<=N)M=T,L=T+1;
        else R = T-1;
    }
    if(C(M,x)==N){
        cout << (1+M)*M/2 + x+1;
        return true;
    }
    return false;
}
 
int main(){
    cin>>N;
    if(N==1)cout<<1;
    else for(int i=17;i>0;i--)if(find(i*2,N,i))break;
    return 0;
}

2.节点选择


#include
using namespace std;
const int M = 100;    
int max(int x,int y){return x int n,a[M+5],p[M+5];    
int son[M+5][M+5];  
bool bo[M+5];    
int find(int x,bool can){   
    if(!p[x])return can?a[x]:0;   
    int ans=0;
    for(int i=0;i     if(can){
        int t = a[x];
        for(int i=0;i         ans = max(ans,t);
    }
    return ans;
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++)cin>>a[i];
    for(int i=1;i         int t1,t2;
        cin>>t1>>t2;
        son[t1][p[t1]++] = t2;
    }
    cout << find(1,true);    
    return 0;
}

3.耐摔指数

#include 
using namespace std;
int dp[2][10001];
int main(){
    int n;
    cin>>n;
    int i=0;
    while(dp[1][i]         i++;
        dp[0][i]=dp[0][i-1]+i;
        dp[1][i]=dp[1][i-1]+dp[0][i-1]+1;
    }
    cout<< i <     return 0;
}
 

4.k好数

#include
using namespace std;
const long long MOL = 1000000007;
const int M = 105;
long long K,L,dp[2][M+5],sum[2];
int main(){
    cin>>K>>L;    dp[i][j]=sum(dp[i-1])-dp[i-1][j-1]-dp[i-1][j+1],
    
    for(int i=1;i     sum[1] = K-1;
    
    for(int i=2;i<=L;i++){
        sum[i&1] = 0;
        for(int j=0;j             dp[i&1][j] = sum[i&1^1];
            if(j!=0)dp[i&1][j]-=dp[i&1^1][j-1];
            dp[i&1][j]-=dp[i&1^1][j+1];
            if(dp[i&1][j]<0)dp[i&1][j]+=MOL;
            if(dp[i&1][j]<0)dp[i&1][j]+=MOL;
            
            sum[i&1] = (sum[i&1]+dp[i&1][j])%MOL;
        }
    }
    cout << sum[L&1];
    return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/717159.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号