UOJ275组合数问题

流媒体之LL-HLS 低延时HLS协议 LL-HLS协议通过扩展了HLS协议,为实时直播场景提供了更丰富的功能,如延迟控制、播放列表增量更新、阻止播放列表重新加载等。同时客户端可以更灵活地控制播放列表的加载和播放,以适应各种场景和需求。LL-HLS在直播中的延时可以控制在3s内, 但是即使这样, 还是不如RTMP, RTSP等协议的实时性。 阅读详情

一道数位DP题,仔细看题分析一下就知道是求什么。
数位DP的新套路,可以将lim也记录进答案保证复杂度

#include <bits/stdc++.h>
using namespace std;

#define int long long

const int mod = 1e9 + 7;
const int N = 222;
const int CMAX = 1e5 + 5;

int t , m , n , dp[222][2][2] , A[N] , B[N] , k , ln , lm;
int T[100005];

int Div(int x , int k) {
    int now = 0;
    while(x % k == 0) x /= k , ++ now;
    return now;
}

void init(void) {
    T[0] = 0;
    for(int i = 1;i < 100005;++ i) {
        T[i] = T[i - 1] + Div(i , k);
    }
}

int convert(int x , int *A) {
    int len = 0;
    while(x) {
        A[++ len] = x % k;
        x /= k;
    }
    return len;
}

int dfs(int pos , int l1 , int l2) {
    if(!pos) return 1;
    if(dp[pos][l1][l2] != -1) return dp[pos][l1][l2];
    int res = 0 , up = (l1) ? A[pos] : (k - 1);
    for(int i = 0;i <= up;++ i) {
        if(!l2 || (l2 && B[pos] > i)) {
            res = (res + (i + 1) % mod * dfs(pos - 1 , (l1 && (i == up)) , 0) % mod) % mod;
            continue;
        }
        int up2 = B[pos];
        res = (res + (B[pos]) * dfs(pos - 1 , (l1 && (i == up)) , 0) % mod) % mod;
        res = (res + dfs(pos - 1 , (l1 && (i == up)) , 1) % mod) % mod;
    }
    dp[pos][l1][l2] = res;
    return res;
}

int baoli(int n , int m) {
    int ans = 0;
    for(int i = 0;i <= n;++ i) {
        for(int j = 0;j <= min(i , m);++ j) {
            if(T[i] - T[j] - T[i - j] == 0) continue;
            ++ ans;
        }
    }
    return ans % mod;
}

const int inv2 = mod / 2 + 1;

void dance(void) {
    scanf("%lld%lld" , &n , &m);
    memset(A , 0 , sizeof(A)); memset(B , 0 , sizeof(B));
    memset(dp , -1 , sizeof(dp));
    ln = convert(n , A); lm = convert(m , B);
//  cerr << ln << endl;
    long long ans = dfs(ln , 1 , (m < n));
    long long res = 0;
    if(n <= m) n %= mod , res = (n + 2) % mod * ((n + 1) % mod) % mod * inv2 % mod;
    else {
        n %= mod , m %= mod;
        res = (m + 2) % mod * (m + 1) % mod * inv2 % mod + (n - m + mod) % mod * (m + 1) % mod;
        res %= mod;
    }
    cout << (res - ans + mod) % mod << endl;
}

main(void) {
    scanf("%lld%lld" , &t , &k);
    while(t --) {
        dance();
    }
}
2026年数字IC设计紫光展锐笔试带答案解析 本文是一份数字IC设计工程师/芯片验证工程师的笔试样题,包含单选题和多选题两部分。单选题共20题(每题2分),涵盖数字电路、C++/Verilog编程、芯片设计基础等内容,例如D/A转换计算、面向对象编程特性、三极管工作区域、Verilog仿真时间格式等。多选题15题(每题2分),考察Hold违例修复方法、验证方法学等知识点。试卷总分100分,考试时长90分钟,题型设计兼顾基础理论与工程实践,重点测试应聘者对芯片设计核心概念和工具链的掌握程度。部分题目解析详细说明了计算过程或概念原理,如第1题通过二进制转换 阅读详情

相关推荐

Xilinx DMA IP核心配置与实战解析

