专栏文章
solution - CF1422C
CF1422C题解参与者 2已保存评论 1
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mipnwc4u
- 此快照首次捕获于
- 2025/12/03 15:04 3 个月前
- 此快照最后确认于
- 2025/12/03 15:04 3 个月前
补背包 。
但是好像不是背包()也不知道为啥教练把这道题放到背包题单里……
Solution
首先拆贡献,考虑一个数 ( 从大到小弟 位)会产生多少贡献。
那么分两种情况讨论。
- 若删除的区间在 前面:这时候 的贡献是不变的,即 ,于是数一下 前面的情况数即可。
- 若删除的区间在 后面:假设删除区间的长度为 ,那么 的贡献就是 ,可以发现 和区间个数之间是有规律的, 每 ,区间个数 ,于是每个 所对应的相同 的区间个数都是相同的,后缀处理即可。
时间复杂度 。
Code
CPPint n,a[N],pw10[N];
signed main()
{
pw10[0]=1; rep(i,1,N-1) pw10[i]=mod_(pw10[i-1]*10);
string s; read(s),n=s.size();
rep(i,1,n) a[i]=s[i-1]-'0';
int ans=0,tmp=0;
rep(i,1,n) i && add(tmp,i-1),add(ans,mod_(a[i]*tmp*pw10[n-i]));
tmp=0;
rpe(i,n,1) i && add(tmp,mod_((n-i)*pw10[n-i-1])),add(ans,mod_(tmp*a[i]));
write(ans);
return 0;
}
华风夏韵,洛水天依!
相关推荐
评论
共 1 条评论,欢迎与作者交流。
正在加载评论...