[ 10.05 ]CF每日一题系列—— 962B贪心和思维?
Description:
非 * 号的地方可以放A或B,不能AA或BB,一共有a个A,b个B,问你最多放几个
Solution:
1.模拟一下,找连续空位长度,如果长度为奇数,则我可以有一个位置放任意一个,否则摆放消耗一定,最后放完了判断一下是不是还有剩下的,有剩下的就都放到任意位置
Code
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn = 2e5 + 2e2;
char s[maxn];
int main()
{
int n,a,b;
int numa,numb;
while(~scanf("%d%d%d",&n,&a,&b))
{
numa = a;
numb = b;
scanf("%s",s);
s[n] = '*';
s[n+1]='\0';
int last = -1;
int use = 0;
for(int i = 0;i < n + 1;++i)
{
if(s[i] == '*')
{
int len = i - last - 1;
if(len & 1)use++;
a -= len / 2;
b -= len / 2;
last = i;
}
}
int ret = 0;
if(a <= 0)
{
ret += numa;
a = 0;
}
else ret += numa - a;
if(b <= 0)
{
ret += numb;
b = 0;
}
else ret += numb - b;
ret += min(a+b,use);
printf("%d\n",ret);
}
return 0;
}
2.小贪心,按位置模拟,能放的时候就先放个数最多,直到结束
code
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn = 2e5 + 2e2;
char s[maxn];
int main()
{
int n,a,b;
while(~scanf("%d%d%d",&n,&a,&b))
{
scanf("%s",s);
int ret = 0; for(int i = 0;i < n;++i)
{
if(a < b)
swap(a,b);
while(s[i] == '.' && i < n)
{
if(a > 0)ret++;
a--;
swap(a,b);
i++;
}
}
printf("%d\n",ret);
}
return 0;
}
[ 10.05 ]CF每日一题系列—— 962B贪心和思维?的更多相关文章
- [ 10.03 ]CF每日一题系列—— 534B贪心
Descripe: 贪心,贪在哪里呢…… 给你初始速度,结尾速度,行驶秒数,每秒速度可变化的范围,问你行驶秒数内最远可以行驶多少距离 Solution: 贪心,我是否加速,就是看剩下的时间能不能减到原 ...
- [ 10.08 ]CF每日一题系列—— 602B
Description: 一个数组,保证相邻两个元素值得差小于1,问题,最大值和最小值的差 < 1的区间长度最长是多少 Solution: 还是卡了一下,本来以为是模拟就好了,但是卡时间,想来想 ...
- [ 10.4 ]CF每日一题系列—— 486C
Description: 给你一个指针,可以左右移动,指向的小写字母可以,改变,但都是有花费的a - b 和 a - z花费1,指针移动也要花费,一个单位花费1,问你把当前字符串变成回文串的最小化费是 ...
- [ 9.10 ]CF每日一题系列—— 186A模拟处理字符串
Description: 跟你两个不相同的字符串,问你能否将第一个字符串任意两个字母交换一次使得两字符串相同,YES or NO Solution: 一维模拟就好了 #include <iost ...
- [ 9.9 ]CF每日一题系列—— 259A黑白棋盘检查问题
http://codeforces.com/problemset/problem/259/A PS9.8日做了但是忘了发博客,所以坚持3天了呦~ 终于读懂了这个题了,心累 Describe: 给你8 ...
- [ 9.29 ]CF每日一题系列—— 765B字符串规律
Description: 遇到了ogo可以变成***如果ogo后面有go统统忽略,输出结果 Solution: 哎如果我一开始对题意的解读如上的话,就不会被整的那么麻烦了 Code: #include ...
- [ 9.24 ]CF每日一题系列—— 468A构造递推
Description: 1 - n个数问你能否经过加减乘除这些运算n -1次的操作得到24 Solutrion: 一开始想暴力递推,发现n的范围太大直接否决,也否决了我的跑dfs,后来就像肯定有个递 ...
- [ 9.22 ]CF每日一题系列—— 484A Bits
Description: 给你一个l,r的区间让你找一个最小的x并且其二进制数要包含最多的1位,输出它的十进制 Solution: 我本来就是贪心,但是贪大了,想1一直往上添加1,但是忘记了0在中间的 ...
- [ 9.28 ]CF每日一题系列—— 940A规律构造
Description: 输入a,b,x,给你a个0,b个1,你要给出一个组合,让这个组合里存在x位,使得这x为和其x+1位不相等 Solution: 因为肯定有一个正确的答案,所以钻了一下空子,贪心 ...
随机推荐
- 初步了解Spring
1.了解“控制反转” 控制反转也称为依赖注入,是面向对象编程中的一种设计理念,用来降低程序代码之间的耦合度. 下面是一个最简单的打印机实例 纸张接口,纸张有大小 继承它的有两个类,两种纸张大小的类 A ...
- Ubuntu---grep
摘要:我们已经学过正则表达式了,所以现在开始学习 grep 也是水到渠成的事情. 简介:grep 是 Linux 中最常用的“文本处理工具”之一,grep 与 sed.awk 合称为 Linux 中的 ...
- python爬虫的scrapy安装+pymongo的安装
我的:python2.7版本 32位 注意scrapy只支持2.7及以上的版本. 1.安装python 2.安装pip 安装pip就不赘述了,网上很多教学 pip安装时要注意更新,如果pip版本 ...
- CentOS7更改运行级别
Step 1:查看系统默认运行级别 [root@node-1 html]# systemctl get-default //图形界面graphical.target [root@node- ...
- atom使用技巧
文本 批量处理 正则 空格换成换行:Atom替换换行符直接[Ctrl]+[F],然后选择正则,输入\n
- java的post请求
public static String sendPost(String url,Map<String, String> packageParams){ //packageParams={ ...
- JavaSE基础知识(5)—面向对象(5.7 final关键字)
一.说明 final属于一种修饰符,可以用于修饰类和属性.方法.局部变量 二.特点 1.修饰类 该类不能被继承,如String.Integer等 2.修饰方法 该方法不能被重写 3.修饰变量(属性和局 ...
- python requests库爬取网页小实例:爬取网页图片
爬取网页图片: #网络图片爬取 import requests import os root="C://Users//Lenovo//Desktop//" #以原文件名作为保存的文 ...
- Spring bean的生命流程
Spring 是一个轻量级的 J2EE 开源框架,其目标是降低企业级应用开发难度,提高企业级应用开发效率.在日程开发中,我们会经常使用 Spring 框架去构建应用.所以作为一个经常使用的框架,了解其 ...
- 快速排序的两种实现方法(js)
快速排序的基本思想:通过一趟排序,将待排记录分割成独立的两部分,其中一部分记录的关键字均比另外一部分记录的关键字小,则可分别对着两部分记录继续进行排序,以达到整个序列有序的目的.----------- ...