本文介绍了Xilinx DMA IP核在直接寄存器模式下的配置与工作流程。DMA通过AXI4-Lite接口接收指令,实现内存与数据流之间的高速传输,无需CPU介入。文章详细说明了开发环境配置、IP参数设置(包括地址位宽、数据宽度等关键参数)以及寄存器操作流程。通过仿真分析,展示了读操作中AXI4接口的突发传输机制,包括地址、长度和突发大小的配置。文中还提供了寄存器地址映射表、信号定义等关键信息,为DMA IP核的应用开发提供了实用参考。

weixin_37688766的博客 883

[UOJ#404][CTSC2018]组合数问题(79分,提交答案题,模拟退火+匈牙利+DP)

1、4、5、6、10都是op=1的点,除4外直接通过模拟退火调参可以全部通过。 1 #include<cmath> 2 #include<ctime> 3 #include<cstdio> 4 #include<cstdlib> 5 #include<algorithm> 6 #define re...

weixin_30338497的博客 396

从零搭建IoT数据中台:STM32+WebSocket实现边缘设备与Web端实时双向通信

本文详细介绍了如何从零搭建基于STM32和WebSocket协议的IoT数据中台,实现边缘设备与Web端的实时双向通信。通过硬件选型、协议设计、服务器搭建及安全优化,提供了一套低延迟、高并发的企业级解决方案,适用于智能农业和工业监控等场景。

tea88的博客 748

define int long long解释

对于题目给定的数据范围,有必要选择一种合理的数据类型来高效处理问题 long long的范围大概是10^18,int的范围大概是1e9+ 1.#define int long long ,main函数要改成有符号型 signed main() 2.long long 不仅费空间,还容易超时 3.变量类型为 long long,也可以用 typedef long long ll(直接用ll代替long long的定义) 举例: #include<bits/stdc++.h> using names

qq_50883182的博客 1万+

UVM(5)-TLM通信

TLM是一种基于事务 (transaction) 的通信方式,通常在高抽象级语言例如SystemC或者SV/UVM中作为模块之间的通讯方式。

2301_76431006的博客 2105

使用Jacob实现将Word文件转换为Pdf文件

如果是首次使用 jacob,建议先直接从 github上下载 zip包,因为在实现Word转Pdf的时候,不仅需要用到 jacob.jar,还需要 jacob.dll 库,而zip包中都有。官方使用文档可以参考:https://github.com/freemansoft/jacob-project/blob/main/docs/UsingJacob.md。// 如果安装的是微软的 Office,需要使用 Word.Application。

qq_41672950的博客 750

#define int long long

功能:把所有的int替换成long long。

willem248的博客 2845

Ubuntu下NVIDIA驱动安装全攻略:从报错到完美运行nvidia-smi的完整流程

本文提供了在Ubuntu系统中安装NVIDIA驱动的完整解决方案,重点解决因驱动版本冲突、内核模块未加载或Secure Boot安全启动导致的`nvidia-smi`报错问题。通过彻底清理旧驱动、处理Secure Boot、选择兼容版本并正确安装,最终确保驱动完美运行。

weixin_29196891的博客 364

AcWing 788. 逆序对的数量

题目描述 给定一个长度为n的整数数列,请你计算数列中的逆序对的数量。 逆序对的定义如下:对于数列的第 i 个和第 j 个元素,如果满 i < j 且 a[i] > a[j],则其为一个逆序对;否则不是。 输入格式 第一行包含整数n,表示数列的长度。 第二行包含 n 个整数,表示整个数列。 输出格式 输出一个整数,表示逆序对的个数。 数据范围 1≤n≤100000 输入样例: 6 2 3 4 5 6 1 输出样例: 5 解题报告 题意理解 这道题目就是让我们求解一个数组

m0_57006708的博客 367

从 Classic ABAP 到 ABAP Cloud:一份面向开发者的 SAP 学习路线图与实战指南

ABAP技术演进路线:从语法到架构思维 本文系统梳理了现代ABAP开发者的能力成长路径。在S/4HANA与云时代,ABAP已从传统过程式语言转变为支持面向对象、测试驱动和云原生开发的现代技术栈。学习路线应围绕四大核心维度展开:1) 语言基础(ABAP OO/Modern ABAP);2) 工程化实践(ABAP Unit/ATC/Clean ABAP);3) 数据建模(CDS/AMDP);4) 服务化架构(Gateway/OData/Fiori)。文章强调以交付形态倒推技术栈,通过真实案例展示了如何将零散技术

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 360

