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中的数 ...
随机推荐
- [转帖]CoreDNS loop 插件异常问题
https://zhuanlan.zhihu.com/p/476611162 背景 最近有遇到一个客户集群,发现集群中的 CoreDNS 老是异常 (loop 插件检测到有回路后进行 panic) ...
- [转帖]一次ORA-3136的处理
https://oracleblog.org/working-case/deal-with-ora3136/ 最近收到一个告警,用户说数据库无法连接,但是从监控上看,oracle的后台进程已经侦听进程 ...
- [转帖]mysql8.0的RPM方式安装
https://www.cnblogs.com/asker009/p/15072354.html 1. 下载 https://dev.mysql.com/downloads/ 使用wget下载yum的 ...
- 银河麒麟不同架构获取rpm包的方法
银河麒麟不同架构获取rpm包的方法 背景 随着信创和网络安全越来越重要 现阶段国产化的软硬件部署越来越多. 很多时候现场有很多国产化的设备.不同架构.不同版本. 还不能上网, 无法获取对应的安装介质. ...
- 【转帖】《MySQL高级篇》四、索引的存储结构
1. 为什么使用索引 假如给数据使用 二叉树 这样的数据结构进行存储,如下图所示 2.索引及其优缺点 2.1 索引概述 2.2 优点 类似大学图书馆建书目索引,提高数据检索的效率,降低 数据库的 IO ...
- [转帖]Redis如何绑定CPU
文章系转载,便于分类和归纳,源文地址:https://www.yisu.com/zixun/672271.html 绑定 CPU Redis 6.0 开始支持绑定 CPU,可以有效减少线程上下文切换. ...
- Ubuntu18.04 安装Postgresql12
Postgresql 12 是有很多新增特性的,但是最关键的一点是Postgresql 12 的SQL备份文件是不能直接使用psql命令导入到Postgresql 10 的. Ubuntu18.04 ...
- Redis6.x 在Windows上面编译安装的过程
背景说明 在github上面仅能够找到 redis3.2.100的Windows安装文件 比较新的版本比较难以找到, 同事经常出现这个版本的redis卡死的情况, 所以想尝试进行一下升级. 第一部分下 ...
- 各开发语言DNS缓存配置建议
作者:翟贺龙 一.背景 在计算机领域,涉及性能优化动作时首先应被考虑的原则之一便是使用缓存,合理的数据缓存机制能够带来以下收益: 1.缩短数据获取路径,热点数据就近缓存以便后续快速读取,从而明显提升处 ...
- 一台不容错过的Java单元测试代码“永动机”
作者:京东零售 陈志良 作为一名京东的软件匠人,我们开发的软件支撑着数亿的用户,责任是重大的,因此我们深深地敬畏每一行代码,那如何将我们的失误降到最低呢?那就是单元测试,它会让我们树立对代码的自信心. ...