Codeforces Round #575 (Div. 3)
本蒟蒻已经掉到灰名了(菜到落泪),希望这次打完能重回绿名吧......
这次赛中A了三题
下面是本蒟蒻的题解
A.Three Piles of Candies
这题没啥好说的,相加除2就完事了
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
ll q;
scanf("%lld",&q);
while(q--)
{
ll a,b,c;
scanf("%lld %lld %lld",&a,&b,&c);
printf("%lld\n",(a+b+c)/);
}
return ;
}
B.Odd Sum Segments
题意大概就是把长度为n的数组分成k段,每段的总和为奇数,若可以则输出YES和和每段的右边界,否则输出NO。
偶数对结果没有影响,所以只用考虑奇数。记录奇数的个数,只要每段中含有奇数个奇数就行。
那么往前面的k-1段中各放一个奇数,再把剩下的奇数放在最后一段,判断最后一段中的奇数个数是否为奇数,判断后打印前面的奇数位置和n即可。(讲的不太清楚...)
代码如下:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll maxn=1e6+;
ll a[maxn];
int main() {
ll q;
scanf("%lld",&q);
while(q--) {
ll n,k;
scanf("%lld %lld",&n,&k);
ll cnt=;
for(ll i=; i<=n; i++) {
scanf("%lld",&a[i]);
if(a[i]%==)
cnt++;
}
if(cnt>=k&&(cnt-(k-))%==/*判断最后一堆中的奇数个数是否为偶数*/) {
printf("YES\n");
ll cnt2=;
for(ll i=; i<=n; i++) {
if(cnt2>=k-)break;
if(a[i]%==) {
printf("%lld ",i);
cnt2++;
}
}
printf("%lld\n",n);
} else
printf("NO\n"); }
return ;
}
C.Robot Breakout
大概就是纯模拟吧,对于每个机器人,记录它能到达的x,y的上下界,然后取个交集,输出交集的左边界。
代码如下:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll maxn=1e5+;
const ll INF=1e5;
ll a[maxn][];//储存可达状态 ,a[i][0]为x的下界,a[i][1]为x的上界,a[i][2]为y的下界,a[i][3]为y的上界
int main()
{
ll q;
scanf("%lld",&q);
while(q--)
{
ll n,x,y,f1,f2,f3,f4;
scanf("%lld",&n);
for(ll i=;i<=n;i++)
{
scanf("%lld%lld%lld%lld%lld%lld",&x,&y,&f1,&f2,&f3,&f4);
a[i][]=a[i][]=x;//上下界都标记为x
a[i][]=a[i][]=y;//同理
if(f1)a[i][]=-INF;
if(f2)a[i][]=INF;
if(f3)a[i][]=INF;
if(f4)a[i][]=-INF;
}
/*for(int i=1;i<=n;i++)
{
cout<<a[i][0]<<" "<<a[i][1]<<" "<<a[i][2]<<" "<<a[i][3]<<endl;
}*/
ll xmax=INF,xmin=-INF,ymax=INF,ymin=-INF;
bool flag =true;
for(ll i=;i<=n;i++)
{
if(a[i][]>xmax||a[i][]<xmin||a[i][]>ymax||a[i][]<ymin)
{
printf("0\n");
flag=false;
break;
}
if(xmax>a[i][])xmax=a[i][];
if(xmin<a[i][])xmin=a[i][];
if(ymax>a[i][])ymax=a[i][];
if(ymin<a[i][])ymin=a[i][];
}
if(flag)
{
printf("1 %lld %lld\n",xmin,ymin);
} }
return ;
}
后面的题目赛中没做出来(果然还是我太菜了555)
下午补了题晚上再把个人的题解放上来
---------------------------------------------------------------------------------------------------------------------分割线----------------------------------------------------------------------------------------------------------------------------------------------------
又颓了一整天5555
晚上补了昨晚cf的D题
发现D1还是很好写的嘛,随便暴力写都能过(毕竟数据小),昨天赛中的时候还把他想成了LCS,还想套模板233333
D2数据大了我的暴力写法直接TLE了,想了半天没办法看了题解。题解的写法是真的优雅。
下面贴出来我的代码(无脑写)和题解的代码(题解的我写了点注释方便理解)。
D1.RGB Substring (easy version)
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll maxn=1e6+;
int main()
{
ll q;
scanf("%lld",&q);
while(q--)
{
ll n,k;
scanf("%lld %lld",&n,&k);
string s;
cin>>s;
ll mi=maxn;
for(int i=;i<=n-k;i++)
{
ll cnt1=,cnt2=,cnt3=;
string b=s.substr(i,k);
for(int i=;i<b.length();i++)
{
if((i%==&&b[i]=='R')||(i%==&&b[i]=='G')||(i%==&&b[i]=='B'))
{
cnt2++;
cnt3++;
}
if((i%==&&b[i]=='G')||(i%==&&b[i]=='B')||(i%==&&b[i]=='R'))
{
cnt1++;
cnt3++;
}
if((i%==&&b[i]=='B')||(i%==&&b[i]=='R')||(i%==&&b[i]=='G'))
{
cnt1++;
cnt2++;
} }
if(mi>min(cnt1,min(cnt2,cnt3)))
{
mi=min(cnt1,min(cnt2,cnt3));
} }
printf("%lld\n",mi); }
return ; }
D2.RGB Substring (hard version)
题解真的tql
#include <bits/stdc++.h>
using namespace std;
int main() {
//#ifdef _DEBUG
//freopen("input.txt", "r", stdin);
// freopen("output.txt", "w", stdout);
//#endif
const string t = "RGB";
int q;
cin >> q;
for (int i = ; i < q; ++i) {
int n, k;
string s;
cin >> n >> k >> s;
int ans = 1e9;
for (int offset = ; offset < ; ++offset) {
vector<int> res(n);
int cur = ;
for (int j = ; j < n; ++j) {
res[j] = (s[j] != t[(j + offset) % ]);//对应的若不相同
cur += res[j];//cur是当前的需要改变的字母数量
if (j >= k) cur -= res[j - k];// 若j>=k则把当前的cur减去res[j-k](因为此时这个位置与要计算的位置不在同个字串)
if (j >= k - ) ans = min(ans, cur);/
}
}
cout << ans << endl;
}
return ;
}
不能颓废啊啊啊啊啊啊啊啊
好好休息好好补知识点!!!
E和F题不打算补了,接下来去学DFS和BFS了,之前稍微了解了一下做了一两道题发现还是不熟练,得多刷点题。
ok那这篇随笔就这样吧。
PS:我永远喜欢远坂凛
Codeforces Round #575 (Div. 3)的更多相关文章
- Codeforces Round #575 (Div. 3) 昨天的div3 补题
Codeforces Round #575 (Div. 3) 这个div3打的太差了,心态都崩了. B. Odd Sum Segments B 题我就想了很久,这个题目我是找的奇数的个数,因为奇数想分 ...
- Codeforces Round #575 (Div. 3) D2. RGB Substring (hard version) 水题
D2. RGB Substring (hard version) inputstandard input outputstandard output The only difference betwe ...
- Codeforces Round #575 (Div. 3) E. Connected Component on a Chessboard(思维,构造)
E. Connected Component on a Chessboard time limit per test2 seconds memory limit per test256 megabyt ...
- Codeforces Round #575 (Div. 3) D1+D2. RGB Substring (easy version) D2. RGB Substring (hard version) (思维,枚举,前缀和)
D1. RGB Substring (easy version) time limit per test2 seconds memory limit per test256 megabytes inp ...
- Codeforces Round #575 (Div. 3) C. Robot Breakout (模拟,实现)
C. Robot Breakout time limit per test3 seconds memory limit per test256 megabytes inputstandard inpu ...
- Codeforces Round #575 (Div. 3) B. Odd Sum Segments (构造,数学)
B. Odd Sum Segments time limit per test3 seconds memory limit per test256 megabytes inputstandard in ...
- Codeforces Round #575 (Div. 3) (A. Three Piles of Candies)(数学)
A. Three Piles of Candies time limit per test1 second memory limit per test256 megabytes inputstanda ...
- Codeforces Round #575 (Div. 3) 题解
比赛链接:https://codeforc.es/contest/1196 A. Three Piles of Candies 题意:两个人分三堆糖果,两个人先各拿一堆,然后剩下一堆随意分配,使两个人 ...
- Codeforces Round #575 (Div. 3) B. Odd Sum Segments 、C Robot Breakout
传送门 B题题意: 给你n个数,让你把这n个数分成k个段(不能随意调动元素位置).你需要保证这k个段里面所有元素加起来的和是一个奇数.问可不可以这样划分成功.如果可以打印YES,之后打印出来是从哪里开 ...
随机推荐
- web项目超时方案
1. 场景描述 平台使用的Greenplum(内核是postgresql8.2)集群存储大数据量数据(每天一个表大概3亿),因为数据量比较大,所以在使用上有些限制,一是操作限制:二是不限制,但是到一定 ...
- 控制反转&依赖注入
IoC(Inversion of Control,控制反转).这是spring的核心,贯穿始终.所谓IoC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系.这是什么 ...
- 20140115-SqlHelper为什么是静态的
为什么SqlHelper(或工具类)是静态的? 静态构造函数仅调用一次(即只是在程序生命周期中实例一次),在程序驻留的应用程序域的生存期内,静态类一直保留在内存中 这样可以减少每次使用的实例过程,就是 ...
- 微信小程序开发--API界面交互
一.wx:showActionSheet(上拉菜单) 属性 类型 默认值 必填 说明 itemList Array.<string> 是 按钮的文字数组,数组长度最大为 6 itemC ...
- Java文本类型输入与输出
import java.io.*; import java.time.LocalDate; import java.util.Scanner; public class Test { public s ...
- FC游戏修改教程(hack)小白文。
FC(NES)红白机Family Computer(简称FAMICOM)(或Nintendo Entertainment System)是任天堂公司发行的第一代家用游戏机. 修改FC游戏需要的工具有 ...
- VBox on 14.04: Kernel driver not installed (rc=-1908) [duplicate]
这几天刚刚装上Ubuntu的系统开始写Android代码,真心是流畅了很多,但是也出现了很多的问题. 还好 有大神护佑,童鞋博客首页,点击查看吧. 刚刚又遇到了一个新的问题,那就是我想用genymot ...
- Amdahl定律理解
其中,a为并行计算部分所占比例,k为并行处理的个数. 当1-a=0时,(没有串行,只有并行)最大加速比s=n: 当a=0时,(只有串行,没有并行)最小加速比s=1: 当k→∞时,s → 1 /(1-a ...
- SPC 数据分析工具
趁着公司在做QMS软件,自己实现一个简易版,类似minitab的工具. 环境:.net framework 4.0 目前提供功能: 数据存储,载入 计量型控制图:单值移动极差图.均值极差图.均值标准差 ...
- CSS(下)
1.CSS边框 边框属性: 1.border-width 宽度 2.border-style 样式 none 无边框 dotted 点状虚线边框 dashed 矩形虚线边框 solid 实线边框 3. ...