'只要坚持就会成功--2022.1.22'

1.COW,这道题的大概意思就是求出一个字符串中一共有多少个COW,不要求连续。

思路: 暴力枚举,枚举每一个包含O,看这个O和前后的C,W结合能组成多少个COW,最终求和即可;

题目链接: COW

AC代码: 

#include<bits/stdc++.h>using namespace std;int main()
{long long  n, onum = 0, snum = 0, res = 0, unum = 0;string a;cin >> n;cin >> a;for(int i = 0; i < a.size(); i ++){if(a[i] == 'W')unum ++; //先求出字符串中共有多少个最后的字母W,方便后边求每一个O的后边有多少个W;}for(int i = 0; i < a.size(); i ++){if(a[i] == 'C')onum ++;if(a[i] == 'W')unum --;if(a[i] == 'O')res += onum * unum;//相乘累加求出即可;}cout << res << endl;return 0;
}

2.玄神的字符串:链接:题目链接
来源:牛客网

玄神有一条珍藏多年的神奇字符串。因为某种原因,该字符串只由数字0和数字1组成。但是最近,他开始对字符串感到厌烦,所以他想将这个字符串删除。他可以任意进行以下三种操作,每种操作的次数不限:
1)选择字符串中的一个0和一个1,将他们删除,代价为a;
2)选择字符串中两个位置不同的0或者两个位置不同的1,将他们删除,代价为b;
3)将字符串中的一个0变成1或将字符串中的一个1变成0,代价为c。
聪明的你能不能帮帮玄神,求出将这条神奇字符串删除成空字符串(不含任何字符的字符串)的最小代价为多少?

输入描述:

第一行包括一个仅由数字0和数字1构成的字符串s,s的长度不超过500005000050000,保证s的长度为偶数
第二行包括三个整数a、b、c,分别代表上述三种操作的代价。保证1 ≤ a,b,c ≤ 10000;

输出描述:

输出包括一个整数,表示删除该字符串的最小代价

这道题就是根据题意将只有0 1 的字符串删除,并求出最小代价

思路: 先求出0 和 1 的数量,再分情况讨论,看a和b的大小关系,再据此求出具体结果

1. a <= b 就可以这样操作: 先将0 和 1 中的最小的那个删除完,这是min(cnt0, cnt1) * a的代价,然后将剩下的用b操作和a + c操作,这两个中代价小的那个删除完,这个代价是min(a + c, b) * abs(cnt0 - cnt1) / 2;(这其中有个小的细节,第一个操作结束后,剩下的字符串的长度一定是偶数,因为开始字符串的长度是偶数,所以如果1的数量是奇数的话,0的数量也是奇数,那么大的减小的,奇数减奇数,结果是偶数,而如果一开始都是偶数的话,那么结果还是偶数,所以可以这样做)

2.剩下的情况,就是b > a的情况,先分别把0 和 1 的最大偶数个数删除,代价是cnt0 / 2 * b + cnt1 / 2 * b,如果字符串已经删除完毕,则结束,如果字符串未删除结束,那么一定就剩下一个0 和 一个 1(参照1的注解)就再用b + c,以及a操作,中的代价小的那个操作删除字符串即可,代价:(cnt0 % 2) * min(b + c, a);

 AC代码:

#include<bits/stdc++.h>using namespace std;string s;
int a, b, c;
int cnt0, cnt1;
int  ans;
int main()
{cin >> s;cin >> a >> b >> c;int n = s.size();for(int i = 0; i < n; i ++){if(s[i] == '0')cnt0 ++;else cnt1 ++;}if(a <= b){ans += min(cnt0, cnt1) * a;cout << min(a + c, b) * abs(cnt0 - cnt1) / 2 + ans;}else{ans += cnt0 / 2 * b + cnt1 / 2 * b;cout << ans + (cnt0 % 2) * min(b + c, a);//由于优先级的关系,前边那个括号一定要加上,debug不容易hh}return 0;
}

3.Duplicate Strings: 输入字符串,后续可能进行多次两个不同的操作,1.将前边的字符串复制多次接到后边,2.查询某个字母出现了几次(字符串都是小写字母);

思路: 做题太少,一开始只会暴力hh,然后出了莫名其妙的错误,然后听了小伙伴说可以 转化一下,开个数组记录每个小写字母出现过的次数,如果复制,则将这些字母出现的次数相乘对应数量即可。

题目链接:  Duplicate Strings

AC代码:

#include<bits/stdc++.h>using namespace std;
long long  a[26];
int n, q;
string s;
const int mod = 1e9 + 7;
int main()
{cin >> n >> q;cin >> s;for(int i = 0; i < n; i ++){a[s[i] - 'a'] ++;}while(q --){int op;cin >> op;if(op == 1){int k;cin >> k;for(int i = 0; i < 26; i ++){a[i] = a[i] * (k + 1) % mod;}}else{char zimu;cin >> zimu;printf("%lld\n", a[zimu - 'a']);}}return 0;
}

COW(暴力枚举) + 玄神的字符串(思维题) + Duplicate Strings(字符串思维题)相关推荐

  1. Duplicate Strings 字符串 取模 牛客练习赛95

    链接:https://ac.nowcoder.com/acm/contest/11185/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言52 ...

  2. 【POJ - 2965】The Pilots Brothers' refrigerator(暴力枚举,思维)

    题干: The game "The Pilots Brothers: following the stripy elephant" has a quest where a play ...

  3. 寒假集训三(暴力枚举)2020.01.02(11题)

    寒假集训三(暴力枚举)id :521 Problem:A 二倍的问题 Description 给定2到15个不同的正整数,你的任务是计算这些数里面有多少个数对满足:数对中一个数是另一个数的两倍.比如给 ...

  4. 大一寒假培训(三)——暴力枚举及妙用

    大一寒假培训(三) 经过两天的培训之后,第三天也到来了.今天讲的是暴力枚举.好像没什么可讲的(悄咪咪地说) 接下来还是今天的练习 nefu 8 二倍的问题 Description 给定2到15个不同的 ...

  5. 2020年1月2日 林大OJ习题 暴力枚举

    2020年1月2日 暴力枚举 林大OJ 8 二倍的问题 #include <bits/stdc++.h>using namespace std;int main() {int n,i,j, ...

  6. 搜索初步-暴力枚举总结与举例

    暴力枚举 一.过程: 暴力枚举是将所有情况都进行枚举出,并找到自己的目标的值的过程. 二.方法: 1.用多重循环嵌套,用来寻找在一个数组中的一个值是否与其他的一个或多个值相关. (这里的相关表示为加减 ...

  7. 算法小课堂(一)暴力枚举

    . 目录 一.概念 1.1相关概念 1.2应用场景 1.3局限性 二.相关问题 2.1例题1:统计 2.2例题二 二倍的问题 2.3例题3 奶牛碑文 2.4例四网友年龄 2.5例五生日年龄数 2.6数 ...

  8. 最大字段和 冲出暴力枚举

    这篇解题报告是对我最近一些题的总结,里面的代码都是我解题,优化,再优化的过程的记录,记录了自己对算法的完善与优化思路,还有对编程哲学的理解:do it,do it well. 很感谢孙老师您,让自己可 ...

  9. YBTOJ:灯光控制(贪心)(公倍数)(暴力枚举)

    文章目录 题目描述 解析 代码 题目描述 解析 没有想出来 首先可以确定开关要么开一次,要么不动,其他都和这俩是等价的 一开始最先想到的就是贪心的方法,每个开关遍历,如果按下会使答案变好就按下. 但是 ...

最新文章

  1. JsonMappingException:找不到类型[simple type,class]的合适构造函数:无法从JSON对象实例化
  2. StevenBoyd--Convex optimization--0. Contents
  3. Deep Learning of Binary Hash Codes for Fast Image Retrieval(代码跑通了)
  4. mybatis-generator-gui--一个mybatis代码自动生成界面工具
  5. CentOS 7 samba 配置
  6. 免费试用CRM的高效方式
  7. 计算机专业学生实习目的,计算机专业学生的实习目的
  8. 今天我们来聊聊递归喝汽水问题
  9. Java中的注解是什么意思,有什么用
  10. excel选择性粘贴为何是html,Excel2016中选择性粘贴功能的使用方法
  11. Java设计模式 - 依赖倒转原则
  12. 北大计算机mooc题库,人工智能原理MOOC习题集及答案 北京大学 王文敏
  13. 路由器使用Caddy搭建Webdav服务
  14. NULL, '\0',0 '0'的区别
  15. 知网caj怎么转成可编辑的Word?手机可以转吗?
  16. Fault Description Based Attribute Transfer for Zero-Sample Industrial Fault Diagnosis
  17. 计算机与应用在线作业答案,计算机应用基础在线作业及答案
  18. 微信特殊字符php,php 获取微信昵称时 过滤特殊字符
  19. 李大学:互联网裂变里最重要的是资金流|正和岛|正和岛联席总裁黄丽陆|2015正和岛东部(海宁)论坛_新浪财经_新浪网...
  20. [小游戏] 微信小游戏开发源码_教程_工具_资源最新集合

热门文章

  1. 计算机的优势和劣势_计算机二级证书到底有什么用?为什么那么多人都在考?...
  2. golang 闭包函数的应用技巧
  3. mysql的写操作报Lost connection to MySQL server during query异常的解决方案
  4. 判断回文字符串—C语言
  5. 资源不足的情况怎么设置sparkrdd并行度_弃考率超30%,2020国考职位达不到开考比例怎么办?...
  6. python常用加密算法_python 三个常用加密 base64,md5,sha1
  7. 分布式架构系统拆分原则、需求、微服务拆分步骤
  8. Relu函数与Leaky Relu函数的理解
  9. 2018各大公司排名
  10. java读取html的全部xpath,Java - XPath解析爬取内容