cf思维题
1、B. Paranoid String
题意:操作一:01可以变成1,操作二:10可以变成0。给定一个串,判断字串经过若干次操作,能否长度变成1,统计数量。
思路:对01来说,1可以吃掉0,然后前边不是0的,又可以通过10变成0。所以,能否变成一,取决于最后两个字符是否相同。
2、C. Zero Path
题意:给定只包含-1,1的一个矩阵,问从矩阵左上角走到矩阵右下角,只能左走一步和右走一步,是否存在路径使得和为0。
思路: 利用dp求出来从左上到右下的最大和和最小和。观察发现,如果从同一点向下走一步和向右走一步,到达斜斜下方,那么结果相差可能为-2,0,2.所以矩阵能实现的结果的可能值是在min~max之间,和它俩奇偶性相同的数。
拓展:思考如何打印出来路径
3、C. Helping the Nature
题意:给定三种操作,op1:将[1,i]位置对应的数字都减1,op2:将[i,n]位置对应的数字都减1,op3:将所有的数字都加1。问最少需要多少步,能把给定序列变成一个全零序列。
思路:利用差分进行求解,举个具体例子然后结合代码进行分析。
cin >> n;
int ans = 0;
int cur;//代表第一位的终值
for(int i = 1; i <= n; i++){
cin >> x;
if(i == 1) {
pre = x;
cur = x;continue;
}
else if(pre - x > 0){
cur -= pre - x;//更新第一位的值
}
ans += abs(pre - x);//abs(pre - x), 求后边/qi 前边减多少
pre = x;
}
cout << ans + abs(cur) << endl;
4、D. Fake Plastic Trees
(一道很好的树上bfs)
题意:给一棵树,每个结点有一个合法区间范围,操作是,每次在树上选一条链和一个c,然后链上每个点都加上c。初始树上每个点的值都是零,求最少多少次操作能让每个点的区间范围都合法。
思路:树上bfs。每次根据叶子节点来推父亲节点。
const int N = 2e5 + 10;
int t, n, d[N];
int fa[N]; //记录父亲结点
int add[N]; //记录子节点的贡献和
int dn[N], up[N];
int ans;
int min(int a, int b){
if(a < b) return a;
return b;
}
void bfs(){
queue<int> q;
for(int i = 1; i <= n; i++){
if(d[i] == 0) q.push(i);
}
while(!q.empty()){
int u = q.front();
q.pop();
int f = fa[u];
int dnn = dn[u], upp = up[u];
if(add[u] < dnn) add[f] += upp, ans ++;
else add[f] += min(add[t], upp);
d[f] --;
if(!d[f]) q.push(f);
}
}
void solve(){
cin >> t;
while(t -- ){
cin >> n;
ans = 0;
memset(add, 0, sizeof add);
memset(d, 0, sizeof d);
fa[1] = 1;
for(int i = 2; i <= n; i++){
cin >> fa[i];
d[fa[i]] ++;
}
for(int i = 1; i <= n; i++) cin >> dn[i] >> up[i];
bfs();
cout << ans << endl;
}
}
5、C. awoo's Favorite Problem
题意:有两种操作,一种是把ab变成ba,一种是把bc变成cb。给定两个序列,判断能否经过若干次操作,把序列a变成序列b。
思路:set存储元素位置。记得交换!
string solve(){
for(int i = 0; i < lena; i ++) {
s[a[i] -'a'].insert(i);
}
for(int i = 0; i < lena; i++){
if(a[i] == b[i]) {
s[a[i] -'a'].erase(i);
continue;
}
if(a[i] == 'a' && b[i] == 'b'){
if(!s[1].size()) return "NO";
int posb = *s[1].begin();
int posc = *s[2].begin();
if(s[2].size() && posc < posb) return "NO";
s[0].erase(i);
s[1].erase(posb);
s[0].insert(posb);
swap(a[i], a[posb]);
continue;
}
if(a[i] == 'b' && b[i] == 'c'){
...
}
return "NO";
}
return "YES";
}
6、D. Guess The String
题意:交互题。有一个长度为n的字符串。给定两种询问方式,第一种是查询某个位置的字母是什么(最多26次),第二种是查询区间的不同字母的个数(最多6000次)。求字符串是啥。
思路:二分+思维。存下来每个元素最后出现的位置,从前往后遍历,查询(mid,i)和(mid,i - 1)中有多少个不同的字母,如果相同,就更新该字符出现的最后位置为i,否则就查询该位置的字符是啥,然后更新该字符最后出现的位置为i。
注意:第一,题目不是多组输入,这个点错了好多遍。第二,下标从1开始!第三,加上cout.flush之后速度会快一点,建议添加。
7、Map
利用向量关系去构造。
思路:
cf思维题的更多相关文章
- E. Magic Stones CF 思维题
E. Magic Stones time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...
- cf A. Inna and Pink Pony(思维题)
题目:http://codeforces.com/contest/374/problem/A 题意:求到达边界的最小步数.. 刚开始以为是 bfs,不过数据10^6太大了,肯定不是... 一个思维题, ...
- CF思维联系–CodeForces-217C C. Formurosa(这题鸽了)
ACM思维题训练集合 The Bytelandian Institute for Biological Research (BIBR) is investigating the properties ...
- ACM思维题训练 Section A
题目地址: 选题为入门的Codeforce div2/div1的C题和D题. 题解: A:CF思维联系–CodeForces -214C (拓扑排序+思维+贪心) B:CF–思维练习-- CodeFo ...
- CF思维联系--CodeForces - 218C E - Ice Skating (并查集)
题目地址:24道CF的DIv2 CD题有兴趣可以做一下. ACM思维题训练集合 Bajtek is learning to skate on ice. He's a beginner, so his ...
- zoj 3778 Talented Chef(思维题)
题目 题意:一个人可以在一分钟同时进行m道菜的一个步骤,共有n道菜,每道菜各有xi个步骤,求做完的最短时间. 思路:一道很水的思维题, 根本不需要去 考虑模拟过程 以及先做那道菜(比赛的时候就是这么考 ...
- ZOJ 3829 贪心 思维题
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3829 现场做这道题的时候,感觉是思维题.自己智商不够.不敢搞,想着队友智商 ...
- 洛谷P4643 [国家集训队]阿狸和桃子的游戏(思维题+贪心)
思维题,好题 把每条边的边权平分到这条边的两个顶点上,之后就是个sb贪心了 正确性证明: 如果一条边的两个顶点被一个人选了,一整条边的贡献就凑齐了 如果分别被两个人选了,一作差就抵消了,相当于谁都没有 ...
- C. Nice Garland Codeforces Round #535 (Div. 3) 思维题
C. Nice Garland time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...
- PJ考试可能会用到的数学思维题选讲-自学教程-自学笔记
PJ考试可能会用到的数学思维题选讲 by Pleiades_Antares 是学弟学妹的讲义--然后一部分题目是我弄的一部分来源于洛谷用户@ 普及组的一些数学思维题,所以可能有点菜咯别怪我 OI中的数 ...
随机推荐
- MySQL高可用搭建方案之(MMM)
有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top 注意:这篇转载文章,非原创 首发博客地址 原文地址 前言 MySQL的高可用 ...
- cancal报错 config dir not found
替换classpath中间封号两边的值
- [转帖]第24/24周 数据库维护(Database Maintenance)
https://www.cnblogs.com/woodytu/p/4795542.html 哇哦,光阴似箭!欢迎回到性能调优培训的最后一期.今天我会详细讲下SQL Server里的数据库维护,尤其是 ...
- 基于OpenJDK部署clickhouse-local镜像的快捷方法
基于OpenJDK部署clickhouse-local镜像的快捷方法 摘要 前期搭建了一套基于OpenJDK的Clickhouse的服务端的镜像 可以简单使用dbeaver进行连接与使用. 后来发现需 ...
- [转帖]Kafka故障之磁盘打满
https://www.jianshu.com/p/095e820361ae 问:磁盘打满扩容后能正常重启吗?答:不一定 要看文件格式是否损坏(log.index等).如果损坏会报错:index fi ...
- [转帖]Centos7 nginx访问日志文件割接
一.yum安装nginx 二.各文件路径( /etc/nginx/nginx.conf) 1.访问日志路径:access_log /var/log/nginx/access.log main; 2.p ...
- elementui中el-checkbox 选中时的详细介绍
checkbox-group 把多个checkbox管理为一组(需要注意的坑) 很多时候我们需要会遇见这样的场景. 比如用户需要选择多个值. 这个时候我们需要把多个 checkbox 放置在check ...
- 分享一个项目:`learning_go_plan9_assembly`, 学习 golang plan9 汇编
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 近期在学习 golang plan9 汇编,总算基本做到了 ...
- Go 泛型之明确使用时机与泛型实现原理
目录 一.引入 二.何时适合使用泛型? 场景一:编写通用数据结构时 场景二:函数操作的是 Go 原生的容器类型时 场景三:不同类型实现一些方法的逻辑相同时 三.Go 泛型实现原理 Stenciling ...
- 【四】多智能体强化学习(MARL)近年研究概览 {Learning cooperation(协作学习)、Agents modeling agents(智能体建模)}
相关文章: [一]最新多智能体强化学习方法[总结] [二]最新多智能体强化学习文章如何查阅{顶会:AAAI. ICML } [三]多智能体强化学习(MARL)近年研究概览 {Analysis of e ...