[atARC075F]Mirrored
假设$n=\sum_{i=0}^{k}a_{i}10^{i}$(其中$a_{k}>0$),则有$d=f(n)-n=\sum_{i=0}^{k}(10^{k-i}-10^{i})a_{i}$,考虑$i$和$k-i$,不难化简得到$d=\sum_{i=0}^{\lfloor\frac{k-1}{2}\rfloor}(10^{k-i}-10^{i})(a_{i}-a_{k-i})$
(这里忽略了当$k$为偶数时$a_{\frac{k}{2}}$,因为其系数为0,因此当$k$为偶数时答案可以再乘10)
记$b_{i}=a_{i}-a_{k-i}$后,考虑去统计$b_{i}$,之后再加上对应的$a_{i}$,即$\prod(10-|b_{i}|)$种
从0到$\lfloor\frac{k-1}{2}\rfloor$依次确定$b_{i}$,当要确定$b_{i}$时(即$b_{0..i-1}$都已经确定),考虑$b_{i}$之后的位置所能产生的贡献,不难得到$b_{i}$合法的必要条件为$|d-\sum_{j=0}^{i}(10^{k-j}-10^{j})b_{j}|\le 9\sum_{j=i+1}^{\lfloor\frac{k-1}{2}\rfloor}(10^{k-j}-10^{j})$
又因为$10^{k-i}-10^{i}>9\sum_{j=i+1}^{\lfloor\frac{k-1}{2}\rfloor}(10^{k-j}-10^{j})$,即当左边绝对值内已经是正数时,再增加$b_{i}$一定不合法,类似的负数时不能减少,因此$b_{i}$最多只有两种(恰好为正数或负数)
如果爆搜,对于每一个$k$都有$2^{\lfloor\frac{k-1}{2}\rfloor}$的复杂度,因此考虑确定$k$的范围:
对于$10^{k-i}-10^{i}>9\sum_{j=i+1}^{\lfloor\frac{k-1}{2}\rfloor}(10^{k-j}-10^{j})$这个条件,更精确的,我们在右边再加上$10^{\lceil\frac{k+1}{2}\rceil}$后也是正确的,即$10^{k-i}-10^{i}>9\sum_{j=i+1}^{\lfloor\frac{k}{2}\rfloor}(10^{k-j}-10^{j})+10^{\lceil\frac{k+1}{2}\rceil}$
接下来证明若$d\le 10^{\lceil\frac{k+1}{2}\rceil}-10^{\lfloor\frac{k-1}{2}\rfloor}$,一定无解——
归纳$b_{i}=0$,即当确定$b_{i}$时$b_{0..i-1}=0$,此时来证明$b_{i}=0$
由于$d>0$,因此$b_{i}\le 1$,同时$b_{i}$的系数最小即为$10^{\lceil\frac{k+1}{2}\rceil}-10^{\lfloor\frac{k-1}{2}\rfloor}$,因此$b_{i}\ge -1$
而当$b_{i}=-1$时,$(10^{k-j}-10^{j})-d>9\sum_{j=i+1}^{\lfloor\frac{k}{2}\rfloor}(10^{k-j}-10^{j})+10^{\lceil\frac{k+1}{2}\rceil}-10^{\lceil\frac{k+1}{2}\rceil}$(第一项$10^{\lceil\frac{k+1}{2}\rceil}$是更精确的比较,第二项是$d<10^{\lceil\frac{k+1}{2}\rceil}$),因此即不满足必要条件
当所有$b_{i}=0$时,不难得到$d=0$,即无解,因此有$k\le 18$,总复杂度即为$o(18\cdot 2^{9})$,可以通过
有1个细节:要求$a_{k}>0$,因此若$b_{0}\ge 0$则$b_{0}$的对$a_{i}$贡献系数为$9-b_{0}$

