C. Bargain(数学贡献法)

news2024/9/23 7:18:32

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/12504.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[R]第二节 练习一关于数值向量

1.产生一个等差数列(1,3,5,7,……,99)赋值给向量x x <- array(seq(from1, to99, by2)) seq函数解析 seq(from,to,length)该函数的意思是生成一组数字&#xff0c;从from开始&#xff0c;到to结束&#xff0c;每两个数间的间隔是length,如: seq(2,10,2),会生成一组数&…

ROS1学习笔记:服务中的Service和Client(ubuntu20.04)

参考B站古月居ROS入门21讲&#xff1a; 客户端Client的编程实现 服务端Server的编程实现 基于VMware Ubuntu 20.04 Noetic版本的环境 文章目录一、小乌龟例程中的服务二、创建功能包三、创建Client代码3.1 以C为例3.1.1 配置Client代码编译规则3.1.2 编译整个工作空间3.1.3 配置…

12 张图看懂 CPU 缓存一致性与 MESI 协议,真的一致吗?

本文已收录到 GitHub AndroidFamily&#xff0c;有 Android 进阶知识体系&#xff0c;欢迎 Star。技术和职场问题&#xff0c;请关注公众号 [彭旭锐] 进 Android 面试交流群。 前言 大家好&#xff0c;我是小彭。 在上一篇文章里&#xff0c;我们聊到了 CPU 的三级缓存结构…

测试工作3年还在基础岗?可能只是因为你的工作能力差

对于职场人而言&#xff0c;工作中升职加薪是每个人都梦寐以求的事情&#xff0c;但有些小伙伴表示&#xff0c;自己来到一个公司三年&#xff0c;却依旧停留在基础岗位上&#xff0c;究竟是什么原因呢&#xff1f; 其实从根本来说&#xff0c;很有可能只是因为&#xff1a;你…

Spring Boot日志配置及输出

1.日志框架有哪些&#xff1f; 常见的日志框架有log4j、logback、log4j2。 log4j这个日志框架显示是耳熟能详了&#xff0c;在Spring开发中是经常使用&#xff0c;但是据说log4j官方已经不再更新了&#xff0c;而且在性能上比logback、log4j2差了很多。 logback是由log4j创始…

WebRTC系列<四> 全面了解客户端-服务器网页游戏的WebRTC

转载&#xff1a;https://blog.brkho.com/2017/03/15/dive-into-client-server-web-games-webrtc/ 多人游戏很有趣。对于他们在单人沉浸感方面所缺乏的东西&#xff0c;在线游戏弥补了与朋友一起探索、在线结识陌生人以及与有能力的同龄人正面交锋的独特奖励体验。人们只需要看…

C# Control.DoubleBuffered 属性的使用

C# Control.DoubleBuffered 属性的使用 在我们开发的过程中,经常需要对界面进行美化,而美化的过程,一般来说就是添加图片, 让界面更加清新脱俗,更加耳目一新。 有一次有一个软件发送到客户那里试用,客户对功能是非常满意的,但是对界面的布局和颜色,就大为不满。 原来…

【Hack The Box】windows练习-- Resolute

HTB 学习笔记 【Hack The Box】windows练习-- Resolute &#x1f525;系列专栏&#xff1a;Hack The Box &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f334;2022年9月7日&#x1f334; &#x1…

uniapp picker 的使用,这玩意做的真不怎么样

uniapp picker 的使用&#xff0c;这玩意做的真不怎么样 最近要做小程序&#xff0c;考虑到需要多平台都用一套东西&#xff0c;就选用了 uniapp。 在写表单的时候用到它的 picker 组件&#xff0c;看官方文档楞是没看明白怎么用&#xff0c;试了半天没试出来&#xff0c;还是…

每日一题 —— LC. 790 多米诺和托米诺

有两种形状的瓷砖&#xff1a;一种是 2 x 1 的多米诺形&#xff0c;另一种是形如 “L” 的托米诺形。两种形状都可以旋转。 给定整数 n &#xff0c;返回可以平铺 2 x n 的面板的方法的数量。返回对 10^9 7 取模 的值。 平铺指的是每个正方形都必须有瓷砖覆盖。两个平铺不同&…