华为OD机试 - 机器人活动区域(Python/JS/C/C++ 双机位C卷 200分)

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。现有一个机器人,可放置于 M × N的网格中任意位置,每个网格包含一个非负整数编号。当相邻网格的数字编号差值的绝对值小于等于 1 时,机器人可在网格间移动问题:求机器人可活动的最大范围对应的网格点数目。说明:1)网格左上角坐标为 (0, 0),右

学Java,找哪吒 1431

【算法练习】打表问题,补充了打表,map头文件的用法和#define int long long

一、何时能用打表 当题目中的问题的情况都能够列举出来的时候,就可以通过打表的方式,把所有结果都列出来,存在一个数组中,或者以一个数组的下标表示是否存在这个值 二、打表的方法 ①根据题目的要求把各个情况枚举出来 ②将代码结果存在一个数组中,数组的下标表示结果存在,然后值为1 三、打表例题 ①解题思路 先从2开始枚举出2的一次方到2的n次方的值,如果它小于等于100000,则对应数组下标的值就,然后就开始枚举3,4,5……,一直到100000(+5)就好了 ②代码 #include <iostream&

Warddamn的博客 1733

【考试大纲】中级多媒体应用设计师考试大纲

中级多媒体应用设计师考试大纲

邓邓子的博客 382

UOJ 275. 【清华集训2016】组合数问题