1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 21
4 #define ll long long
5 ll n,sum,ans,mi[N];
6 void dfs(int k,int t,ll n,ll tot){
7 if (k>(t-1)/2){
8 if (!n)sum+=tot;
9 return;
10 }
11 ll s=mi[t-k]-mi[k];
12 n+=9*s;
13 for(int i=-9;i<=9;i++){
14 if (abs(n)<s)dfs(k+1,t,n,tot*(10-abs(i)-((!k)&&(i>=0))));
15 n-=s;
16 }
17 }
18 int main(){
19 scanf("%lld",&n);
20 mi[0]=1;
21 for(int i=1;i<=18;i++)mi[i]=mi[i-1]*10;
22 for(int i=1;i<=18;i++){
23 sum=0;
24 dfs(0,i,n,1);
25 if (i%2==0)sum*=10;
26 ans+=sum;
27 }
28 printf("%lld",ans);
29 }
[atARC075F]Mirrored的更多相关文章
- 最长回文子串(Mirrored String II)
Note: this is a harder version of Mirrored string I. The gorillas have recently discovered that the ...
- [AtCoderContest075F]Mirrored
[AtCoderContest075F]Mirrored 试题描述 For a positive integer \(n\), we denote the integer obtained by re ...
- Consistent 与 Mirrored 视角
Consistent 与 Mirrored 视角 在进行分布式训练时,OneFlow 框架提供了两种角度看待数据与模型的关系,被称作 consistent 视角与 mirrored 视角. 本文将介绍 ...
- CentOS RabbitMQ 高可用(Mirrored)
原文:https://www.sunjianhua.cn/archives/centos-rabbitmq.html 一.RabbitMQ 单节点 1.1.Windows 版安装配置 1.1.1 安装 ...
- 【arc075F】Mirrored
Portal --> arc075_f Solution 一开始抱着"我有信仰爆搜就可以过"的心态写了一个爆搜.. 但是因为..剪枝和枚举方式不够优秀愉快T掉了q ...
- 【ARC075F】Mirrored 搜索/数位dp
Description 给定正整数DD,求有多少个正整数NN,满足rev(N)=N+Drev(N)=N+D,其中rev(N)rev(N)表示将NN的十进制表示翻转来读得到的数 Input 一个 ...
- ARC075 F.Mirrored
题目大意:给定D,询问有多少个数,它的翻转减去它本身等于D 题解做法很无脑,利用的是2^(L/2)的dfs,妥妥超时 于是找到了一种神奇的做法. #include <iostream> u ...
- AT2582 Mirrored
传送门 智障爆搜题 可以发现题目给出的式子可以移项 然后就是\(rev(N)-N=D\) 然后假设\(N=a_1*10^{n-1}+a_2*10^{n-2}+...+a_{n}\) 那么\(rev(N ...
- Atcoder F - Mirrored(思维+搜索)
题目链接:http://arc075.contest.atcoder.jp/tasks/arc075_d 题意:求rev(N)=N+D的个数,rev表示取反.例如rev(123)=321 题解:具体看 ...
随机推荐
- JVM学习笔记——方法区
方法区 Method Area 方法区在逻辑上属于堆的一部分,但可以看做是一块独立于 Java 堆的内存空间.所有的字段和方法字节码,以及一些特殊的方法,如构造函数,接口代码在此定义.所有定义方法的信 ...
- 题解 Weak in the Middle
题目传送门 Description 有一个长度为 \(n\) 的序列 \(a_{1,2,...,n}\) ,每次可以删掉 \(a_i\),当 \(\min(a_{i-1},a_{i+1})>a_ ...
- Win10开启剪贴板
点击任务栏下方右侧的会话窗口 点击所有设置 在搜索栏中输入剪贴板,点击进入剪贴板设置 开启剪贴板历史记录 按下组合键win + v即可呼出剪贴板
- 结对编程——带UI的小初高数学学习软件
一.简介 本次项目要求: 1.所有功能通过图形化界面操作,可以是桌面应用,可以是网站(编程语言和技术不限): 2.用户注册功能.用户提供手机号码,点击注册将收到一个注册码,用户可使用该注册码完成注册: ...
- 【数据结构】<栈的应用>回文判断
通过栈与队列相关内容的学习,我们知道,栈是"先进后出"的线性表,而队列是"先进先出"的线性表.可以通过构造栈与队列来实现在这一算法.将要判断的字符序列依次压栈和 ...
- 使用寄存器点亮LED
1. 项目:使用stm32寄存器点亮LED, 分别点亮红.绿.蓝3个灯. 2. 代码: 只需要编写main.c程序,stm3210x.h程序为空(只需要新建即可). 2.1 点亮绿灯main.c程序 ...
- 【UE4 设计模式】策略模式 Strategy Pattern
概述 描述 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换.策略模式让算法的变化不会影响到使用算法的客户. 套路 Context(环境类) 负责使用算法策略,其中维持了一 ...
- Beta-技术规格说明书
项目 内容 这个作业属于哪个课程 2021春季软件工程(罗杰 任健) 这个作业的要求在哪里 团队项目-计划-功能规格说明书 一.架构与技术栈 1.整体架构 本项目的整体架构如上图所示.下面我们将对涉及 ...
- SpringCloud 2020.0.4 系列之Hystrix看板
1. 概述 老话说的好:沉默是金,有时适当的沉默,比滔滔不绝更加有效. 言归正传,前面我们聊了有关 Hystrix 降级熔断的话题,今天我们来聊聊如何使用 turbine 和 hystrix dash ...
- 决策树 机器学习,西瓜书p80 表4.2 使用信息增益生成决策树及后剪枝
使用信息增益构造决策树,完成后剪枝 目录 使用信息增益构造决策树,完成后剪枝 1 构造决策树 1 根结点的选择 色泽 信息增益 根蒂 信息增益 敲声 信息增益 纹理 信息增益 脐部 信息增益 触感 信 ...