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(数学贡献法)相关推荐

  1. C. Serval and Toxel‘s Arrays(数学贡献法)

    Problem - C - Codeforces Toxel喜欢数组.在前往帕尔迪亚地区之前,塞瓦尔给了他一个阵列作为礼物.这个数组有n个成对不同的元素.为了获得更多的数组,Toxel对初始数组进行了 ...

  2. LL1分析构造法_16条数学得分法,想提分快来看!

    距离高考不足百日,在注重数学基础的同时,也要注重技巧,好迅速拿分,今天送同学们一份数学得分法,帮助同学们最大限度得分,在高考中取得最高分! 1.圆锥曲线中最后题往往联立起来很复杂导致k算不出,这时你可 ...

  3. 数字图像学笔记——13. 图像退化与复原(退化函数的评估方法:观察法、实验法、数学建模法与湍流导致的退化)

    在对受到多种原因影响的图像进行复原时,我们经常需要先行评估对图像质量产生影响的退化函数,有时甚至需要尝试建模.通过这些手段,能够最大程度上恢复图像上的噪音,并重建高清的图像细节. 文章目录 线性位置不 ...

  4. 比武招亲(上)(思维+贡献法+组合数学隔板法详解)

    https://ac.nowcoder.com/acm/contest/9985/B 思路: 首先贡献法考虑每个数作为最大值出现的次数和最小值出现的次数. 那么最终答案其实是xi作为最大数-xj作为最 ...

  5. P1950 长方形_NOI导刊2009提高(2)[单调栈][贡献法]

    P1950 长方形_NOI导刊2009提高(2) 题意:给你\(n\times m\)的矩形,求没有*的子矩形数量.\(1\leq n,m\leq 1000\). 数据比较弱的题目是luoguP119 ...

  6. 力扣119杨辉三角 II:代码实现 + 方法总结(数学规律法 记忆法/备忘录)

    文章目录 第一部分:题目 第二部分:解法①-数学规律法 2.1 规律分析 2.2 代码实现 2.3 需要思考 第三部分:解法②-记忆法(备忘录) 第四部分:对比总结 第一部分:题目

  7. 考研辅导班视频资料下载_英语_数学_法硕_新传_司考_国考_公考

    考研真题考研基础课考研专业课资料下载 22考研数学 考研英语 法硕 公务员考试 司法考试 新传 22考研数学 考研英语 法硕 公务员考试 司法考试 新传 为了22年考研,从网上收集整理了考研学习资料, ...

  8. 归一法的计算方法讲解_数学归一法是什么能举个具体例子吗

    展开全部 归一化方法有两种形式,一种是把数变为(0,1)之间的小数,一种是把有量纲表达62616964757a686964616fe59b9ee7ad9431333431353337式变为无量纲表达式 ...

  9. 力扣343.整数拆分 数学直觉法

    题目 给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k >= 2 ),并使这些整数的乘积最大化. 返回 你可以获得的最大乘积 . 示例 1: 输入: n = 2 输出: 1 解释: ...

最新文章

  1. 2022-2028年中国钽酸锂单晶行业市场调查分析及投资发展潜力报告
  2. centos 搭建 svn服务器
  3. 在github上面下载文件夹的方法666
  4. 花旗linux 内核 如何调试,揭秘首个运行在Linux平台的核心银行系统
  5. 用javascript来完成显示和隐藏的案例
  6. SublimeText3 插件的使用和本身的配置
  7. windows xp下安装java8(jdk8)-转
  8. Spring Boot @ServletComponentScan 扫描 @WebServlet、@WebFilter、@WebListener
  9. OC_键值编码KVC(Key-Value Coding)
  10. Base64编码的图片在网页中的显示问题的解决
  11. LeGO-LOAM运行kitti数据集
  12. prop-types详解
  13. final_cut_pro基础
  14. Android模仿youtube的拖拽视频效果
  15. 做第三方软件测评的意义
  16. 【学习笔记】H5性能测试
  17. 投票找精英投票网是怎么回事?
  18. ABAP 调用migo
  19. mc服务器控制台发消息,控制台作用介绍及控制台命令大全分享
  20. Ruby的大冒险(2D游戏精品辅导课)----李大数解读

热门文章

  1. 自动化1123和1124学生班链接
  2. 迅为iMX6ULL开发板使用手册资料下载地址
  3. SPOON资源库中查找表
  4. 2、金融平台系统软件整体架构浅谈
  5. 职场人生:一个7年老员工的离职总结:如何打造一个最强大的“自我”
  6. 国内有哪些证券柜台?
  7. 基于图卷积神经网络的城市轨道交通流量预测
  8. windows网络驱动故障错误码56
  9. Autodesk Mudbox
  10. Templates for MS Word by GN Mac(MS Word模板) v5.0.5破解版