C. Bargain(数学贡献法)
Problem - 1422C - Codeforces
有时,要在讨价还价中达成协议并不容易。现在,萨沙和沃瓦就无法达成协议。萨沙说出了一个尽可能高的价格,然后沃瓦想从这个价格中删除尽可能多的数字。更详细地说,Sasha说出某个整数的价格n,Vova从价格中删除一个非空的(连续的)数字子串,剩下的数字缩小差距,得到的整数就是价格。
例如,Sasha的名字是1213121,Vova可以删除子串1312,结果是121。
允许结果包含前导零。如果Vova去掉了所有的数字,那么价格就被认为是0。
Sasha想提出一些约束条件,使Vova不能直接删除所有数字,但他需要一些支持这些约束条件的论据。首先,他想计算出沃瓦移动后所有可能产生的价格之和。
帮助萨沙计算这个总和。由于答案可能非常大,请将其打印成109+7的模数。
输入
第一行也是唯一一行包含一个整数n(1≤n<10105)。
输出
在唯一的一行中,打印所需的109+7模数的和。
例子
输入
107
outputCopy
42
输入
100500100500
输出
428101984
注意
考虑一下第一个例子。
Vova可以选择删除1、0、7、10、07或107。结果是07、17、10、7、1、0,它们的总和是42。
题解:
这里引入一个概念数学贡献法:一个数的部分对于答案的贡献
对于第i位,我们只考虑它本身对于答案的贡献
举个例子:428101984 中的9
1.删除9前面的位数
我们可以发现无论删去9前面的任何数,9对答案的贡献都是不变的,都是900
那我们就考虑,有多少种删除方式即可
可以转换下概念,对于i-1长度的区间删去,一个区间,肯定要有首尾,相当于任取一位当首,在取一位当尾,就应该是(i - 1)*i种
贡献为(i-1)*i*s[i]*p
p是当前前是什么位(10的多少次方)
2.删除他后面的位数
举个例子。
8 4 3 2 1
对1来说,后面没有,那么贡献是0
对2来说,后面拿1,贡献是2
对3来说,后面拿1和2,贡献是3,后面拿1,贡献是30,后面拿2,贡献是30.
对4来说,后面拿123,贡献是4;后面拿23,21,贡献是40,40;后面拿3,2,1,贡献是400,400,400;
3.删除他本身
都删除本身了,对结果肯定是没有影响的,所以不考虑
(有点像DP对于本身分析)
#include<iostream>
#include<algorithm>
#include<map>
#include<queue>
#include<vector>
#include<cstring>
using namespace std;
char s[300050];
void solve()
{cin >> s+1;long long ans = 0;int n = strlen(s+1);int mod = 1e9+7;long long sum = 0;long long p = 1;for(long long i = n;i >= 1;i--){long long now = i*(i-1)/2;//删前面有多少种情况ans = (ans+now*(s[i]-'0')%mod*p%mod)%mod;//删i前面对结果贡献ans = (ans + sum*(s[i]-'0')%mod)%mod; //删i后面对结果贡献sum = (sum + (n-i+1)*p%mod)%mod;//删除后面推导的公式模拟p = p*10%mod;//记录位数}cout<<ans;}
int main()
{int t = 1;
// cin >> t;while(t--){solve();}
}
//
//abcdef
//babcdef
//babcdefedcba
C. Bargain(数学贡献法)相关推荐
- C. Serval and Toxel‘s Arrays(数学贡献法)
Problem - C - Codeforces Toxel喜欢数组.在前往帕尔迪亚地区之前,塞瓦尔给了他一个阵列作为礼物.这个数组有n个成对不同的元素.为了获得更多的数组,Toxel对初始数组进行了 ...
- LL1分析构造法_16条数学得分法,想提分快来看!
距离高考不足百日,在注重数学基础的同时,也要注重技巧,好迅速拿分,今天送同学们一份数学得分法,帮助同学们最大限度得分,在高考中取得最高分! 1.圆锥曲线中最后题往往联立起来很复杂导致k算不出,这时你可 ...
- 数字图像学笔记——13. 图像退化与复原(退化函数的评估方法:观察法、实验法、数学建模法与湍流导致的退化)
在对受到多种原因影响的图像进行复原时,我们经常需要先行评估对图像质量产生影响的退化函数,有时甚至需要尝试建模.通过这些手段,能够最大程度上恢复图像上的噪音,并重建高清的图像细节. 文章目录 线性位置不 ...
- 比武招亲(上)(思维+贡献法+组合数学隔板法详解)
https://ac.nowcoder.com/acm/contest/9985/B 思路: 首先贡献法考虑每个数作为最大值出现的次数和最小值出现的次数. 那么最终答案其实是xi作为最大数-xj作为最 ...
- P1950 长方形_NOI导刊2009提高(2)[单调栈][贡献法]
P1950 长方形_NOI导刊2009提高(2) 题意:给你\(n\times m\)的矩形,求没有*的子矩形数量.\(1\leq n,m\leq 1000\). 数据比较弱的题目是luoguP119 ...
- 力扣119杨辉三角 II:代码实现 + 方法总结(数学规律法 记忆法/备忘录)
文章目录 第一部分:题目 第二部分:解法①-数学规律法 2.1 规律分析 2.2 代码实现 2.3 需要思考 第三部分:解法②-记忆法(备忘录) 第四部分:对比总结 第一部分:题目
- 考研辅导班视频资料下载_英语_数学_法硕_新传_司考_国考_公考
考研真题考研基础课考研专业课资料下载 22考研数学 考研英语 法硕 公务员考试 司法考试 新传 22考研数学 考研英语 法硕 公务员考试 司法考试 新传 为了22年考研,从网上收集整理了考研学习资料, ...
- 归一法的计算方法讲解_数学归一法是什么能举个具体例子吗
展开全部 归一化方法有两种形式,一种是把数变为(0,1)之间的小数,一种是把有量纲表达62616964757a686964616fe59b9ee7ad9431333431353337式变为无量纲表达式 ...
- 力扣343.整数拆分 数学直觉法
题目 给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k >= 2 ),并使这些整数的乘积最大化. 返回 你可以获得的最大乘积 . 示例 1: 输入: n = 2 输出: 1 解释: ...
最新文章
- 2022-2028年中国钽酸锂单晶行业市场调查分析及投资发展潜力报告
- centos 搭建 svn服务器
- 在github上面下载文件夹的方法666
- 花旗linux 内核 如何调试,揭秘首个运行在Linux平台的核心银行系统
- 用javascript来完成显示和隐藏的案例
- SublimeText3 插件的使用和本身的配置
- windows xp下安装java8(jdk8)-转
- Spring Boot @ServletComponentScan 扫描 @WebServlet、@WebFilter、@WebListener
- OC_键值编码KVC(Key-Value Coding)
- Base64编码的图片在网页中的显示问题的解决
- LeGO-LOAM运行kitti数据集
- prop-types详解
- final_cut_pro基础
- Android模仿youtube的拖拽视频效果
- 做第三方软件测评的意义
- 【学习笔记】H5性能测试
- 投票找精英投票网是怎么回事?
- ABAP 调用migo
- mc服务器控制台发消息,控制台作用介绍及控制台命令大全分享
- Ruby的大冒险(2D游戏精品辅导课)----李大数解读