首页 > 其他分享 >ABC 353 A - E

ABC 353 A - E

时间:2024-05-14 13:19:26浏览次数:22  
标签:取模 ABC 10 res sum 然后 353 字符串

ABC 353 A - E

A Buildings

这是一道很难的题,我们需要用复杂的枚举方法,我们从 $ 2 $ 号开始枚举(注意理解为什么是从 $ 2 $ 号开始),然后一直找到最后,找比它大的,建议没有超过高四的同学们不要轻易尝试

B AtCoder Amusement Park

这也是一道不简单的题,我们考虑直接加,然后如果超过 $ k $,就取模,然后累加答案即可

C Sigma Problem

C 很抽象,我们考虑这么做,对于每个数考虑,在后面的数里面二分一下,找一个分割点,前面的数不需要取模,后面的数需要,保证数据范围是只取模一次,所以我们直接算就可以了,具体就是减去后面的数的数量乘上模数

注意预处理前缀和

D Another Sigma Problem

这个题就比较有意思了,首先我们考虑变形式子:

$ f(a, b) = a \times 10^{l(b)} + b $

这里 $ l(k) $ 表示 $ k $ 的位数,这个比较好求:

inline int getl (int x) {

    int res = 0, k = x;

    while (k) k /= 10, ++ res;

    return res;

}

然后接着变形:

$ \sum_{i = 1}^{n - 1} \sum_{j = i + 1}^{n} f(a, b) = \sum_{i = 1}^{n - 1} \sum_{j = i + 1}^{n} a \times 10^{l(b)} + b $

然后我们可以把 $ 10^{l(b)} $ 和 $ b $ 求一个前缀和,然后我们就可以快速求出来了,因为不需要分别取模,这个题就变得很简单了

分别取模我也不会啊

E Yet Another Sigma Problem

这是一个很巧的题,我们先建一下字典树,然后对于每一个字符串考虑,答案就加上这个字符串匹配所有字符串得到的答案总和减去自己的长度,把所有的加起来除以二

然后考虑怎么求

首先字典树每个节点记录一下匹配的字符串的数量,然后遍历当前字符串,把记录的东西加起来即可,因为如果有一个字符串也在这个节点,就说明这个节点对公共前缀是有贡献的

然后就做完了

标签:取模,ABC,10,res,sum,然后,353,字符串
From: https://www.cnblogs.com/Tzf-tzf/p/18191113

相关文章

  • AtCoder Beginner Contest 353
    AtCoderBeginnerContest353abc353_c题意:定义\(F(x,y)\)为\((x+y)mod10^8\)的值,求\(\displaystyle\sum_{i=1}^{N-1}\sum_{j=i+1}^Nf(A_i,A_j).\)思路:对于\(\displaystyle\sum_{i=1}^{N-1}\sum_{j=i+1}^N\f(A_i,A_j).\)来说,每个\(A_i\)的次数都是\(n-1\)次,所以如果没有\(m......
  • abc353f 题解
    大分讨,由于没注意到细节挂大分。下面称大小为\(n\timesn\)的为大格子,\(1\times1\)的为小格子。把\(n\timesn\)个小格子组成的正方形称为一个部分。分析我们先来讨论一般情况。思考一对于\(n\ge3\)的一般情况,如果要求任意两个大格子到对方的距离最小,怎么做?根据贪......
  • Atcoder ABC 353 全题解
    最近看的人好少……都快不想写了……你们的支持就是我创作的最大动力!AB%你CDE题意:有一个一个一个函数,把函数两两配对式求值,求这些值最后的总和C考虑将所有的和减去$10^8$出现的次数。将整个数组排序,然后进行二分,求第一个与这个数的和$\ge10^8$的位置,然后与这个数......
  • abc_353_b题解
    这道题怎么说呢……开始看题目翻译也是一脸懵,然后直接就看了样例解释,然后:瞬间明白!所以:样例解释YYDS!样例解释YYDS!!样例解释YYDS!!!停停停不开玩笑了。仍旧是分步解决问题(诶不是怎么突然联想到了加法原理):输入(每道题几乎都有的东西~~~),不用多说,按照题目要求解决。循环。这一步......
  • abc_353_a题解
    题目传送门~~~CSDN传送门~~~这题纯纯一个数组遍历。如果你看不懂英文的话,那么atcoderbetter这个插件可以帮助你,所有洛谷&atcoder&codeforces的插件都在这里:https://www.luogu.com/article/p2ri0gub咳咳……跑题了跑题了!下面就是题解:输入。这一步很简单,定义变量n和数组H......
  • Atcoder Beginner Contest 353
    AtcoderBeginnerContest353A问题陈述有\(N\)幢楼房排列成一排。左起的\(i\)th楼高\(H_i\)。请判断是否有比左起第一座高的建筑物。如果存在这样的建筑物,请找出从左边起最左边的建筑物的位置。思路签到题。代码#include<bits/stdc++.h>usingnamespacestd;int......
  • [ABC261E] Many Operations 题解
    [ABC261E]ManyOperations题解思路解析首先可以发现,如果直接跑肯定会炸,于是考虑优化。首先发现操作有很多重复的,所以可以考虑把每一个数经过所有操作后的值都预处理下来,但这样显然空间也会炸。然后我们又想到可以不需要求下每个数经过操作后的值,可以把每一位二进制上在开始前......
  • ABC 261 复盘
    ABC261复盘[ABC261A]Intersection思路解析因为这题czl错了所以我特地来写个复盘可以想到两条线段的关系只有不相交,相交,包围三种,于是我们可以直接判断每种情况然后输出就好了,可以在判断前先将两条线段的位置判断一下交换方便之后操作。#include<bits/stdc++.h>usingnames......
  • ABC353 | 如同流星划过天空
    ABC353|如同流星划过天空A.&B.依题意模拟即可。C.注意只有\(f(x,y)\)需要对\(10^8\)取模,\(f\)的求和不需要。关注到\(a_i\in[1,10^8)\),故\(a_i+a_j\in[2,2\times10^8)\)。从而\(f(x,y)=[x+y<10^8](x+y)+[x+y\ge10^8](x+y-10^8)=x+y-10^8[x+y\ge10^......
  • ABC353C Sigma Problem 题解
    ABC353CSigmaProblem题解题目链接:AT题目中的两个求和符号\(\sum_{i=1}^{N-1}\sum_{j=i+1}^{N}\)实际上是在枚举所有的有序数对\((i,j)\)。而有序数对的个数\(N(N-1)/2=O(N^{2})\),真的去枚举所有数对肯定会T。这时应该考虑去拆贡献,求出每个\(A_i\)对答案的贡献。......