假设$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的更多相关文章

  1. 最长回文子串(Mirrored String II)

    Note: this is a harder version of Mirrored string I. The gorillas have recently discovered that the ...

  2. [AtCoderContest075F]Mirrored

    [AtCoderContest075F]Mirrored 试题描述 For a positive integer \(n\), we denote the integer obtained by re ...

  3. Consistent 与 Mirrored 视角

    Consistent 与 Mirrored 视角 在进行分布式训练时,OneFlow 框架提供了两种角度看待数据与模型的关系,被称作 consistent 视角与 mirrored 视角. 本文将介绍 ...

  4. CentOS RabbitMQ 高可用(Mirrored)

    原文:https://www.sunjianhua.cn/archives/centos-rabbitmq.html 一.RabbitMQ 单节点 1.1.Windows 版安装配置 1.1.1 安装 ...

  5. 【arc075F】Mirrored

    Portal --> arc075_f Solution ​  一开始抱着"我有信仰爆搜就可以过"的心态写了一个爆搜.. ​  但是因为..剪枝和枚举方式不够优秀愉快T掉了q ...

  6. 【ARC075F】Mirrored 搜索/数位dp

    Description ​ 给定正整数DD,求有多少个正整数NN,满足rev(N)=N+Drev(N)=N+D,其中rev(N)rev(N)表示将NN的十进制表示翻转来读得到的数 Input ​ 一个 ...

  7. ARC075 F.Mirrored

    题目大意:给定D,询问有多少个数,它的翻转减去它本身等于D 题解做法很无脑,利用的是2^(L/2)的dfs,妥妥超时 于是找到了一种神奇的做法. #include <iostream> u ...

  8. AT2582 Mirrored

    传送门 智障爆搜题 可以发现题目给出的式子可以移项 然后就是\(rev(N)-N=D\) 然后假设\(N=a_1*10^{n-1}+a_2*10^{n-2}+...+a_{n}\) 那么\(rev(N ...

  9. Atcoder F - Mirrored(思维+搜索)

    题目链接:http://arc075.contest.atcoder.jp/tasks/arc075_d 题意:求rev(N)=N+D的个数,rev表示取反.例如rev(123)=321 题解:具体看 ...

随机推荐

  1. PGSLQ并发控制

    并发控制简介 PostgreSQL提供了多种方式以控制对数据的并发访问.在数据库内部,数据的一致性使用多版本模式(多版本并发控制(Multiversion Concurrency Control),即 ...

  2. 题解 CF762D Maximum path

    题目传送门 Description 给出一个 \(3\times n\) 的带权矩阵,选出一个 \((1,1)\to (3,n)\) 的路径使得路径上点权之和最大. \(n\le 10^5\) Sol ...

  3. C++ IDE或编辑器安装

    IDE介绍 上节课我们讲了C++编译器,可是没有好的编辑器,只用记事本打代码,这谁受得了.Linux vim至少还有代码高亮(即我作文里经常会出现的"彩色的代码"),记事本连高亮都 ...

  4. 按键检测GPIO输入

    1. 项目 通过按键控制开关LED灯,按下按键灯亮,再按一下灯灭. 2. 代码 mian.c #include "stm32f10x.h" //相当于51单片机中的 #includ ...

  5. 【UE4 C++】学习笔记汇总

    UE4 概念知识 基础概念--文件结构.类型.反射.编译.接口.垃圾回收.序列化[导图] GamePlay架构[导图] 类的继承层级关系[导图] 反射机制 垃圾回收机制/算法 序列化 Actor 的生 ...

  6. 2021.8.21考试总结[NOIP模拟45]

    T1 打表 由归纳法可以发现其实就是所有情况的总和. $\frac{\sum_{j=1}^{1<<k}(v_j-v_{ans})}{2^k}$ $code:$ 1 #include< ...

  7. 洛谷 P5658 [CSP-S2019] 括号树

    链接: P5658 分析: 显然我们应该在dfs树的同时维护每个点的答案. 注意到第 \(u\) 个点的答案可以分成两部分,不包含 \(u\) 点时的答案,和加入 \(u\) 点后新增的答案,前者可以 ...

  8. 架构师之路-redis集群解析

    引子 上篇<架构师之路-https底层原理>里我提到了上面的整体视图,文章也介绍了想要真正能在工作中及时正确解决问题的基本功:原理理解透彻.今天以redis集群解析为例介绍一个及时敏锐的发 ...

  9. Android DataBinding使用详解

    简介 DataBinding是一个自动绑定UI的框架. 使用DataBinding需要在app根目录的build.gradle文件中加入DataBinding配置: android { .... da ...

  10. PCIE学习笔记--PCIe错误源详解(二)

    转载地址:http://blog.chinaaet.com/justlxy/p/5100057799 这篇文章主要介绍事务(Transaction)错误.链路流量控制(Link Flow Contro ...