【dp/贪心】CF 780 (Div. 3), problem: (C) Get an Even String
难度: 1300

6
aabbdabdccc
zyx
aaababbb
aabbcc
oaoaaaoo
bmefbmuyw
3
3
2
0
2
7
开始没调出来, 去看DE了, 就不该往后看, 但是当时思维没跳出来, 也不一定做出来, 呜呜
当时是想着每次更新需要看前一次什么时候有这个字母
此题重要一点更新就是, 越靠前进行配对的字母才是最优, 把问题转化一下, n-配对的字母数即为结果,
这里贴两个代码, 第一个是小小不像dp的dp; 第二个是小小思维,这样做题感觉就简单了
代码一
#include <iostream>
#include <bits/stdc++.h> using namespace std;
typedef long long LL;
const int N = 2e5+10; int f[N];
char s[N]; int main()
{
int t;
// scanf("%d", &t);
cin >> t;
while(t --)
{
scanf("%s", s+1);//这种方法为了后面方便, 建议字符串从1开始
int cnt = 0;
int n=0; map<char,int> mp, l; f[0]=0;
for(int i = 1; s[i];i++)
{
f[i]=f[i-1]+1;
if(l[s[i]] && i>=l[s[i]])
if(f[i]>f[l[s[i]]-1]+i-l[s[i]]-1)
{
f[i] = f[l[s[i]]-1]+i-l[s[i]]-1;
l.clear();
} l[s[i]]=i;
n=i;
}
cout << f[n]<<'\n';
}
return 0; }
代码二
#include <iostream>
#include <bits/stdc++.h> using namespace std;
typedef long long LL;
const int N = 2e5+10;
int be[30];
int f[N];
int main()
{
int t;
// scanf("%d", &t);
cin >> t;
string s;
while(t --)
{
cin >> s;
int cnt = 0;
int n = s.size(); map<char,int> mp;
for(int i = 0; i<n;i++)
{
mp[s[i]]++;
if(mp[s[i]]==2) cnt ++, mp.clear();
}
cout << n-cnt*2<<'\n';
}
return 0; }
【dp/贪心】CF 780 (Div. 3), problem: (C) Get an Even String的更多相关文章
- CF #374 (Div. 2) D. 贪心,优先队列或set
1.CF #374 (Div. 2) D. Maxim and Array 2.总结:按绝对值最小贪心下去即可 3.题意:对n个数进行+x或-x的k次操作,要使操作之后的n个数乘积最小. (1)优 ...
- CF #374 (Div. 2) C. Journey dp
1.CF #374 (Div. 2) C. Journey 2.总结:好题,这一道题,WA,MLE,TLE,RE,各种姿势都来了一遍.. 3.题意:有向无环图,找出第1个点到第n个点的一条路径 ...
- 把一个序列转换成严格递增序列的最小花费 CF E - Sonya and Problem Wihtout a Legend
//把一个序列转换成严格递增序列的最小花费 CF E - Sonya and Problem Wihtout a Legend //dp[i][j]:把第i个数转成第j小的数,最小花费 //此题与po ...
- TopCoder SRM 560 Div 1 - Problem 1000 BoundedOptimization & Codeforces 839 E
传送门:https://284914869.github.io/AEoj/560.html 题目简述: 定义"项"为两个不同变量相乘. 求一个由多个不同"项"相 ...
- BZOJ 2021 [Usaco2010 Jan]Cheese Towers:dp + 贪心
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2021 题意: John要建一个奶酪塔,高度最大为m. 他有n种奶酪.第i种高度为h[i]( ...
- CF #376 (Div. 2) C. dfs
1.CF #376 (Div. 2) C. Socks dfs 2.题意:给袜子上色,使n天左右脚袜子都同样颜色. 3.总结:一开始用链表存图,一直TLE test 6 (1)如果需 ...
- CF #375 (Div. 2) D. bfs
1.CF #375 (Div. 2) D. Lakes in Berland 2.总结:麻烦的bfs,但其实很水.. 3.题意:n*m的陆地与水泽,水泽在边界表示连通海洋.最后要剩k个湖,总要填掉多 ...
- CF #371 (Div. 2) C、map标记
1.CF #371 (Div. 2) C. Sonya and Queries map应用,也可用trie 2.总结:一开始直接用数组遍历,果断T了一发 题意:t个数,奇变1,偶变0,然后与问的 ...
- CF #365 (Div. 2) D - Mishka and Interesting sum 离线树状数组
题目链接:CF #365 (Div. 2) D - Mishka and Interesting sum 题意:给出n个数和m个询问,(1 ≤ n, m ≤ 1 000 000) ,问在每个区间里所有 ...
随机推荐
- PF4J使用
PF4J是一个Java轻量级的插件框架,可以实现动态加载,执行,卸载外部插件(支持jar以及zip),具体可以看官网:https://pf4j.org/. 本文例子基于Github地址:https:/ ...
- MySQL — 索引
目录 1.索引概述 2.索引结构 3.索引分类 4.索引语法 5.SQL 性能分析 5.1.执行频次 5.2.慢日志查询 5.3.profile 5.4.explain 6.索引使用规则 6.1.单列 ...
- 内网渗透----域环境搭建(server 2008)
域控制器 配置静态IP 安装域服务 点击服务器管理器-添加角色-下一步-添加AD域服务: 安装过后运行安装向导: 下一步后选择"在新林中新建域": 若提示密码不符合要求,则配置密码 ...
- Ubuntu一键安装LAMP,LNMP
参考: https://blog.csdn.net/xueyingqi/article/details/50674078 https://www.cnblogs.com/pengzheng/p/363 ...
- AD2019(Altium designer)常用快捷键,使用技巧
测量工具 测量距离:Ctrl+M, 删除测量结果:shift+C, 退出测量:多次右键 设置栅格 G或Ctrl+G 3D查看 按住shift键,再按住鼠标右键移动鼠标,即可在任意角度查看PCB的3D效 ...
- JDBC-连接Druid数据池
•导入Druid-jar包 •下载地址 链接:https://pan.baidu.com/s/1A3tSCT9BDXkzB7zbukzyPg?pwd=0000 提取码:0000 下载后具体导入操作和这 ...
- java字节流和字符流,以及java文件操作
A.首先说字节流:1.字节流在操作的时候不会用到缓冲区(也就是内存)2.字节流可用于任何类型的对象,包括二进制对象3.字节流处理单元为1个字节,操作字节和字节数组.InputStream是所有字节输入 ...
- 怎么清屏?怎么退出当前命令?怎么执行睡眠?怎么查看当前用户 id?查看指定帮助用什么命令?
清屏:clear 退出当前命令:ctrl+c 彻底退出 执行睡眠 :ctrl+z 挂起当前进程 fg 恢复后台 查看当前用户 id:"id":查看显示目前登陆账户的 uid 和 g ...
- kafka端口和zookeeper端口
一.问题描述 今天配合现场联调一个数据工具,工具使用到了kafka,程序启动之后包如下错误: [WARN ] [2020-08-17 19:17:27] [org.apache.kafka.clien ...
- 你在项目中哪些地方用到了 XML?
XML 的主要作用有两个方面:数据交换和信息配置.在做数据交换时,XML 将数 据用标签组装成起来,然后压缩打包加密后通过网络传送给接收者,接收解密与 解压缩后再从 XML 文件中还原相关信息进行处理 ...