833——B题题解
题目链接
题目大意:
给一串字符串(只包含0~9),定义一个最优子串的定义:如果该子串同字符种类数大于最最多字符出现数,那么这个子串可以被称为最优子串。
解题思路:
大眼一看这个数据范围他用n^2的算法他不就超时了嘛。确实会超时,不过我们向里面去思考一下,字符因为限制为0~9了,所以子串超过100的时候他一定不是最优子串,所以我们枚举的n^2就变成了100*n了,这样我们呢就可以用朴素算法过了这道题目了。
总结:
遇到问题不要慌,当他数据量很大的时候他就会有两道路去优化
- 去寻找更高效的算法,如:n^2 -> nlog(n)
 - 去进行剪枝优化。
 
本题AC代码:
#include<bits/stdc++.h>
#define L(i, j, k) for(int i = (j); i <= (k); ++i)
#define R(i, j, k) for(int i = (j); i <= (k); --i)
#define ll long long
#define sz(a) ((int) (a).size())
#define vi vector< int >
#define me(a, x) memset(a, x, sizeof(a))
#define ull unsigned long long
using namespace std;
const int N = 1e5 + 7;
int n, m, t;
int a[N];
char s[N];
int st[20];
void Main()
{
	cin >> n;
	cin >> (s + 1);
	L(i, 1, n)
		{
			a[i] = s[i] -'0';
		}
	int res = 0;
	L(i, 1, n)
		{
			me(st, 0);
			int cnt = 0, mx = 0;
			for(int j = i; j <= min(n, i + 99); j ++ )
			{
				if(!st[a[j]])
				{
					st[a[j]] = 1;
					cnt ++;
					mx = max(mx, st[a[j]]);
				}
				else
				{
					st[a[j]] ++;
					mx = max(mx, st[a[j]]);
				}
				if(cnt >= mx) res ++ ;
			}
		} 
	cout << res << '\n';
}
int main(){
	ios :: sync_with_stdio(false);
	cin.tie(0);cout.tie(0);
	cin >> t;
	while(t--) Main();
	return 0;
}
/* stuff you should look for 你应该寻找的东西
 * int overflow, array bounds (int)溢出,数组边界
 * special cases (n=1?) 特殊情况(n=1?)
 * do smth instead of nothing and stay organized 做一些事情而不是什么也不做,保证效率
 * WRITE STUFF DOWN 将东西写下
 * DON'T GET STUCK ON ONE APPROACH 不要在一个地方死磕
 */												
											833——B题题解的更多相关文章
- ACM ICPC 2018 青岛赛区 部分金牌题题解(K,L,I,G)
		
目录: K Airdrop I Soldier Game L Sub-cycle Graph G Repair the Artwork ———————————————————— ps:楼主脑残有点严 ...
 - 10.9 guz模拟题题解
		
感谢@guz 顾z的题题解 考试共三道题,其中 第一题help共10个测试点,时间限制为 1000ms,空间限制为 256MB. 第二题escape共20个测试点,时间限制为1000ms2000ms, ...
 - 【ZROI 537】贪心题 题解
		
