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中的数 ...
随机推荐
- springboot入参下划线转驼峰出参驼峰转下划线
springboot入参出参下划线转驼峰 前言 因为历史原因前端入参和出参都为下划线,下划线对有亿点强迫症的我来说是不可接受的.因此就有了下面这篇. 本篇基于之前的一篇springboot封装统一返回 ...
- [转帖]Postmark - 存储性能测试工具
1. 引言 Postmark是由著名的NAS提供商NetApp开发,用来测试其产品的后端存储性能. Postmark主要用于测试文件系统在邮件系统或电子商务系统中性能,这类应用的特点是:需要频繁.大量 ...
- [转帖]MegaCli命令
MegaCli命令 设置jbod模式 1.3 LSI 9260/9261 raid卡配置 LSI 9260/9261 raid卡支持0.1.10.5.6.50.60 常用命令: 清除raid卡原有的配 ...
- [转帖]VMware常用软件ISO下载汇总(2023年6月更新)
https://www.dinghui.org/vmware-iso-download.html#vcsa-patch 请访问 www.dinghui.org 获得最新版,文章将持续更新.[最后更新时 ...
- 【转帖】Linux性能优化(一)——stress压力测试工具
https://blog.csdn.net/a642960662/category_11641226.html 一.stress简介 1.stress简介 stress是Linux的一个压力测试工具, ...
- 麒麟信安V3.4 安装PG15的过程V2.0
改版说明 上一次进行了PG的安装当时发现自己少加了一部分ossp的处理. 这里补充上...不然挺浪费时间的. 背景 发现基于OpenEuler的几个系统使用CentOS的rpm包 安装PG数据库时有问 ...
- [转载]关于NSA的EternalBlue(永恒之蓝) ms17-010漏洞利用
2017年5月19日 感谢原作者:http://www.cnblogs.com/cnbluerain/ 好久没有用这个日志了,最近WannaCry横行,媒体铺天盖地的报道,我这 ...
- ElasticSearch降本增效常见的方法 | 京东云技术团队
Elasticsearch在db_ranking 的排名不断上升,其在存储领域已经蔚然成风且占有非常重要的地位. 随着Elasticsearch越来越受欢迎,企业花费在ES建设上的成本自然也不少.那如 ...
- React中受控组件与非受控组件的使用
受控组件 受控组件的步骤: 1.在state中添加一个状态,作为表单元素的value值(控制表单元素值的来源) 2.给表单元素绑定change事件,将表单元素的值设置为state的值(这样就可以控制表 ...
- 【云原生】为什么要虚拟化,为什么要容器,为什么要Docker,为什么要K8S?
前言 如标题中的问题所提到的虚拟化,容器,Docker和K8s那样,我们不妨这样问:这些技术到底适用于哪些场景,有没有别的技术可以替代?这些技术的优劣在哪里? 下面我将针对性地从以上几个问题的出发点, ...