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,之后打印出来是从哪里开 ...
随机推荐
- Python 爬虫从入门到进阶之路(十四)
之前的文章我们已经可以根据 re 模块,Xpath 模块和 BeautifulSoup4 模块来爬取网站上我们想要的数据并且存储在本地,但是我们并没有对存储数据的格式有要求,本章我们就来看数据的存储格 ...
- Python基础-组织列表
1.字符串的几个常用方法 name = ''adb lovelace '' name.title() 首字母大写 name.upper() 全部大写 name.lower() 全部小写 2.组织列表操 ...
- leadcode的Hot100系列--78. 子集--位运算
看一个数组的子集有多少,其实就是排列组合, 比如:[0,1] 对应的子集有:[] [0] [1] [1,1] 这四种. 一般对应有两种方法:位运算 和 回溯. 这里先使用位运算来做. 位运算 一个长度 ...
- spark入门(三)键值对操作
1 简述 Spark为包含键值对类型的RDD提供了一些专有的操作.这些RDD被称为PairRDD. 2 创建PairRDD 2.1 在sprk中,很多存储键值对的数据在读取时直接返回由其键值对数据组成 ...
- Codeforces Gym101246C:Explode 'Em All(DP + bitset)
http://codeforces.com/gym/101246/problem/C 题意:给出一个n*m的图,“*”表示这个地方需要炸掉,炸弹可以如果丢在(i,j)位置的话,那么可以炸掉第i行第j列 ...
- kuangbin专题 专题一 简单搜索 迷宫问题 POJ - 3984
题目链接:https://vjudge.net/problem/POJ-3984 这个题目,emm,上代码,看的估计应该是刚开始接触搜索的,我带点注释,你能慢慢理解. #include <ios ...
- 多线程总结-同步之synchronized关键字
目录 1.为什么要使用synchronized? 2.synchronized锁什么,加锁的目的是什么? 3.代码示例 3.1锁this和临界资源对象 3.2锁class类对象 3.3 什么时候锁临界 ...
- Java学习笔记之---集合
Java学习笔记之---集合 (一)集合框架的体系结构 (二)List(列表) (1)特性 1.List中的元素是有序并且可以重复的,成为序列 2.List可以精确的控制每个元素的插入位置,并且可以删 ...
- 【拓扑排序】排队-C++
描述 今天,学校老师让同学们排成一队,准备带大家出去玩,一共有 n 名同学,排队的时候同学们向老师提了 m 条要求,每一条要求是说同学 x 一定要排在同学 y 之前,老师现在想找到一种排队方式可以满足 ...
- 多个数据库 migration
More than one DbContext was found. Specify which one to use. Use the '-Context' parameter for PowerS ...