首页 > 其他分享 >2022杭电多校杂补

2022杭电多校杂补

时间:2022-10-27 18:33:40浏览次数:69  
标签:pre 杭电多校 杂补 int ll dfs 2022 ans mod

第七场

F. Sumire

思路

  • 记录状态 \(dp_{rem,pre}\) 剩余 \(rem\) 位,前面有 \(pre\) 个数位 d。
  • 转移的时候不能枚举 B 个数,发现只有数位 = d 的时候对 pre 有更新,所以直接讨论就好了。
#include<bits/stdc++.h>
typedef long long ll;
typedef unsigned long long ull;
typedef std::pair<int, int> PII;
typedef std::pair<ll, ll> PLL;
typedef double db;
#define re _read
#define ALL(x) (x).begin(),(x).end()
#define SZ(v) ((int)v.size())
#define fi first
#define se second
#define pb push_back
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define endl "\n"
using namespace std;
mt19937 mrand(random_device{}()); 
int rnd(int x) { return mrand() % x;}
template<class T>
inline void _read(T& x) {
    static T ans;
    static unsigned int c;
    static bool p;
    for (c = getchar(); c != '-' && (c < '0' || c > '9'); c = getchar());
    if (c == '-') p = false, c = getchar(); else p = true;
    for (ans = 0; c <= '9' && c >= '0'; c = getchar()) ans = ans * 10 + c - '0';
    x = p ? ans : -ans;
}
/*----------------------------------------------------------------------------------------------------*/
const int mod = 1e9 + 7;

ll qmi(ll a, ll k, int mod) {
    ll res = 1;
    if (a == 0 && k == 0) return 0;
    while (k) {
            if (k & 1)
                    res = res * a % mod;
            a = a * a % mod;
            k >>= 1;
    }
    return res;
}

ll k, B, D, l, r;
ll dp[70][70];

ll dfs(int rem, int pre) {
    ll& ans = dp[rem][pre];
    if (ans != -1) return ans;
    ans = 0;
    if (!rem) return ans = qmi(pre, k, mod);
    ans = dfs(rem - 1, pre + 1) + (B - 1) * dfs(rem - 1, pre) % mod;
    if (ans >= mod) ans -= mod;
    return ans;
}

ll solve(ll x) {
    x ++;
    vector<int> d;
    while (x) {
        d.pb(x % B);
        x /= B;
    }
    reverse(ALL(d));
    int m = d.size();
    ll ans = 0;
    for (int i = 1; i < m; i++) {
        ans += (B - 2) * dfs(i - 1, 0) % mod;
        if (ans >= mod) ans -= mod;
        ans += dfs(i - 1, D != 0);
        if (ans >= mod) ans -= mod;
    }
    int pre = 0;
    for (int i = 0; i < m; i++) {
        if (i == 0) {
            if (!D) {
                ans += (d[i] - 1) * dfs(m - i - 1, pre) % mod;
            }
            else {
                if (d[i] > D) ans += (dfs(m - i - 1, pre + 1) + (d[i] - 2) * dfs(m - i - 1, pre) % mod) % mod;
                else ans += (d[i] - 1) * dfs(m - i - 1, pre) % mod;
            }
            if (ans >= mod) ans -= mod;
        }
        else {
            if (d[i] > D) ans += (dfs(m - i - 1, pre + 1) + (d[i] - 1) * dfs(m - i - 1, pre) % mod) % mod;
            else ans += d[i] * dfs(m - i - 1, pre) % mod;
            if (ans >= mod) ans -= mod;
        }
        if (d[i] == D) pre++;
    }
    return ans;
}

int main() {
    int T;
    re(T);
    while (T--) {
        memset(dp, -1, sizeof dp);
        re(k), re(B), re(D), re(l), re(r);
        printf("%lld\n", (solve(r) - solve(l - 1) + mod) % mod);
    }
    return 0;
}

标签:pre,杭电多校,杂补,int,ll,dfs,2022,ans,mod
From: https://www.cnblogs.com/Roshin/p/HDU2022.html

相关文章

  • 2022NOIPA层联测16
    数塔:相等上传非常显然,重点是怎么二分(对于这种不知道更大的更优还是更小的更优的题,不知道选哪个二分模板。。)大于等于和小于等于都可以,重要的是取等,就是保证答案在二分......
  • 2022-10-27 关于uniapp小程序使用echarts-for-weixin过程中,初始化图表this.selectComp
    前言:wepy小程序项目转uniapp小程序,在做图表的业务时,出现了如题目所言的问题。原因:编译后的xxx.json文件中的usingComponents没有引入你的echarts-for-weixin组件。原因排......
  • 99、cracer第4集-Linux基础——2022年10月25日16:30:14
    2022年5月30日15:56:25重要内容清除linux密码——在开机时输入命令命令清屏——ctrl+U/K/Lfind命令——find/-namere*conf1、2、磁盘分区3、密码破解4......
  • 2022.10.27每日一题
    DaimayuanOnlineJudge-跳跳题目描述平面上给定了一些整点(横纵坐标均为整数的点),被称为“魔法阵”。魔法少女派派想要在各魔法阵之间传送,每一次传送,她将使用下面的方式:......
  • 安全周报2022-10-20
    PleaseSubscribeWechatOfficialAccount:信安科研人,获取更多的原创安全资讯每周新闻CISA通告ADVANTECH和日立工业电器的存在严重缺陷美国网络安全和基础设施安全局(CIS......
  • 以商业视角解析数据驱动,神策 2022 数据驱动大会发布全新数字化闭环产品方案
    10月26日,神策2022数据驱动大会在北京丽亭华苑酒店举办。大会以“用科学重塑营销”为主题,商业模式创新领域知名作家亚历山大·奥斯特瓦德(AlexanderOsterwalder)、神策数......
  • 2022年10月27日
      人生中的很多路,都要自己去走,很多人都靠不住,凡事靠自己才能顺顺利利,勤勉才是真理!  毕淑敏说:生活就是泥沙俱下,鲜花与荆棘并存。  这一路走过来不容易,跌跌撞......
  • CSP-S2022 游寄
    前言:最后确实寄了,因为疫情,都没考成。\(8.26\)占坑。\(8.23\)参加浴谷月赛初赛模拟,报的\(S\)组,只有\(71\)分。\(8.25\)\(AK\)了同学出的比赛。\(8.26\)参加了......
  • CSP 2022 退役寄
    坐标SC。去年J组不错,不打了。本来说考完初赛晚上就开坑的,结果没来得及,拖到复赛前夕...9.10初赛线上了,本来希望延迟的,虽然很不现实。。。其实线上线下都一样,虽然还是......
  • 模板整理(2022.10)
    模板整理(2022.10)1.线性筛素数boolis_prime[100000005];//是否为素数intprime[100005],cnt;//素数数组,cnt:素数个数voidget_prime(intmaxn){ memset(is_prime,1......