Warning: session_start(): open(/tmp/sess_0f744f0ab12aa36626e4f8caffdc29b9, O_RDWR) failed: No space left on device (28) in /data/wiki/inc/init.php on line 239

Warning: session_start(): Failed to read session data: files (path: ) in /data/wiki/inc/init.php on line 239

Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/inc/auth.php on line 430
Writing /data/wiki/data/cache/d/de2edb2fcb553ea79b79c722a4e13dbc.captchaip failed

Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/inc/actions.php on line 38

Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/lib/tpl/dokuwiki/main.php on line 12
2020-2021:teams:manespace:2020_08_01-2020_08_07周报_week13 [CVBB ACM Team]

用户工具

站点工具


2020-2021:teams:manespace:2020_08_01-2020_08_07周报_week13

2020/08/01–2020/08/07周报(week13)

本周推荐

by iuiou

  • 题意:给1-n的一串数,有m次操作,每次操作给一段区间,
  • 知识点:
  • 题解

by QuantumBolt

  • 题源
  • 题意
  • 知识点
  • 题解

团队训练

2020.8.1 牛客多校第七场

2020.8.3 牛客多校第八场

2020.8.6 加训第二场

范泽恒

专题

  • 01trie,可持久化01 trie

比赛

题目

恭天祥

专题

比赛

题目

刘怀远

专题

比赛

题目

  • cf 656 Problem-D:a-Good String
    1. 题意:多组数据,给定长为n的字符串(n为2的整数次方),输出将其变成“a - good string”最少需要改动的字符数。以ch代指字母,“ch - good string”定义为:(1)长为1且字符为ch;(2)长大于一,且二分后左边字符全为ch,右边为“(ch+1)- good string”;(3)长大于一,且二分后右边字符全为ch,左边为“(ch+1)- good string”。
    2. 题解: 经典二分dfs,维护最小代价即可。

为什么这破题当初能卡那么久

ac代码

ac代码

#include<bits/stdc++.h>
using namespace std;
 
typedef long long ll;
const int maxn = 2e5 + 5;
const double pi = acos(-1);
const int mod = 998244353;
 
int t, n;
char s[131074];
 
int cal(int l, int r, int c){
	int cnt = 0;
	for(int i = l; i <= r; ++i) if(s[i] != c) ++cnt;
	return cnt;
}
 
int dfs(int l, int r, char c){
	if(l == r) return s[l] != c;
	int res = 3e7;
	int mid = (l + r) >> 1;
	res = min(res, dfs(l, mid, c + 1) + cal(mid + 1, r, c));
	res = min(res, dfs(mid + 1, r, c + 1) + cal(l, mid, c));
	return res;
}
 
int main(){
	scanf("%d", &t);
	while(t--){
		scanf("%d\n", &n);
		scanf("%s", s + 1);
		printf("%d\n", dfs(1, n, 'a'));
	}
} 
2020-2021/teams/manespace/2020_08_01-2020_08_07周报_week13.1596782520.txt.gz · 最后更改: 2020/08/07 14:42 由 iuiou