首页 > 其他分享 >AtCoder Regular Contest 136 D Without Carry

AtCoder Regular Contest 136 D Without Carry

时间:2022-11-02 22:02:21浏览次数:82  
标签:AtCoder typedef txdy 10 int Contest long Regular define

AtCoder 传送门

洛谷传送门

一眼。

将 \(a\) 中每个数用前导零补到 \(6\) 位,题目相当于问所有 \(i,j\),\(a_i\) 的每一位加 \(a_j\) 的这一位都不超过 \(9\) 的 \((i,j)\) 对数。

直接高维前缀和统计即可,时间复杂度 \(O(n + 10^6)\)。

code
/*

p_b_p_b txdy
AThousandSuns txdy
Wu_Ren txdy
Appleblue17 txdy

*/

#include <bits/stdc++.h>
#define pb push_back
#define fst first
#define scd second
#define mems(a, x) memset((a), (x), sizeof(a))

using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef long double ldb;
typedef pair<ll, ll> pii;

const int maxn = 1000100;

int n, a[maxn], b[maxn][9], sum[10][10][10][10][10][10];

void solve() {
	scanf("%d", &n);
	for (int i = 1; i <= n; ++i) {
		scanf("%d", &a[i]);
		int x = a[i];
		for (int j = 0; j < 6; ++j) {
			b[i][j] = x % 10;
			x /= 10;
		}
		++sum[b[i][0]][b[i][1]][b[i][2]][b[i][3]][b[i][4]][b[i][5]];
	}
	for (int i = 0; i <= 9; ++i) {
		for (int j = 0; j <= 9; ++j) {
			for (int k = 0; k <= 9; ++k) {
				for (int l = 0; l <= 9; ++l) {
					for (int p = 0; p <= 9; ++p) {
						for (int q = 1; q <= 9; ++q) {
							sum[i][j][k][l][p][q] += sum[i][j][k][l][p][q - 1];
						}
					}
				}
			}
		}
	}
	for (int i = 0; i <= 9; ++i) {
		for (int j = 0; j <= 9; ++j) {
			for (int k = 0; k <= 9; ++k) {
				for (int l = 0; l <= 9; ++l) {
					for (int p = 1; p <= 9; ++p) {
						for (int q = 0; q <= 9; ++q) {
							sum[i][j][k][l][p][q] += sum[i][j][k][l][p - 1][q];
						}
					}
				}
			}
		}
	}
	for (int i = 0; i <= 9; ++i) {
		for (int j = 0; j <= 9; ++j) {
			for (int k = 0; k <= 9; ++k) {
				for (int l = 1; l <= 9; ++l) {
					for (int p = 0; p <= 9; ++p) {
						for (int q = 0; q <= 9; ++q) {
							sum[i][j][k][l][p][q] += sum[i][j][k][l - 1][p][q];
						}
					}
				}
			}
		}
	}
	for (int i = 0; i <= 9; ++i) {
		for (int j = 0; j <= 9; ++j) {
			for (int k = 1; k <= 9; ++k) {
				for (int l = 0; l <= 9; ++l) {
					for (int p = 0; p <= 9; ++p) {
						for (int q = 0; q <= 9; ++q) {
							sum[i][j][k][l][p][q] += sum[i][j][k - 1][l][p][q];
						}
					}
				}
			}
		}
	}
	for (int i = 0; i <= 9; ++i) {
		for (int j = 1; j <= 9; ++j) {
			for (int k = 0; k <= 9; ++k) {
				for (int l = 0; l <= 9; ++l) {
					for (int p = 0; p <= 9; ++p) {
						for (int q = 0; q <= 9; ++q) {
							sum[i][j][k][l][p][q] += sum[i][j - 1][k][l][p][q];
						}
					}
				}
			}
		}
	}
	for (int i = 1; i <= 9; ++i) {
		for (int j = 0; j <= 9; ++j) {
			for (int k = 0; k <= 9; ++k) {
				for (int l = 0; l <= 9; ++l) {
					for (int p = 0; p <= 9; ++p) {
						for (int q = 0; q <= 9; ++q) {
							sum[i][j][k][l][p][q] += sum[i - 1][j][k][l][p][q];
						}
					}
				}
			}
		}
	}
	ll ans = 0;
	for (int i = 1; i <= n; ++i) {
		ans += sum[9 - b[i][0]][9 - b[i][1]][9 - b[i][2]][9 - b[i][3]][9 - b[i][4]][9 - b[i][5]];
		bool flag = 1;
		for (int j = 0; j < 6; ++j) {
			if (b[i][j] > 9 - b[i][j]) {
				flag = 0;
				break;
			}
		}
		if (flag) {
			--ans;
		}
	}
	printf("%lld\n", ans >> 1);
}

