正题

Portal

这题比较简单,但是题目好像出了一点锅,细节挺多的,调了很久。

发现n>=1e7的时候可以直接暴力枚举n的倍数,然后判断累加。

时,余数不会超过,很容易可以想到Meet in the Middle。

我们枚举后七位的值,用表示第一位为i,第一位与第二位的大小关系为j,mod n余数为k而且可以作为一个波浪数的后缀的方案数。好好理解这一句话。这个数组很容易开爆,可以离散化一下,因为以内的波浪数不超过

然后从小到大枚举前七位的值,计算答案即可。

注意几个细节:

1.首先一个波浪数的后缀仍然是一个波浪数。

2.以00开头的7位数不能作为一个波浪数的后缀,根据定义可得。

3.以0xy开头的7位数(x<y)不能作为一个波浪数的后缀。

4.根据定义可得,11,22,33,44,55,66,77,88,99,都是波浪数,但是数据里并不是这么认为的。

这四个细节都是一个下午刚出来的。Orz zch

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
using namespace std;long long n,k;
int cnt[10][2][830200];
int hash[10000010],op;bool check(long long x){//if(!(x/100)) return true;int first=x%10,next=(x/10)%10;bool tf=first>next;//1Ϊ´óÓÚ£¬0ΪСÓÚ if(first==next) return false;x/=100;while(x){int temp=x%10;if(tf && temp<=next || !tf && temp>=next) return false;tf^=true;next=temp;x/=10;}return true;
}int main(){scanf("%lld %lld",&n,&k);if(n>=1e7){int tot=0;for(long long i=n;i<=1e14;i+=n){if(check(i)) tot++;if(tot==k) {printf("%lld\n",i);return 0;}}printf("-1");return 0;}long long tot=0,t=0;for(int i=1;i<=1e7;i++){if(check(i)){if(i%n==0) tot++;if(k==tot){printf("%d\n",i);return 0;}if(i/100000) {if(i/1000000==0 && i/100000%10<=i/10000%10) continue;if(!hash[i%n]) hash[i%n]=++op;cnt[i/1000000][i/1000000>(i/100000%10)][hash[i%n]]++;}}}int m=0,data=10000000%n;for(int i=1;i<=1e7;i++){(m+=data)%=n;t=tot;int tp=n-m;if(tp==n) tp=0;if(!check(i) || !hash[tp]) continue;if(i/10%10==i%10) continue;if(i<10){for(int j=0;j<i;j++) tot+=cnt[j][0][hash[tp]];for(int j=i+1;j<=9;j++) tot+=cnt[j][1][hash[tp]];}else{int temp=i%10;if(i/10%10<temp) for(int j=0;j<temp;j++) tot+=cnt[j][0][hash[tp]];else for(int j=temp+1;j<=9;j++) tot+=cnt[j][1][hash[tp]];}if(tot>=k){for(long long j=(i*10000000ll+1)%n==0?i*10000000ll+1:(i*10000000ll+1)/n*n+n;j<(i+1)*10000000ll;j+=n){if(check(j)) t++;if(t==k){printf("%lld\n",j);return 0;}}}}printf("-1");
}

