首页 > 其他分享 >每日一题-枚举+乘法原理

每日一题-枚举+乘法原理

时间:2022-12-21 13:34:13浏览次数:42  
标签:int ++ 枚举 cnt2 cnt1 ans 一题 乘法

孤独的照片-枚举+乘法原理

void solve() {
	int n;
	string s;
	cin >> n >> s;
	int ans = 0;
	for (int i = 0; i < n; ++i) {
		int l = i - 1, cnt1 = 0;
		
		while (l >= 0 and s[l] != s[i]) {
			l--;
			cnt1 ++;
		}
		
		int r = i + 1, cnt2 = 0; 
		while (r < n and s[r] != s[i]) {
			r++;
			cnt2 ++;
		}
		
		ans += cnt1 * cnt2;
		ans += max(0ll, cnt1 - 1ll) + max(0ll, cnt2 - 1ll);
	}
	
	cout << ans;
}

做法

枚举每头牛作为那个只出现一次的牛, 然后向左右扩展, 以此处为H为例:
a.左边有G, 右边也有, 对答案的贡献为左边的数量乘右边的数量(若一边没有, 则这种情况的贡献为零).
b.只取一边的牛, 如果这边没有, 贡献为零, 否则贡献为数量减一.

复杂度分析

每个点最多访问三次: 枚举其左边时向右扩展访问到, 枚举到本身时访问到, 枚举到右边时向左扩展时访问到.

标签:int,++,枚举,cnt2,cnt1,ans,一题,乘法
From: https://www.cnblogs.com/whose-dream/p/16996028.html

相关文章

  • Python-打印九九乘法口诀
    打印九九乘法口诀比较简单,代码如下所示:#-*-coding:utf-8-*-#for循环,其中range(1,10)取1~9之间的整数,不会取到10#range(1,10)相当于数学中的[1,10),取值范围是前闭......
  • 枚举类
    枚举类枚举类有两种实现方式自定义实现枚举使用enum关键字实现枚举一、自定义实现枚举不需要提供setXXX方法,因为枚举对象值通常为只读。对枚举对象/属性使用fin......
  • 最小二乘法 good
    最小二乘法也称为最小平方法,是一种数据优化技术,它通过最小化误差的平方和寻找数据的最佳函数匹配。最小二乘法最初由高尔顿在创立回归分析的时候提出,现在已经成为探索变量间......
  • 最小二乘法求解线性回归模型
    ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。......
  • C++_数组-结构体-枚举-联合体
    C++1.相同类型的数据01.C++数组(array)是一种顺序容器sequencecontainer,是由单一数据类型元素组成的一个有序集合元素类型元素个数数组名称使用......
  • 【JVM】根节点枚举与安全点
    本文已收录至Github,推荐阅读......
  • 下标模意义下的多项式乘法及其应用
    已知两个数组\(a,b\),求一个数组\(c\),满足\(c_i=\sum_{j+k\equivi(MOD\K)}a_jb_k(MOD\M)\)。这里我们把这个东西称为下标模意义下的多项式乘法。那么这个东西怎么做呢?先......
  • 《我也出一题-火箭反推力》 回复
    《我也出一题-火箭反推力》     https://tieba.baidu.com/p/8188348350   如果 不考虑喷射燃料的温度T,   其实我也不知道这个温度 T  ......
  • 力扣每日一题2022.12.17---1764. 通过连接另一个数组的子数组得到一个数组
    给你一个长度为n 的二维整数数组 groups ,同时给你一个整数数组 nums 。你是否可以从nums 中选出n 个不相交的子数组,使得第i 个子数组与groups[i] (下标从0......
  • 算法篇--枚举
    枚举目录:一、算法思想二、完美立方问题三、生理周期(生物节律)四、假币问题一、算法思想枚举:即对可能的解集合一一列举。枚举算法的实现往往通过使用循环(嵌套)就能......