当前位置: 首页 > news >正文

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

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

#include<cstdio>
#include<iostream>
using namespace std;
typedef unsigned long long ull;
ull n;
ull f[19][3];
void init()
{
    f[0][0]=1;
    for(int i=1;i<=18;++i)
      {
          f[i][0]=f[i-1][0]*10-f[i-1][1];
          f[i][1]=f[i-1][0];
          f[i][2]=f[i-1][2]*10+f[i-1][1];
      }
}
ull work(ull x)
{
    ull ans=0,t=x,bit[25],len=0;
    while(t)
      {
          bit[++len]=t%10;
          t/=10;
      }
    ull is=1;
    for(int i=len;i>1;--i){
    	if(bit[i]==1 && bit[i-1]==3){
    		is=0;
    		break;
    	}
    }
    bit[len+1]=bit[len+2]=0;
    bool flag=0;
    for(int i=len;i;--i)
      {
          if(bit[i+1]==3 && bit[i+2]==1)
            flag=1;
          ans+=f[i-1][2]*bit[i];
          if(flag)
            ans+=bit[i]*f[i-1][0];
          else
          {
              if(bit[i] > 1)
                  ans+=f[i-1][1];
              if(bit[i+1] == 1 && bit[i] > 3)
                  ans+=f[i][1];
          }
      }
    return x-ans+is-1;
}
int T;
int main()
{
    init();
    freopen("hotel.in","r",stdin);
    freopen("hotel.out","w",stdout);
    scanf("%d",&T);
//    work(14);
    for(;T;--T)
      {
          cin>>n;
          ull l=1,r=(ull)2000000000000000000ll;
          while(l<r){
          	ull mid=(l+r)/(ull)2;
          	if(work(mid)>=n){
          		r=mid;
          	}
          	else{
          		l=mid+1;
          	}
          }
          cout<<l<<endl;
      }
    return 0;
}

转载于:https://www.cnblogs.com/autsky-jadek/p/7131842.html

相关文章:

  • 唉,老了,自己给自己造Bug(Chrome下载无后缀问题)
  • Num 15: NYOJ: 题目0002 : 括号配对问题 [ 栈(stack) ]
  • 长短相形
  • 哈罗小贝异军突起 苏州太仓“文艺复兴”
  • java里的静态成员变量是放在了堆内存还是栈内存
  • Rancher-k8s加速安装文档
  • 个人觉得实用的Python姿势
  • create-react-app项目添加less配置
  • 研究发现:硅基导模量子集成光学芯片研制成功
  • Intel新一代超低功耗Atom曝光:尺寸超小
  • Spring Cloud构建微服务架构:分布式配置中心【Dalston版】
  • 智能家居产业格局初稳 企业非零和博弈
  • 数据转换例子
  • 机器学习(Machine Learning)深度学习(Deep Learning)资料
  • 【NOIP2012】借教室
  • 【347天】每日项目总结系列085(2018.01.18)
  • axios 和 cookie 的那些事
  • Fastjson的基本使用方法大全
  • Hexo+码云+git快速搭建免费的静态Blog
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • PHP CLI应用的调试原理
  • Python十分钟制作属于你自己的个性logo
  • Redis学习笔记 - pipline(流水线、管道)
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • Spring Cloud中负载均衡器概览
  • vue.js框架原理浅析
  • Vue.js源码(2):初探List Rendering
  • vue中实现单选
  • 将 Measurements 和 Units 应用到物理学
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 前端性能优化--懒加载和预加载
  • 区块链将重新定义世界
  • 新手搭建网站的主要流程
  • 硬币翻转问题,区间操作
  • 《天龙八部3D》Unity技术方案揭秘
  • ​业务双活的数据切换思路设计(下)
  • #pragma once
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (二)学习JVM —— 垃圾回收机制
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (译)2019年前端性能优化清单 — 下篇
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .NET MVC第五章、模型绑定获取表单数据
  • .NET程序员迈向卓越的必由之路
  • .NET面试题解析(11)-SQL语言基础及数据库基本原理
  • [ CTF ] WriteUp-2022年春秋杯网络安全联赛-冬季赛
  • [ 渗透工具篇 ] 一篇文章让你掌握神奇的shuize -- 信息收集自动化工具
  • [Android Pro] Notification的使用
  • [APIO2015]巴厘岛的雕塑
  • [AR Foundation] 人脸检测的流程
  • [BROADCASTING]tensor的扩散机制
  • [HDU]2161Primes