波浪数,51nod1788,根号分治+Meet in the Middle相关推荐

  1. 【CTSC2010】珠宝商【后缀自动机】【点分治】【根号分治】

    题意:给一棵 nnn 个点的树,每个点有个字符,另给一个长度为 mmm 的特征串,求树上 n2n^2n2 条有向路径在特征串中出现的次数之和. n,m≤5×104n,m\leq 5\times 10^ ...

  2. CF1039D-You Are Given a Tree【根号分治,贪心】

    正题 题目链接:https://www.luogu.com.cn/problem/CF1039D 题目大意 给出nnn个点的一棵树,然后对于k∈[1,n]k\in[1,n]k∈[1,n]求每次使用一条 ...

  3. P5072-[Ynoi2015]盼君勿忘【莫队,根号分治】

    正题 题目链接:https://www.luogu.com.cn/problem/P5072 题目大意 nnn个数,mmm个询问(l,r,p)(l,r,p)(l,r,p)表示询问[l,r][l,r][ ...

  4. [CTSC2010]珠宝商(点分治+根号分治+后缀自动机)

    [CTSC2010]珠宝商 洛谷题目传送门 简要题意 给定一颗nnn个节点的树,和一个长度为mmm的模式串SSS 树上每个节点都有一个字符 求树上所有路径的点的字符拼成的字符串在SSS中的出现次数之和 ...

  5. 浅谈根号分治——暴力的美学

    根号分治 根号分治的概念 [模板]P3396 哈希冲突 CF103D Time to Raid Cowavans 根号分治的概念 根号分治是一种优化暴力算法. 我个人的理解就是这东西跟分块差不多.但应 ...

  6. 51nod 1597 有限背包计数问题 DP 根号分治

    题解: 考虑根号分治. 对于体积≤n\le\sqrt n≤n​的东西,发现背包可以用一个前缀和优化. 对于体积>n>\sqrt n>n​的东西,实际上每个物品都可以看做有无限个 ,就 ...

  7. nowcoder 79F 小H和圣诞树 换根 DP + 根号分治

    设节点个数大于 $\sqrt n$ 的颜色为关键颜色,那么可以证明关键颜色最多有 $\sqrt n$ 个. 对于每个关键颜色,暴力预处理出该颜色到查询中另一个颜色的距离和. 对于不是关键颜色的询问,直 ...

  8. 学习计划——根号分治

    根号分治 根号分治是一种思想,一般根据一个数(可以是数组的数,也可以是答案的数)分类,分为大于 s q r t ( n ) sqrt(n) sqrt(n)的部分和小于等于 s q r t ( n ) ...

  9. 树链剖分 or 根号分治 + dfs序 + 树状数组 ---- CF1254 D. Tree Queries

    题目链接 题目大意: 问题转化: 很容易发现:假设修改的节点是vvv. 1.vvv的子树sonvson_vsonv​直接加上(n−size[sonv])n×d\frac{(n-size[son_v]) ...

  10. [RQNOJ313]波浪数

    题目描述 波浪数是在一对数字之间交替转换的数,如1212121,双重波浪数则是指在两种进制下都是波浪数的数,如十进制数191919是一个十进制下的波浪数,它对应的十一进制数121212也是一个波浪数, ...

最新文章

  1. 关于添加图片到svg中,rails下使用js, 用parseFloat来调整force.on时的位置
  2. Appointment over SMS on Windows Mobile
  3. ajax实现表单验证 html,Ajax+ajax做的表单验证
  4. Java中的注解是如何工作的?
  5. 【POJ - 3160】Father Christmas flymouse(Tarjan缩点,DAG最长路)
  6. 从HMM到MEMM再到CRF
  7. Python使用多进程提高网络爬虫的爬取速度
  8. 强化学习:7基于直接策略搜索的强化学习⽅法 之 策略梯度
  9. linux vim 常用命令
  10. Django:我是怎么做到使用django动态定义表单(form)的 .
  11. Kafka、RabbitMQ、RocketMQ比较
  12. [译] 你的站点如你所想的移动友好吗?
  13. 如何修改 WordPress 的用户默认头像?
  14. 各种未授权访问漏洞的复现与利用
  15. 单片机电脑计算机键盘设计,基于单片机的电脑弹簧机按键板的设计与实现
  16. Stata:何时使用线性概率模型而非Logit?
  17. Excel —— 录制宏
  18. 苹果换原装电池_手机资讯:iPhone 电池最大容量低于 80%换电池选原装还是第三方...
  19. ElasticSearch wildcard查询(英文检索)
  20. 这个英文语法校正插件很赞!可以校正邮件,也可以校正论文

热门文章

  1. 用聊天记录当证据 对方改了微信号怎么证明他是他
  2. 使用Bitbucket Cloud学习Git
  3. 设置win10锁屏壁纸为桌面背景
  4. 大数据分析难不难好学吗?
  5. 雅虎谷歌恩怨回顾:养虎为患自食苦果
  6. 三菱q系列plc连接电脑步骤_三菱Q系列PLC 以太网通信设置方法
  7. uni-app 原生android插件在android studio调用.so文件步骤
  8. Reactjs源码分析
  9. UVa 11909 - Soya Milk
  10. 中国天然大豆卵磷脂市场趋势报告、技术动态创新及市场预测