UOJ 275. 【清华集训2016】组合数问题 组合数 $C_n^m $表示的是从 \(n\) 个物品中选出 \(m\) 个物品的方案数。举个例子,从$ (1,2,3)(1,2,3)$ 三个物品中选择两个物品可以有 \((1,2),(1,3),(2,3)\) 这三种选择方法。根据组合数的定义,我们可以给出计算组合数$ C_m^n$的一般公式: \[ C_n^m=\frac{n!}{m!(n-m)...

weixin_34060299的博客 387

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

UOJ #275: 组合数问题 题解

非常好的题目,感觉这个lucas的应用算是常见套路了吧 题目要求CMN≡0(modk)CNM≡0(modk)C_N^M\equiv0(modk),因为k是质数,所以根据Lucas定理,CM/kN/k∗CMmodkNmodk≡0(modk)CN/kM/k∗CNmodkMmodk≡0(modk)C_{N/k}^{M/k}*C_{Nmodk}^{Mmodk}\equiv 0(modk) 我们发现这个...

IcePrincess_1968's World 769

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

uoj275. 【清华集训2016】组合数问题

智力孤危。。 这道题可以根据lucas定理,把C(n,m)是k的倍数转换为n,m的k进制数,某一位的组合数是k的倍数,也就是n,m在k进制表示下n有一位比k小(大)。这样子的话就转换为一个数位DP,就能做了。 题解貌似就把lucas推了一遍,嗯,差不多 #include #include #define ll long long #define P 1000000007 #define I2

miaom的博客 1562

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

UOJ275 组合数问题

给定n,m和k,求有多少对(i , j)满足0 ≤ i ≤ n, 0 ≤ j ≤ min(i ,m)且C(︀i,j)︀是k的倍数.n,m ≤ 1018, k ≤ 100,且k是质数. 把i和j都看成k进制数,事实上这个问题就是问有多少对j ≤ i满足j有一位比i大. 转化成数位DP 对每一位进行转移 bool判断是否当前位n<=a[i],m<=b[i] By:大奕哥 ...

weixin_30814319的博客 225

UOJ275[清华集训2016]组合数问题

#275. 【清华集训2016】组合数问题 组合数 CmnCnmC_n^m 表示的是从 nnn 个物品中选出 mmm 个物品的方案数。举个例子,从 (1,2,3)(1,2,3)(1,2,3) 三个物品中选择两个物品可以有 (1,2),(1,3),(2,3)(1,2),(1,3),(2,3)(1,2),(1,3),(2,3) 这三种选择方法。根据组合数的定义,我们可...

Ephemeral 1013

UOJ275 [清华集训2016] 组合数问题 【Lucas定理】【数位DP】

题目分析: 我记得很久以前有人跟我说NOIP2016的题目出了加强版在清华集训中,但这似乎是一道无关的题目? 由于$k$为素数,那么$lucas$定理就可以搬上台面了。 注意到$\binom{i}{j} \equiv 0 {\mod k}$当且仅当将$i$和$j$用$k$进制表示的时候,有一位上的$i<j$。 位数上的计算用数位DP就没错了。 代码: 1 #inclu...

weixin_30517001的博客 188

[UOJ 275/BZOJ4737] 【清华集训2016】组合数问题 (LUCAS定理的运用+数位DP)

题面 传送门:UOJ Solution 这题的数位DP好蛋疼啊qwq 好吧,我们说回正题。 首先,我们先回忆一下LUCAS定理: \(C_n^m \equiv C_{n/p}^{m/p} \times C_{n\%p}^{m\%p} (\%p)\) 我们仔细观察这个定理,就可以发现一个事实:LUCAS定理本质上是在对n,m两个数做K进制下的数位分离 所以说,LUCAS定理我们可以这样表示: \(...

weixin_30268921的博客 208

【UOJ#275】组合数问题(卢卡斯定理,动态规划)

【UOJ#275】组合数问题(卢卡斯定理,动态规划) 题面 UOJ 题解 数据范围很大,并且涉及的是求值,没法用矩阵乘法考虑。 发现\(k\)的限制是,\(k\)是一个质数,那么在大组合数模小质数的情况下可以考虑使用卢卡斯定理。 卢卡斯定理写出来是\(Lucas(n,m)=Lucas(n/K,m/K)*Lucas(n\%K,m\%K)\) 显然只要有任何一个\(Lucas(n\%K,m\%K)=C...

weixin_30362233的博客 165

[UOJ#275]【清华集训2016】组合数问题

[UOJ#275]【清华集训2016】组合数问题 试题描述 组合数 \(C_n^m\) 表示的是从 \(n\) 个物品中选出 \(m\) 个物品的方案数。举个例子,从 \((1,2,3)\) 三个物品中选择两个物品可以有 \((1,2),(1,3),(2,3)\) 这三种选择方法。根据组合数的定义,我们可以给出计算组合数 \(C_n^m\) 的一般公式: \begin{equation} C_n^...

weixin_30699955的博客 205

【NOIP 2016】 组合数问题 解题报告

day2 T1暴力打残只得了20分,出考场才知道是个杨辉三角,悔恨莫及。 组合数公式Cij=s[i−1][j−1]+s[i−1][j]C^i_j=s[i-1][j-1]+s[i-1][j],这个应该不难理解,2000*2000的暴力算一下就可以了,然后二维前缀和维护,注意,杨辉三角不是矩形,当计算sum[i][i]时,会用到sum[i-1][i],而在杨辉三角中没有列比行打的情况,所以在计算的时候

Mario__SZ的博客 554

Jzoj4906 组合数问题

题意:noip2016d2t1 我们考虑将每个数字质因数分解来做即可 线性筛求出所有2000以内的质数让后直接暴力分解即可,计算C(i,j)是否为k的倍数,最后加上前缀和 #include #include int w[500],c=0,n,m,t,k,pr[2010]={0}; int l[2010],f[2010][10][2]; int s[2010][2010],S[2010][

扩展の灰(Extended Ash/Cooevjnz) 371

UOJ#275. 【清华集训2016】组合数问题 数位dp

原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ275.html 题解 用卢卡斯定理转化成一个 k 进制意义下的数位 dp 即可。 算答案的时候补集转化一下会好写一些。 代码 #include <bits/stdc++.h> using namespace std; typedef long long LL; LL rea...

weixin_30412167的博客 167

mysql配置域名访问_修改Host,配置域名访问

Activity中获取view的高度和宽度为0的原因以及解决方案在activity中可以调用View.getWidth.View.getHeight().View.getMeasuredWidth() .View.getgetMeasuredHeight()来获得 ...C&num; 版本的 计时器类:精确到微秒 秒后保留一位小数 支持年月日时分秒带单位的输出class TimeCount...

weixin_35900054的博客 2645
上一篇: UOJ Ernd
下一篇: 挑战NPC 一般图最大匹配
Timsei
博客等级 码龄10年 344粉丝 159原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值