牛客-F.牛牛的Link Power I - TT3E

pixel-Teee 2021-08-27 原文


牛客-F.牛牛的Link Power I


题目链接:[https://ac.nowcoder.com/acm/contest/3004/F]

第一种做法
统计每个位置产生的贡献,不只是1,包括0的位置,如下

0的位置上的贡献等于前面位置上的贡献+前面1的个数,这样,我们如果遇到了1,我们就累加到答案中。这样的好处是我们不需要再开一个变量,记录1和1之间隔了多少个位置,然后再统计这个位置上的贡献等于前面的贡献加上这个变量乘以前面1的个数。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;
const int MAXN = 100005;
const long long mod = 1e9 + 7;
char s[MAXN];
int n;
long long sum, cnt, ans;

int main()
{
	scanf("%d", &n);
	scanf("%s", s + 1);
	for (int i = 1; i <= n; ++i)
	{
		sum = (sum + cnt) % mod;
		if (s[i] == \'1\')
		{
			ans = (ans + sum) % mod;
			++cnt;
		}
	}
	printf("%lld\n", ans);
	return 0;
}

另一种做法,记录1和1之间的距离

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;
const int mod = 1e9 + 7;
const int N = 100005;
char str[N];
int p[N];
int sum[N];
int main()
{
	int n;
	scanf("%d", &n);

	scanf("%s", str + 1);

	//前面1的个数,当前1和之前的距离
	int cnt1 = 0, cnt2 = 0;
	for (int i = 1; i <= n; ++i)
	{
		sum[i] = sum[i - 1];

		if (str[i] == \'0\')
		{
			++cnt2;
			p[i] = p[i - 1];
		}
		else
		{
			++cnt2;
			p[i] = (p[i - 1] + cnt1 * cnt2) % mod;
			sum[i] = (sum[i] + p[i]) % mod;
			cnt2 = 0;
			++cnt1;
		}	
	}

	cout << sum[n] << endl;
	


	return 0;
}
发表于
2020-02-09 18:18 
TT3E 
阅读(103
评论(0
编辑 
收藏 
举报

 

版权声明:本文为pixel-Teee原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/pixel-Teee/p/12288006.html

牛客-F.牛牛的Link Power I - TT3E的更多相关文章

  1. 对称加密与非对称加密 – scott_h

    对称加密与非对称加密 对称加密 非对称加密 程序代码中我用的是对称加密。 (加密、解密都是一个密钥) RPC中 […]...

  2. 从壹开始 [ Ids4实战 ] 之六 ║ 统一角色管理(上)

    前言 书接上文,咱们在上周,通过一篇《思考》 性质的文章,和很多小伙伴简单的讨论了下,如何统一同步处理角色的问 […]...

  3. linux 安装中文包和设置中文环境 – DJ IN MUSIC

    linux 安装中文包和设置中文环境 redhat系统安装中文语言支持包redhat系统安装中文语言支持包。用 […]...

  4. MyHome3D在线装修设计软件测评 – 超超级程序员

    MyHome3D在线装修设计软件测评 MyHome3D在线设计软件是首款免费的绿色在线家装交互设计软件,不仅能 […]...

  5. 腾讯云TDSQL MySQL版 – 开发指南 二级分区

    TDSQL MySQL版 目前支持 Range 和 List 两种格式的二级分区,具体建表语法和 MySQL […]...

  6. 机器学习技法笔记:13 Deep Learning – cherrychenlee

    机器学习技法笔记:13 Deep Learning 原文地址:https://www.jianshu.com/ […]...

  7. ARCGIS对谷歌影像进行投影转换 – 于谦儿子郭小宝

    相信有不少同学会有这样的困扰,通过软件下载的谷歌遥感影像,直接用ARCGIS等专业软件打开之后发现,遥感影像有 […]...

  8. [c#][福利]BTTool种子文件修改工具 – Yosef Gao

    [c#][福利]BTTool种子文件修改工具 前言 不知道各位看官是否有过类似的经历。好不容易找到一个电影的种 […]...

随机推荐

  1. RC上电复位时间计算

    RC上电复位时间计算 高电平复位电路图 V0 为电容上的初始电压值;V1 为电容最终可充到或放到的电压值;Vt […]...

  2. Python-PhantomJS的安装和使用 – caizigary

    Python-PhantomJS的安装和使用 PhantomJS无需浏览器的Web测试: PhantomJS官 […]...

  3. web离线应用

    离线应用 1.0 离线应用说明 ​ 支持离线Web应用是一个重点,离线就是在设备没有网络的情况下依然可以运行的 […]...

  4. 金融数据分析与挖掘具体实现方法 -2

    貌似三个月没有更新博客园了,当时承诺的第二篇金融数据分析与挖掘这几天刚好又做了总结,在国内经济不景气的现在来对 […]...

  5. 在线翻译工具 – Soul

    在线翻译工具 Google在线翻译 ( 英语 翻译成 中文简体 BETA )     altavista 在线 […]...

  6. Python爬虫之使用Fiddler+Postman+Python的requests模块爬取各国国旗

    Python爬虫之使用Fiddler+Postman+Python的requests模块爬取各国国旗 介绍   […]...

  7. Word使用技巧

     1.2 编辑排版技巧(1)1.2.1  页面设置快速进行调整要对Word进行页面调整,通常大家采用的方法是选 […]...

  8. C# GDI+绘图 z

    一、坐标系   坐标系是图形设计的基础。GDI+使用三个坐标空间:世界、页面和设备,其中,世界坐标是用于建立特 […]...

展开目录

目录导航