int main() {
	int T = 1;
	// scanf("%d", &T);
	while (T--) {
		solve();
	}
	return 0;
}

标签:AtCoder,typedef,txdy,10,int,Contest,long,Regular,define
From: https://www.cnblogs.com/zltzlt-blog/p/16852666.html

相关文章

  • The 2021 ICPC Asia Shanghai & Shenyang Regional Contest
    赛前练习。上海站沈阳站[L]分析:容斥+树形DP。但是一开始想DP是\(O(n^3)\)的,于是想用NTT优化成\(O(n^2logn)\),但是还是T了。后来看题解,发现没有注意到转移时只......
  • ATcoder F 做题记录
    ABC273F简要题意一个人要沿数轴从\(0\)处走到\(x\)处,数轴上有一些障碍,每个障碍有一把对应的锤子可以将其销毁,给定障碍和锤子的坐标及\(x\),求最短路长。简要题......
  • 2022 Shanghai Collegiate Programming Contest
    比赛链接:https://codeforces.com/gym/103931A.AnotherA+BProblem题意:给定一个等式和等式每个位置对应的颜色。如果颜色是绿色,那答案的这一位也要是这个字符。如果......
  • Atcoder Beginner Contest 273(A~E+G)
    E场上想麻烦了,调根号分治浪费了点时间;F涉及后缀数组,还没有系统学;G场上没来的及看,也沾点数学,估计场上也想不到(不好,不好。赛时A神笔数组求和;B迷你模拟;C分别找到奇......
  • 2022 China Collegiate Programming Contest (CCPC) Guilin Site
    比赛链接2022ChinaCollegiateProgrammingContest(CCPC)GuilinSiteC.ArrayConcatenation给定一个长度为\(n\)的数组\(b_i\),有两种操作变换:\(b^{\prime}=\l......
  • D - Yet Another Recursive Function -- ATCODER
    D-YetAnotherRecursiveFunctionhttps://atcoder.jp/contests/abc275/tasks/abc275_d 思路动态规划问题。第一印象使用函数递归调用实现,但刚开始担心会爆栈,因为......
  • [Leetcode Weekly Contest]317
    链接:LeetCode[Leetcode]2455.可被三整除的偶数的平均值给你一个由正整数组成的整数数组nums,返回其中可被3整除的所有偶数的平均值。注意:n个元素的平均值等于n个......
  • The 2021 ICPC Asia Shenyang Regional Contest
    The2021ICPCAsiaShenyangRegionalContest我们按难易程度来,E,F<B,J<H,I,L,ME.EdwardGaming,theChampion直接输出edgnb子字符串数量。F.EncodedStringsI分......
  • Team Extra Contest 2022-10-21补题
    D.38parrots线段树#include<bits/stdc++.h>usingnamespacestd;#defineIOSios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr)#definerep(a,b......
  • AtCoder Beginner Contest 275 D~F
    D-YetAnotherRecursiveFunction思路:直觉需要用到的数字大多数是重复的,所以记忆化了一下,测了一下1e18的数据,跑的飞快,直接交了,6ms。#include<bits/stdc++.h>#def......