首页 > 其他分享 >AtCoder Beginner Contest 353

AtCoder Beginner Contest 353

时间:2024-05-13 12:41:30浏览次数:13  
标签:AtCoder 题意 Beginner 10 NA sum 353 dec displaystyle

AtCoder Beginner Contest 353

abc353_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\)次,所以如果没有\(mod\ 10^8\)则\(ans=\displaystyle\sum_{i=1}^{N}(N-1)*A_i\)

因为\(A_i<10^8\)所以\(A_i+A_j<2·10^8\),也就是说\(A_i+A_j\)只会超过\(10^8\)一倍,那么在 \(ans=\displaystyle\sum_{i=1}^{N}(N-1)*A_i\) 上减掉\(10^8\),从小到大排序后,对于每一个\(A_i\)求出对于有多少\(A_j\)相加会\(>10^8\)用二分查找

点击查看代码

abc353_d

题意:定义\(F(x,y)\)为\(A_x和A_y\) 数字拼接的结果,例如\(F(3,14)=314\),求\(\displaystyle\sum_{i=1}^{N-1}\sum_{j=i+1}^NF(A_i,A_j)\ mod \ 998244353\)

思路:令\(dec(x)\)为x的位数,则\(F(A_i,A_j)=A_i*10^{dec(A_j)}+A_j\),所以\(\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}^NA_i*10^{dec(A_j)}+A_j=\displaystyle\sum_{i=1}^{N-1}\sum_{j=i+1}^NA_i*10^{dec(A_j)}+\sum_{i=1}^{N-1}\sum_{j=i+1}^NA_j\)

\(=\displaystyle\sum_{i=1}^{N-1}\sum_{j=i+1}^NA_i*10^{dec(A_j)}+\sum_{i=1}^{N}(i-1)*A_i\)

分开求即可

点击查看代码

abc353_e

题意:定义\(F(x,y)是字符串x和y的最长公共前缀的长度\),求\(\displaystyle\sum_{i=1}^{N-1}\sum_{j=i+1}^{N}F(S_i,S_j)\)

思路:用trie数记录字符串,然后对于每一个字母x的cnt对答案的贡献是\(C_{cnt}^2\)

点击查看代码

标签:AtCoder,题意,Beginner,10,NA,sum,353,dec,displaystyle
From: https://www.cnblogs.com/Danc1ng/p/18188991/AtCoder-Beginner-Contest-353

相关文章

  • 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......
  • 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\)对答案的贡献。......
  • AtCoder Beginner Contest 353
    AtCoderBeginnerContest353A-Buildings求第一个\(h_i\)大于\(h_1\)的位置。模拟。点击查看代码#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;intn,h[103];signedmain(){ cin>>n;cin>>h[1]; for(inti=2;i<=n;i++){ cin&......
  • AtCoder Beginner Contest 353
    A-Buildings(abc353A)题目大意给定\(n\)个数字,输出第一个大于第一个数的下标。解题思路依次与第一个数比较,大于则输出。神奇的代码n=input()a=list(map(int,input().split()))b=[i>a[0]foriina]ifTruenotinb:print(-1)else:print(b.ind......
  • ABC353E字典树处理最长公共前缀
    https://atcoder.jp/contests/abc353/tasks/abc353_e其实就是字典树板子题。似乎遇到最长公共前缀,就该想到字典树。依次加入每个字符串:维护一个数组siz来统计在当前串之前的串在对应点的出现次数。手模一下字典树的建树过程,显然如果当前串\(S_i\)能跑到一个曾经串\(S_......