牛客-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. Framework-Res.apk 反编译、编译、打包、替换详细教程 – PunCha

    Framework-Res.apk 反编译、编译、打包、替换详细教程 本文来自:http://www.anzh […]...

  2. C# 远程链接指定计算机,获取该计算机的计算机名等信息 – 94cool

    C# 远程链接指定计算机,获取该计算机的计算机名等信息 using System;using System.M […]...

  3. [SQL] SQL 基础知识梳理(一)- 数据库与 SQL

    SQL 基础知识梳理(一)- 数据库与 SQL 【博主】反骨仔    【原文地址】http://www.cnb […]...

  4. 余弦相似度Cosine Similarity相关计算公式 – 蝈蝈俊

    余弦相似度,又称为余弦相似性,是通过测量两个向量的夹角的余弦值来度量它们之间的相似性。 两个方向完全相同的向量 […]...

  5. Axure下拉列表的交互事件 + 自定义元件库

    下拉列表的交互事件: 场景:当点击第一个下拉列表框的江苏时,第二个列表框会显示江苏省的城市;当点击第一个下拉列 […]...

  6. oracle定时器在项目中的应用 – 人生24k

    oracle定时器在项目中的应用 oracle定时器在项目中的应用 业务需求: 现在业务人员提出了一个需求: […]...

  7. flex 学习篇 —- Spring BlazeDS Integration的使用

        到目前为止,网上的大部分内容都是旧的,然后各位网友都在拼命的复制黏贴那些旧内容,导致新的东西几乎被覆盖 […]...

  8. 如何申请华为开发者 – 0C°

    如何申请华为开发者 华为开发者联盟。。。 posted on 2019-08-13 10:08  0C°  阅 […]...

随机推荐

  1. 三角函数的正交性为什么要用积分表示 – 技术蛀虫

    三角函数的正交性为什么要用积分表示 函数的正交是向量正交的推广,函数可看成无穷维向量,在n维空间中两向量正交是 […]...

  2. javaweb学习4——HttpServletRequest的使用

    声明:本文只是自学过程中,记录自己不会的知识点的摘要,如果想详细学习JavaWeb,请到孤傲苍狼博客学习,Ja […]...

  3. cxf处理java bean及List、Map类型

    cxf处理java bean及List、Map类型       项目中经常是处理复合类型比如集合List、Ma […]...

  4. 激活码方式注册的实现原理述

    激活码方式注册的实现原理述 加密混淆授权  1. 软件授权方式概述 目前,商用软件和共享软件绝大部份都是采用注 […]...

  5. linux搭建datax、datax-web

    linux搭建datax、datax-web一、所需组件1、jdk1.82、mysql5.73、python2.74、datax5、datax-web二、开始安装1、安装jdkmkdir -p /export/server...

  6. JAVA项目实战-微信小程序服务端开发(二) – 追风筝的人123

    JAVA项目实战-微信小程序服务端开发(二) 本节继续分享微信小程序端,实现小程序服务端图片识别功能,包括:识 […]...

  7. eclipse中配置Tomcat服务器以及新建项目 – 扬帆起航-梦起者

    eclipse中配置Tomcat服务器以及新建项目 eclipse配置Tomcat服务器以及配置中常见的问题, […]...

  8. Mac 常用软件、快捷健、常用操作 和 Windows 对比

    常用快捷健MacWindows说明活动监视器任务管理器制作替身创建快捷方式Command + I右击属性显示简介Command + Option + I开启信息检查器 + 鼠标选文件Command + J查看显示选项Comma...

展开目录

目录导航