cf 834 E. Ever-Hungry Krakozyabra(爆搜+数位dp)

题意:

定义一种inedible tail为一个数把每一位数字按不降的顺序排列后,去掉前导0组成的序列

比如57040 组成的就是457 54组成就是45 45组成的也是45

问区间\([L,R]\)内有多少种inedible tail

题解: 直接数位dp做,需要存状态,太大处理不了。

这个问题等价于\(x0+x1+x2+...x9=18\)的非负整数解

组合数学 插空法 \(18+9个1,选9个插空,其余变1就是解,C(18+9,9) \approx 4*10^{6}\)

所以可以暴力枚举出所有方案,然后快速判断这种方案在\([L,R]\)内是否合法

用类似数位dp的思想,用上下界来枚举每一位能取的数字,到到达某一位时即不在上界也不在下界,说明后面的数字可以随便取,那么一定取得出这种方案

由于只有在上界或者下界的时候递归才会继续往下走,所以最多走18次,线性复杂度判断

#include<bits/stdc++.h>
#define LL long long
#define P pair<int,int>
#define ls(i) seg[i].lc
#define rs(i) seg[i].rc
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define ls rt<<1
#define rs (rt<<1|1)
using namespace std;
int read(){
int x = 0;
char c = getchar();
while(c < '0' || c > '9') c = getchar();
while(c >= '0' && c <= '9') x = x * 10 + c - 48, c = getchar();
return x;
}
int pos,ans;
int a[20],b[20];
int cnt[10];///数字为i的个数
bool is(int pos,bool Lbound,bool Rbound){
if(pos == 0) return true;
if(!Lbound && !Rbound) return true;///不是上下界,后面的数字可以任意取一定存在合法的情况
int l = Lbound?a[pos]:0;
int r = Rbound?b[pos]:9;
if(l > r) return false;
for(int i = l;i <= r;i++){///枚举每一位能取的数字
if(cnt[i]){
cnt[i]--;
if(is(pos - 1,Lbound && i == l, Rbound && i == r)){
cnt[i]++;
return true;
}
cnt[i]++;
}
}
return false;
}
void dfs(int cur,int total){
if(cur == 9){
cnt[cur] = total;
ans += is(pos,1,1);
return ;
}
for(int i = 0;i <= total;i++){
cnt[cur] = i;
dfs(cur + 1, total - i);
}
}
int digit(int *d,LL x){
int pos = 0;
while(x){
d[++pos] = x % 10;
x /= 10;
}
return pos;
}
int main(){ LL L,R;
cin>>L>>R;
pos = digit(a,L);
pos = digit(b,R);
ans = 0;
dfs(0,pos);///暴力枚举所有的组合
cout<<ans<<endl;
return 0;
}

cf 834 E. Ever-Hungry Krakozyabra的更多相关文章

  1. 高斯分布与Gamma分布关系

    https://math.stackexchange.com/questions/1917647/proving-ex4-3%CF%834

  2. CF 327B. Hungry Sequence

    B. Hungry Sequence time limit per test 1 second memory limit per test 256 megabytes input standard i ...

  3. cf B. Hungry Sequence

    http://codeforces.com/contest/327/problem/B 这道题素数打表就行. #include <cstdio> #include <cstring& ...

  4. ORA-00494: enqueue [CF] held for too long (more than 900 seconds) by 'inst 1, osid 5166'

    凌晨收到同事电话,反馈应用程序访问Oracle数据库时报错,当时现场现象确认: 1. 应用程序访问不了数据库,使用SQL Developer测试发现访问不了数据库.报ORA-12570 TNS:pac ...

  5. cf之路,1,Codeforces Round #345 (Div. 2)

     cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅.....   ...

  6. cf Round 613

    A.Peter and Snow Blower(计算几何) 给定一个点和一个多边形,求出这个多边形绕这个点旋转一圈后形成的面积.保证这个点不在多边形内. 画个图能明白 这个图形是一个圆环,那么就是这个 ...

  7. ARC下OC对象和CF对象之间的桥接(bridge)

    在开发iOS应用程序时我们有时会用到Core Foundation对象简称CF,例如Core Graphics.Core Text,并且我们可能需要将CF对象和OC对象进行互相转化,我们知道,ARC环 ...

  8. [Recommendation System] 推荐系统之协同过滤(CF)算法详解和实现

    1 集体智慧和协同过滤 1.1 什么是集体智慧(社会计算)? 集体智慧 (Collective Intelligence) 并不是 Web2.0 时代特有的,只是在 Web2.0 时代,大家在 Web ...

  9. CF memsql Start[c]UP 2.0 A

    CF memsql Start[c]UP 2.0 A A. Golden System time limit per test 1 second memory limit per test 256 m ...

随机推荐

  1. 用MySQL的optimizer_trace进行sql调优

    在我们调优MySQL的SQL时候,通常使用三种工具进行查看sql执行的效率,explain.profile.optimizer_trace.前两个经常被人使用,由于第三个难度较大,大家使用的较少,下面 ...

  2. Dapper and Repository Pattern in MVC

    大家好,首先原谅我标题是英文的,因为我想不出好的中文标题. 这里我个人写了一个Dapper.net 的Repository模式的底层基础框架. 涉及内容: Dapper.net结合Repository ...

  3. css设置内容超出后显示省略号

    1.使用overflow: hidden把超出的内容进行隐藏: 2.然后使用white-space: nowrap设置内容不换行: 3.最后使用text-overflow: ellipsis设置超出内 ...

  4. 操作 Java 数组的 12 个最佳方法

    1.  声明一个数组 Java代码: String[] aArray = new String[5]; String[] bArray = {"a","b",& ...

  5. Python解压ZIP、RAR等常用压缩格式的方法

    解压大杀器 首先祭出可以应对多种压缩包格式的python库:patool.如果平时只用基本的解压.打包等操作,也不想详细了解各种压缩格式对应的python库,patool应该是个不错的选择. pato ...

  6. python系列3之内置函数和文件操作

    目录 自定义函数 内置函数 文件的操作 练习题 一. 自定义函数 1. 函数的创建 函数的创建 1.def关键字 2.函数名+() 3.冒号 4.缩进 5. return返回值,可以不写,默认的返回值 ...

  7. 基于原版Hadoop的YDB部署(转)

    YDB依赖环境准备 一.硬件环境 硬件如何搭配,能做到比较高的性价比,不存在短板.合理的硬件搭配,对系统的稳定性也很关键. 1.CPU不是核数越高越好,性价比才是关键. 经常遇到很多的企业级客户,他们 ...

  8. Git-Git克隆

    鸡蛋不装在一个篮子里 Git的版本库目录和工作区在一起,因此存在一损俱损的问题,即如果删除一个项目的工作区,同时也会把这个项目的版本库删除掉.一个项目仅在一个工作区中维护太危险了,如果有两个工作区就会 ...

  9. Response响应工具类

    技术交流群: 233513714 import com.google.common.base.Objects; import java.io.Serializable; public class Re ...

  10. TCP重组问题

    今天问题: vqmon 测试一pcap抓包文件18.pcap.发现实际输出的视频分片信息和抓包不符合. ===>pts : 00:00:33 Too much data in TCP recei ...