2024牛客寒假算法基础集训营1 补题

2024牛客寒假算法基础集训营1 补题

F-鸡数题!

F-鸡数题!_2024牛客寒假算法基础集训营1 (nowcoder.com)

1、对于任意的iai>0

2、对于任意的整数1im1ai<ai+1

3、a1a2...am1am=2n1(之中|为按位或操作);

4、对于任意的ij,满足ai&aj=0(之中&为按位与操作)。

实际上就是把n个1放入m个数中,第二类斯特林数,不过这题数据范围比较大,需要使用容斥求法计算斯特林数

公式为S(n,k)=Σi=0k(1)i(ki)(ki)n

AC代码如下:

#include<bits/stdc++.h>
using namespace std;
#define INF 0x3f3f3f3f
#define int long long
using ull = unsigned long long;                                                                           
using ll = long long;
using i128 = __int128_t;
using pii = pair<int,int>;
using psi = pair<string,int>;
constexpr ll MOD = 1e9+7;
//-------------------------------------------------------->>>>>>>>>>
const int mod = 1e9+7;
const int N = 1e6+100;
int fac[N+2],invfac[N+2];
int qpow(int a,int b,int mod){
    int res=1;while(b){if(b&1){res=res*a%mod;}a=a*a%mod;b>>=1;}return res;
}
int inv(int x){return qpow(x,mod-2,mod);}
void init(int n){
    fac[0] = 1;for (int i = 1; i <= n; ++i) fac[i] = fac[i - 1] * i % mod;
    invfac[n] = inv(fac[n]);for (int i = n - 1; i >= 0; --i) invfac[i] = (invfac[i + 1] * (i + 1)) % mod;   
}
int C(int n,int m){
    if (n < m || m < 0) return 0;return fac[n]*invfac[m]%mod*invfac[n-m]%mod;
}
int S(int n,int k){
    int ans=0;
    for(int i=0;i<=k;i++){
        ans=(ans+mod)%mod;
        ans=(ans+(i%2?-1:1)*C(k,i)%mod*qpow(k-i,n,mod)%mod)%mod;
    }  
    ans=ans*invfac[k]%mod;
    return ans;
}
inline void solve(){
    int n,k;
    cin>>n>>k;
    cout<<S(n,k)<<"\n";
}
inline void prework(){
    init(1e5+10);
}
signed main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);cout.tie(nullptr);
    cout<<fixed<<setprecision(12);
    prework();
    int T=1; 
    // cin>>T;
    while(T--){
        solve();
    }
    return 0;
}

I-It's bertrand paradox. Again!

I-It's bertrand paradox. Again!_2024牛客寒假算法基础集训营1 (nowcoder.com)

随机数题,先模拟题目方法打表,以Σ1nrn为系数,发现第一种方法的系数均为17左右,第二种均为25左右,所以我们直接以18为分界点进行判断即可

AC代码如下:

#include<bits/stdc++.h>
using namespace std;
#define INF 0x3f3f3f3f
#define int long long
using ull = unsigned long long;                                                                             
using ll = long long;
using i128 = __int128_t;
using pii = pair<int,int>;
using psi = pair<string,int>;
constexpr ll MOD = 1e9+7;
//-------------------------------------------------------->>>>>>>>>>
void rando(){//打表部分
    mt19937_64 mt{random_device()()};
    uniform_int_distribution<int> uidx(-99, 99);
    uniform_int_distribution<int> uidr(1, 100);
    auto bit = [&]() {
        vector<tuple<int, int, int>> t;
        for (int i = 0; i < 100000; i += 1) {
            int x = uidx(mt), y = uidx(mt), r = uidr(mt);
            while (r <= 0 or abs(x + r) > 100 or abs(x - r) > 100 or abs(y + r) > 100 or abs(y - r) > 100) {
                r = uidr(mt);
            }
            t.emplace_back(make_tuple(x, y, r));
        }
        return t;
    };
    auto bit1 = [&]() {
        vector<tuple<int, int, int>> t;
        for (int i = 0; i < 100000; i += 1) {
            int x = uidx(mt), y = uidx(mt), r = uidr(mt);
            while (r <= 0 or abs(x + r) > 100 or abs(x - r) > 100 or abs(y + r) > 100 or abs(y - r) > 100) {
                x = uidx(mt), y = uidx(mt), r = uidr(mt);
            }
            t.emplace_back(make_tuple(x, y, r));
        }
        return t;
    };
    for(int i=0;i<20;i++){
        auto res=bit();
        auto res1=bit1();
        int ans=0;
        int ans1=0;
        for(auto [x,y,r]:res){
            ans+=r;
        }
        for(auto [x,y,r]:res1){
            ans1+=r;
        }
        cout<<ans/res.size()<<"\n";
        cout<<ans1/res1.size()<<"\n";
        cout<<"\n";
    }
}
inline void solve(){
    int n;
    cin>>n;
    int sum=0;
    for(int i=0;i<n;i++){
        int x,y,r;
        cin>>x>>y>>r;
        sum+=r;
    }
    sum/=n;
    if(sum<18){
        cout<<"bit-noob\n";
    }else{
        cout<<"buaa-noob\n";
    }
}
inline void prework(){}
signed main(){
    // rando();
    int T=1;
    // cin>>T;
    while(T--){
        solve();
    }
    return 0;
}
posted @   KrowFeather  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示