题意:求[a,b]区间内的数字中正序对的个数。

具体思路参考:

https://blog.csdn.net/weixin_43135318/article/details/88061396

https://www.cnblogs.com/asdfsag/p/11278519.html

在此基础上维护一下每个状态中大于每个数字的数字出现的次数即可。

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=;
ll bit[N],nbit,f[N][][],g[N][][][N],G[N][][],vis[N][][],ka,a,b,ka2;
void dfs(ll u,ll ze,ll lim) {
if(vis[u][ze][lim]==ka)return;
vis[u][ze][lim]=ka;
G[u][ze][lim]=;
for(ll i=; i<=; ++i)g[u][ze][lim][i]=;
if(u==) {f[u][ze][lim]=; return;}
f[u][ze][lim]=;
for(ll i=; i<=(lim?bit[u]:); ++i) {
ll v=u-,ze2=ze&&i==,lim2=lim&&i==bit[u];
dfs(v,ze2,lim2);
f[u][ze][lim]+=f[v][ze2][lim2];
for(ll j=; j<=; ++j)g[u][ze][lim][j]+=g[v][ze2][lim2][j];
G[u][ze][lim]+=G[v][ze2][lim2];
if(!ze2) {
for(ll j=; j<=i; ++j)g[u][ze][lim][j]+=f[v][ze2][lim2];
G[u][ze][lim]+=g[v][ze2][lim2][i+];
}
}
}
ll solve(ll x) {
++ka;
for(nbit=; x; x/=)bit[++nbit]=x%;
dfs(nbit,,);
return G[nbit][][];
}
int main() {
ll T;
for(scanf("%lld",&T); T--;) {
scanf("%lld%lld",&a,&b);
printf("Case %lld: %lld\n",++ka2,solve(b)-solve(a-));
}
}

Gym - 102040B Counting Inversion (数位dp)的更多相关文章

  1. 『The Counting Problem 数位dp』

    The Counting Problem Description 求 [L,R]内每个数码出现的次数. Input Format 若干行,一行两个正整数 L 和 R. 最后一行 L=R=0,表示输入结 ...

  2. Codeforces Gym 100418J Lucky tickets 数位DP

    Lucky ticketsTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view ...

  3. UVA - 1640 The Counting Problem (数位dp)

    题意:统计l-r中每种数字出现的次数 很明显的数位dp问题,虽然有更简洁的做法但某人已经习惯了数位dp的风格所以还是选择扬长避短吧(说白了就是菜啊) 从高位向低位走,设状态$(u,lim,ze)$表示 ...

  4. POJ2282:The Counting Problem(数位DP)

    Description Given two integers a and b, we write the numbers between a and b, inclusive, in a list. ...

  5. Codeforces Gym 100231L Intervals 数位DP

    Intervals 题目连接: http://codeforces.com/gym/100231/attachments Description Start with an integer, N0, ...

  6. 数位DP GYM 100827 E Hill Number

    题目链接 题意:判断小于n的数字中,数位从高到低成上升再下降的趋势的数字的个数 分析:简单的数位DP,保存前一位的数字,注意临界点的处理,都是套路. #include <bits/stdc++. ...

  7. Codeforces Gym 100286F Problem F. Fibonacci System 数位DP

    Problem F. Fibonacci SystemTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudg ...

  8. 【Dream Counting, 2006 Dec-数数的梦】数位dp

    题意:给定两个数,问区间[A,B]中0~9分别出现了多少次.A,B<=10^18 题解:应该是最裸的数位dp吧..一开始没有记忆化tle了TAT 我们可以求出区间[0,B]的,再减去区间[0,A ...

  9. 【数位dp】【二分】Gym - 101411H - Hotel in Ves Lagos

    数位dp预处理之后,可以容易得到f(x),代表小于等于x的数中,有多少个不含13的.然后就能二分答案啦. #include<cstdio> #include<iostream> ...

随机推荐

  1. 使用Nginx压缩文件、设置反向代理缓存提高响应速度

    Gzip压缩: 最开始,这个竟然要6m多(大到不寻常),响应的速度3分多钟. 所以先对返回的文件进行gzip压缩.判断返回的资源是否有使用gzip压缩,观察响应头部里面,如果没有 Content-En ...

  2. 山东省第十届ACM省赛参赛后的学期总结

    5.11,5.12两天的济南之旅结束了,我也参加了人生中第一次正式的acm比赛,虽然是以友情队的身份,但是我依旧十分兴奋. 其实一直想写博客来增加自己的能力的,但是一直拖到现在,正赶上老师要求写一份总 ...

  3. 华为HCNA乱学Round 12:NAT和easy IP

  4. Python globals()和locals()比较

    Python的两个内置函数,globals()和locals() ,它们提供了基于字典的访问局部和全局变量的方式. globals()是可写的,即,可修改该字典中的键值,可新增和删除键值对. 而loc ...

  5. Tableau常用图表

    条形图: 饼图: 调整大小: 折线图: 面积图: 组合图: 文本表: 突出显示表: 直方图: 气泡图: 散点图:

  6. jenkins和gitlab备份

    #把/opt目录拷贝到10.0.0.31的/tmp下. rsync  -avz  /opt  root@10.0.0.31:/tmp/ pull: rsync -avz root@10.0.0.31: ...

  7. 使用Themleaf 模板引擎手动生成html文件

    1.为什么要写这一篇呢? 在做一个邮件发送功能的时候,需要发送html邮件,javaMail 发送html 的时候需要有已经生成的html正文,所以需要提前将要发送的内容生成,所以就需要模板引擎来动态 ...

  8. python 求从1加到100的和,join的用法

    li=[] def func3(x): li.append(str(x)) if x==1: return 1 return x+func3(x-1) # print(func3(100)) re=f ...

  9. 四则运算计算器的微信小程序_2 运算

    js文件: function isOperator(value) {   var operatorString = '+-*/()×÷';   return operatorString.indexO ...

  10. mybatis-sql执行流程源码分析

    1. SqlSessionFactory 与 SqlSession. 通过前面的章节对于mybatis 的介绍及使用,大家都能体会到SqlSession的重要性了吧, 没错,从表面上来看,咱们都是通过 ...