[ZROI 537]贪心题 题解 Link Solution 最大的一边直接放到一起贪心即可 着重讲小的一边 已知对于二分图匹配,其答案即为最大流 令时间集合为 \(T = {1,2,3,\dots, ...
 - Codeforces Round #612 (Div. 2) 前四题题解
		
这场比赛的出题人挺有意思,全部magic成了青色. 还有题目中的图片特别有趣. 晚上没打,开virtual contest打的,就会前三道,我太菜了. 最后看着题解补了第四道. 比赛传送门 A. An ...
 - Hello2020(前四题题解)
		
Hello,2020!新的一年从快乐的掉分开始…… 我在m3.codeforces.com这个镜像网站中一开始还打不开D题,我…… 还有话说今天这场为什么那么多二分. 比赛传送门:https://co ...
 - Codeforces Round #524 (Div. 2)(前三题题解)
		
这场比赛手速场+数学场,像我这样读题都读不大懂的蒟蒻表示呵呵呵. 第四题搞了半天,大概想出来了,但来不及(中途家里网炸了)查错,于是我交了两次丢了100分.幸亏这次没有掉rating. 比赛传送门:h ...
 - Educational Codeforces Round 53 (Rated for Div. 2) (前五题题解)
		
这场比赛没有打,后来补了一下,第五题数位dp好不容易才搞出来(我太菜啊). 比赛传送门:http://codeforces.com/contest/1073 A. Diverse Substring ...
 - Lyft Level 5 Challenge 2018 - Final Round (Open Div. 2) (前三题题解)
		
这场比赛好毒瘤哇,看第四题好像是中国人出的,怕不是dllxl出的. 第四道什么鬼,互动题不说,花了四十五分钟看懂题目,都想砸电脑了.然后发现不会,互动题从来没做过. 不过这次新号上蓝名了(我才不告诉你 ...
 - Codeforces Round #519 by Botan Investments(前五题题解)
		
开个新号打打codeforces(以前那号玩废了),结果就遇到了这么难一套.touristD题用了map,被卡掉了(其实是对cf的评测机过分自信),G题没过, 700多行代码,码力惊人.关键是这次to ...
 - Good Bye 2019(前五题题解)
		
这套也是后来补得. 我太菜了,第三题就卡着了.想了好久才做出来,要是参加了绝对掉分. D题是人生中做完的第一道交互题,不容易. 比赛传送门 A.Card Game 题目大意:一共有n张互不相同的牌,玩 ...
 
随机推荐
- docker容器数据卷的使用
			
什么是容器数据卷 docker的理念回顾 将应用和运行的环境打包形成容器运行,运行可以伴随着容器,但是我们对于数据的要求,是希望能够持久化的! 就好比,你安装一个MySQL,结果你把容器删了,就相当于 ...
 - Spring_事务总结
			
Spring 事务总结 rollbackFor 设为 Exception.class场景下 如果在函数内部catch住异常消费掉,没有再抛出的话,不会回滚 如果catch住 然后原封不动抛出,会回滚 ...
 - Filebeat Nginx Module 自定义字段
			
Filebeat Nginx Module 自定义字段 一.修改/usr/local/nginx/conf/nginx.conf中 log_format access '$remote_addr - ...
 - Base64加密、解密
			
#region Base64加密方法 /// <summary> /// Base64加密,采用utf8编码方式加密 /// </summary> /// <param ...
 - 8.云原生之Docker容器镜像构建最佳实践浅析
			
转载自:https://www.bilibili.com/read/cv15220861/?from=readlist 本章目录 0x02 Docker 镜像构建最佳实践浅析 1.Dockerfile ...
 - 单机部署minio,设置Nginx代理,配置https(TLS)访问
			
安装 下载地址:https://dl.min.io/ # 创建目录 mkdir -p /usr/local/minio/{data,bin,etc} # 下载minio wget https://dl ...
 - 第四章:Django表单 - 3:Django表单字段汇总
			
Field.clean(value)[source] 虽然表单字段的Field类主要使用在Form类中,但也可以直接实例化它们来使用,以便更好地了解它们是如何工作的.每个Field的实例都有一个cle ...
 - 第六章:Django 综合篇 - 4:django-admin和manage.py
			
目录 一.Django内置命令选项 check dbshell diffsettings flush makemigrations migrate runserver shell startapp s ...
 - prettierrc格式化常用配置
			
#最大长度 printWidth: 140 #单引号 singleQuote: true tabWidth: 2 useTabs: false # 句尾添加分号 semi: false # js an ...
 - 微信小程序发布与支付
			
一.小程序的发布流程 小程序协同工作和发布官网链接 1.背景 小程序的平台里,开发者完成开发之后,需要在开发者工具提交小程序的代码包,然后在小程序后台发布小程序. 2.流程 上传代码 代码管理服务器上 ...