【cf补题记录】Codeforces Round #608 (Div. 2)
再次改下写博客的格式,以锻炼自己码字能力
A. Suits
题意:有四种材料,第一套西装需要 \(a\)、\(d\) 各一件,卖 \(e\) 块;第二套西装需要 \(b\)、\(c\)、\(d\) 各一件,卖 \(f\) 块。问,怎么做套装卖的前最多。
题解:【贪心】---- 先选比较贵的那一套,因为 \(d\) 套都要用上则以它为基准,再用剩余材料加第二套的总价钱
// https://codeforces.com/contest/1271/problem/A
#include<iostream>
#include<cstdio>
using namespace std;
int a, b, c, d, e, f;
int main()
{
int ans = 0;
cin >> a >> b >> c >> d >> e >> f;
int mmoney = max(e, f); // 比较二者谁更贵
if(mmoney == f){
int l = min(d, min(b, c));
ans += l * f;
d -= l;
int r = min(a, d);
ans += r * e;
}
else {
int r = min(a, d);
ans += r * e;
d -= r;
int l = min(d, min(b, c));
ans += l * f;
}
printf("%d\n", ans);
return 0;
}
B. Blocks
题意:翻转地砖使其最后的砖块颜色都一样,每翻转一块都要带动它相邻的右边一块(自左向右),输出最少翻转数以及每次翻转的位置
题解:【搜索】【翻转】数据很小,可以分别讨论每次翻成白或者翻成黑两种情况,以得到最后较小的情况(注意有翻不到的情况)
// https://codeforces.com/contest/1271/problem/B
#include<iostream>
#include<cstdio>
using namespace std;
int n;
char ch[202];
int num[202];
// 分别存储黑白两种答案
int black[1002];
int white[1002];
int main()
{
scanf("%d", &n);
scanf("%s", ch);
for(int i = 0; i < n; i++){
if(ch[i] == 'B') num[i] = 1;
else num[i] = 0;
}
// 先判断全黑的
int b = 0, w = 0;
bool can = false; // 判断能否满足要求
for(int i = 0; i < n - 1; i++){
if(num[i] != 1) { // 如果该块不是黑色则翻 将会带动下一块的颜色变化
num[i] = 1 - num[i];
num[i + 1] = 1 - num[i + 1];
black[b++] = i + 1;
}
}
if(num[n - 1] == 1) can = true;
else b = 0x3f3f3f3f;
// 重新初始化 num[] 判断全白的
for(int i = 0; i < n; i++){
if(ch[i] == 'B') num[i] = 1;
else num[i] = 0;
}
for(int i = 0; i < n - 1; i++){
if(num[i] != 0){
num[i] = 1 - num[i];
num[i + 1] = 1 - num[i + 1];
white[w++] = i + 1;
}
}
if(num[n - 1] == 0) can = true;
else w = 0x3f3f3f3f;
if(!can) printf("-1\n");
else if(w > b){
printf("%d\n", b);
for(int i = 0; i < b; i++){
printf("%d%c", black[i], i == b - 1 ? '\n' : ' ');
}
}
else {
printf("%d\n", w);
for(int i = 0; i < w; i++){
printf("%d%c", white[i], i == w - 1 ? '\n' : ' ');
}
}
return 0;
}
C. Shawarma Tent
题意:有一群学生从学校回家,他们都会走曼哈顿距离的最近距离,然后让你建一个商店在他们的路上,使他们经过商店的人数最多
题解:【贪心】涉及到曼哈顿距离,所以学生们只能按坐标轴上的线走而不能走斜线,同时商店的位置除了学校可以任意取,就可以定位在学校的上下左右四个方向取其中的一个点即可。对应四个方向,可以把学生的点分为四个象限,然后求这四个象限里哪个象限的点最多即可。
// https://codeforces.com/contest/1271/problem/C
#include<iostream>
#include<cstdio>
using namespace std;
int n, W, H, w, h;
int dw[] = { 0, 1, 0, -1 }, dh[] = { 1, 0, -1, 0 };
int d[4];
int main()
{
scanf("%d %d %d", &n, &W, &H);
while(n--){
scanf("%d %d", &w, &h);
if(w != W) d[w > W ? 1 : 3]++;
if(h != H) d[h > H ? 0 : 2]++;
}
int m = 0, t;
for(int i = 0; i < 4; i++){
// printf("i:%d d:%d\n", i, d[i]);
if(d[i] > m){
m = d[i]; t = i;
}
}
printf("%d\n", m);
printf("%d %d\n", W + dw[t], H + dh[t]);
return 0;
}
补题没有rating。
【cf补题记录】Codeforces Round #608 (Div. 2)的更多相关文章
- Codeforces Round #608 (Div. 2) 题解
目录 Codeforces Round #608 (Div. 2) 题解 前言 A. Suits 题意 做法 程序 B. Blocks 题意 做法 程序 C. Shawarma Tent 题意 做法 ...
- 【cf补题记录】Codeforces Round #607 (Div. 2)
比赛传送门 这里推荐一位dalao的博客-- https://www.cnblogs.com/KisekiPurin2019/ A:字符串 B:贪心 A // https://codeforces.c ...
- CF每日一练 Codeforces Round #520 (Div. 2)
比赛过程总结:过程中有事就玩手机了,后面打的状态不是很好,A题理解错题意,表明了内心不在状态,B题想法和思路都是完全正确的,但是并没有写出来,因为自己代码能力不强,思路不是特别清晰,把代码后面写乱了, ...
- Codeforces Round #608 (Div. 2) D. Portals
链接: https://codeforces.com/contest/1271/problem/D 题意: You play a strategic video game (yeah, we ran ...
- [CF百场计划]Codeforces Round #617 (Div. 3)
A. Array with Odd Sum Description You are given an array \(a\) consisting of \(n\) integers. In one ...
- 【做题】Codeforces Round #453 (Div. 1) D. Weighting a Tree——拆环
前言:结论题似乎是我的硬伤…… 题意是给你一个无向图,已知连接到每一个点的边的权值和(为整数,且属于区间[-n,n]),需要求出每条边权值的一个合法解(都要是在区间[-2*n^2,2*n^2]内的整数 ...
- 【做题】Codeforces Round #436 (Div. 2) F. Cities Excursions——图论+dfs
题意:给你一个有向图,多次询问从一个点到另一个点字典序最小的路径上第k个点. 考虑枚举每一个点作为汇点(记为i),计算出其他所有点到i的字典序最小的路径.(当然,枚举源点也是可行的) 首先,我们建一张 ...
- 【做题】Codeforces Round #429 (Div. 2) E. On the Bench——组合问题+dp
题目大意是给你n个数,求相邻两数相乘不是完全平方数的排列数. 一开始看到这题的时候,本人便想给相乘为完全平方数的数对建边,然后就写萎了... 后来通过集体智慧发现这个重要性质:对于自然数a,b,c,若 ...
- Codeforces Round #608 (Div. 2)
传送门 A. Suits 签到. Code /* * Author: heyuhhh * Created Time: 2019/12/15 17:16:33 */ #include <iostr ...
随机推荐
- Dart面向对象编程(二)
继承: person.dart: class Person{ String name; int age; String _birthday; bool get isAdult => age &g ...
- Python爬虫实战之爬取糗事百科段子【华为云技术分享】
首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 友情提示 糗事百科在前一段时间进行了改版,导致之前的代码没法用了,会导致无法输出和CPU占用过高的 ...
- 【spring boot】spring boot 基于redis pipeline 管道,批量操作redis命令
spring boot 2.x 使用RedisTemplate 操作 =================================== 1.pom.xml <!--spring2.0集成r ...
- C# VB .NET生成条形码,支持多种格式类型
条形码简单,方便印刷,因此在各个领域得到了广泛的应用.我们自己的项目里也可以将一些特定的数据以条形码的方式来展示和应用,实现一码走天下.那么如何在C#,.Net平台代码里生成条形码呢?答案是使用Sha ...
- JavaScript学习思维导图
JS基本概念 JS操作符 JS基本语法 JS数组 JS Date用法 JS 字符串用法 JS编程风格 JS实践
- Laravel集合的简单理解
本篇文章给大家带来的内容是关于Laravel集合的简单理解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 前言 集合通过 Illuminate\Database\Eloquent\C ...
- Scanner 中next()和nexline()方法的区别
在java实现字符窗口的输入时,很多人更喜欢选择使用扫描器scanner,它操作起来比较简单.在编程的过程中,我发现用scanner实现字符串的输入有两种方法,一种是next(),另一种是next ...
- 如何设计提高服务API的安全性(一)基础介绍
场景 现今越来越多公司提供了Sass平台服务,大部分也直接提供API.如快递鸟.微信Api.云服务.如何保证这些服务的安全性是一门重要的课题.如快递跟踪.机票查询等很便捷地影响着我们d的生活,对这些技 ...
- 常用SQL语句分享
前言: 日常工作或学习过程中,我们可能会经常用到某些SQL,建议大家多多整理记录下这些常用的SQL,这样后续用到会方便很多.笔者在工作及学习过程中也整理了下个人常用的SQL,现在分享给你!可能有些S ...
- druid + mysql + mybatis 批量更新报错
首先 批量更新报错 sql injection violation, multi-statement not allow 然后看了博客:https://blog.csdn.net/qq_3634595 ...