数据集成平台关于【源平台调度任务生命周期】

任务调度者 调度事件生产任务调度任务池-异步
AsynDispatcher --source 实例化适配器执行 消费任务实例化集成应用 DataHub Instance
handleSourceDispatch()依赖注入集成方案适配器调度条件检查执行适配器调度方法联动其它方案调度任务 SourceEvent 适配器调度周期 初始化…

化合物应用 | 动物实验溶剂选择

在给药时为了实现药物准确运送到动物体内、减少溶剂本身的副作用和毒性等的目标&#xff0c;需要选择合适的溶剂配方。溶剂的理化性质&#xff0c;如 pH、粘稠度、渗透压等都会对给药产生影响&#xff0c;需要慎重考虑。例如粘稠度过高可能会导致注射用针头的堵塞&#xff0c;粘…

作为新人,如何快速融入新团队?用好这8个点

大家好&#xff0c;之前在公司调岗&#xff0c;转到了新团队。 从一开始的不适应、不习惯&#xff0c;到现在的逐步习惯&#xff0c;真的就是和那句老话说的一样「有压力才会有成长」&#xff0c;下面晨光会结合在新团队学到的内容进行分享。 文章分为以下几个部分&#xff1…

通过云速搭CADT实现云原生分布式数据库PolarDB-X 2.0的部署

云速搭 CADT 是一款为上云应用提供自助式云架构管理的产品&#xff0c;显著地降低应用云上管理的难度和时间成本。本产品提供丰富的预制应用架构模板&#xff0c;同时也支持自助拖拽方式定义应用云上架构&#xff1b;支持较多阿里云服务的配置和管理。用户可以方便的对云上架构…

人力资源数字化转型,是企业高质量发展的关键

情景一 中层管理者&#xff0c;每天不是在开会&#xff0c;就是在帮下属解决问题&#xff0c;时间被搞的一团乱麻&#xff1b; 为了顺利推进项目&#xff0c;总是把自己逼成卷王&#xff0c;即使如此也没能挽救业绩下滑的命运。 情景二 由于业务能力出色被提拔带团队的新晋…

计算机网络-传输层(UDP协议报文格式,伪首部,UDP校验过程)

文章目录1. UDP协议UDP报文格式UDP校验过程1. UDP协议 UDP只在IP数据报服务之上增加了很少功能&#xff0c;即复用分用和差错检测功能。 UDP的主要特点: UDP是无连接的&#xff0c;减少开销和发送数据之前的时延。 UDP使用最大努力交付&#xff0c;即不保证可靠交付。 UDP是…

webpack5 Preload / Prefetch解决按需求加载速度

代码分离 | webpack 中文文档webpack 是一个模块打包器。它的主要目标是将 JavaScript 文件打包在一起&#xff0c;打包后的文件用于在浏览器中使用&#xff0c;但它也能够胜任转换&#xff08;transform&#xff09;、打包&#xff08;bundle&#xff09;或包裹&#xff08;pa…

vue_mixin混入

目录官网基本概念什么是Mixin混入和组件的区别混入和vuex的区别mixin的优点mixin的缺点使用mixin语法mixin局部混入-mixins全局混入-Vue.mixin方法(不推荐)mixin与组件合并逻辑[1]data数据总结举例说明[2]methods方法总结举例说明[3]生命周期函数总结举例说明问题&#xff1a;一…

Linux 进程信号

目录 一.信号 1.介绍 2.信号概念 3.查看系统定义的信号列表 4.信号处理的方式 二.信号产生前 1.用户层产生信号的方式 三.产生信号 1.通过按键产生信号 2.调用系统函数向进程发信号 &#xff08;1&#xff09;kill &#xff08;2&#xff09;raise &#xff08;…

大学生WEB前端静态网页——旅游介绍35页 响应式,

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材&#xff0c;DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 游景点介绍 | 旅游风景区 | 家乡介绍 | 等网站的设计与制作| HTML期末大学生网页设计作业&#xff0c;Web大学生网页 HTML&#xff1a;结构 CSS&…