首页 > 其他分享 >arc136D Without Carry 题解

arc136D Without Carry 题解

时间:2022-11-19 16:55:53浏览次数:65  
标签:10 return 前缀 int 题解 arc136D ans Carry include

这阵子没一道题能自己想出来,开道黄题以下找找信心 qwq

又一道比 C 简单的 D。

题意:给出 \(n\) 个 \(6\) 位及以下数字,问有几对数字的和在十进制下无进位。\(n \leq 10^6\)。

值域小就可以为所欲为!

把第一个数每个数位改成 \(9\) 减当前数位,则需要查询每一维的数值分别小于给定数的数的个数,考虑做一个六维前缀和,则直接查表即可知道答案。复杂度 \(O(n)\),这里认为值域与 \(n\) 同阶。

刚刚写了一道二进制多维前缀和 arc137D,现在再来一道十进制多维前缀和。atc 好贴心,还注意到了新学知识点后的练习。

注意如果一个数所有数位不超过 \(4\) 则会被和自己统计一次。

#include <cstdio>
#include <tuple>
#include <map>
#include <cmath>
#define LL long long
using namespace std;
const int M = 1e6 + 5;
using num = tuple<int, int, int, int, int, int>;
LL a[M], sum[M]; int n;
int qpow(int a, int b) {
    int ans = 1;
    for(; b; b >>= 1) {
        if(b & 1) ans = ans * a;
        a = a * a;
    }
    return ans;
}
bool chk(int t) {
    while(t) {
        if(t % 10 >= 5) return 0;
        t /= 10;
    }
    return 1;
}
int main(){
    scanf("%d", &n);
    for(int i = 1; i <= n; i++){
        scanf("%lld", &a[i]);
        ++sum[a[i]];
    }
    int w = 1000000;
    for(int i = 0; i < 6; i++) {
        int pw = qpow(10, i);
        for(int j = 0; j < w; j++) {
            if((j / pw) % 10) sum[j] += sum[j - pw];
        }
    }
    int ans = 0;
    for(int i = 1; i <= n; i++) {
        ans += sum[w - 1 - a[i]];
        if(chk(a[i])) --ans;
    }
    printf("%d\n", ans / 2);
}

标签:10,return,前缀,int,题解,arc136D,ans,Carry,include
From: https://www.cnblogs.com/purplevine/p/16906440.html

相关文章

  • 题解 Codeforces Round #834 (Div. 3) ABCDEF
    A.Yes-Yes?problem判断给定的字符串是否为无穷个YesYesYes拼接组成的字符串的连续子串。\(|S|\leq50\)。solution暴力。具体地,判断\(S,Ye+S,Y+S\)是否有一个是......
  • python(牛客)试题解析1 - 简单
    导航:一、NC103反转字符串二、NC141判断是否为回文字符串三、NC151最大公约数四、NC65斐波那契数列五、字符按排序后查看第k个最小的字母六、数组内取出下标相同......
  • 移动端点击穿透问题解决
    js解决方案1、只用touch把页面内所有click全部换成touch事件(touchstart、touchend、tap),需要特别注意a标签,a标签的href也是click,需要去掉换成js控制的跳转,或者直接改成......
  • Codeforces Round #829 A+B+C+D 题解
    A.TheUltimateSquare题意询问\(T\)次,给定\(n\)块木板,第\(i\)块为\(1\times\lceil\fraci2\rceil\)大小,求能拼出的最大正方形边长数据范围:\(1\len\le10^9,1......
  • 【题解】做题记录(2022.11)
    11.1CF449DJzzhuandNumbers题目分析:考虑直接算的话就相当于限制每一位必须有一个\(0\),显然不如反着来,也就是某一位必须全为\(1\),也就是我们计算与之后不为\(0\)......
  • DSOJ 题解 #202103. 【21网络赛C】来帮我们排排名
    【21网络赛C】来帮我们排排名-题目-DSOJ#include<stdio.h>#include<stdlib.h>#include<string.h>structplayer_data{charid[11];intproblem_tim......
  • luogu P7201 [COCI2019-2020#1] Džumbus题解
    须知本题解骨架是本人由官方题解翻译得来的,并补充了一些不详细的地方,修改了一些错误,自己写了每一个子任务的代码(因为官方题解代码和文本不太匹配)。基本信息任务名:Džumb......
  • P5999 [CEOI2016] kangaroo 蓝 题解
    前言有些题目照常DP不是很好做,感觉像是区间DP,但是怎么设状态都不好转移,那么可以考虑一种维护块儿的DP,就是这道题要用到的知识点。背景分析如果每次跳跃的点的编号形......
  • 恒创科技:有关服务器虚拟化的常见问题解答
    虚拟化”一词经常使用,尤其是与服务器相关的时候。以下是一些有关服务器虚拟化常见问题的解答。什么是服务器虚拟化?虚拟化是一个经常应用于范围广泛的......
  • helm 问题解决 —— HELM部署异常:Error: UPGRADE FAILED: another operation (install
    转载: https://blog.csdn.net/dreamer_chen/article/details/118596034  HELM部署异常:Error:UPGRADEFAILED:anotheroperation(install/upgrade/rollback)isin......