Codeforces Global Round 2

题目链接:https://codeforces.com/contest/1119

A. Ilya and a Colorful Walk

题意:

给出n个数,问从一个数到另外一个不同数的最长距离是多少。

题解:

从前往后,从后往前扫两遍即可。证明可用反证法,这里略去。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 3e5 + ;
int n;
int c[N];
int main() {
ios::sync_with_stdio(false);cin.tie();
cin >> n;
for(int i = ; i <= n ;i++) {
cin >> c[i] ;
}
int ans = ;
for(int i = ; i <= n ;i++) {
if(c[i] != c[]) ans=max(i - , ans);
}
for(int i = n - ; i >= ; i--) {
if(c[i] != c[n]) ans=max(n - i, ans);
}
cout << ans;
return ;
}

B. Alyona and a Narrow Fridge

题意:

给一个冰箱n行2列,然后n个瓶子,每个瓶子都有一个高度。现在要把最多的前k个瓶子放进冰箱里面去,最后会形成若干个隔层,每个隔层中最多两个瓶子。现在要求确定这个k最大为多少。

题解:

放瓶子的话肯定是贪心放的,将最高的尽可能放入一个隔层中。最后二分判断一下就行了。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e3 + ;
int n, h;
int a[N], b[N];
bool check(int x) {
for(int i = ; i <= x ; i++) b[i] = a[i];
sort(b + , b + x + ) ;
int tmp = h;
for(int i = x; i >= ; i -= ) {
int j = max(, i - ) ;
tmp -= max(b[i], b[j]) ;
if(tmp < ) break ;
}
return tmp >= ;
}
int main() {
ios::sync_with_stdio(false);cin.tie();
cin >> n >> h;
for(int i = ; i <= n ;i++)
cin >> a[i] ;
int l = , r = n + , mid ;
while(l < r) {
mid = (l + r) >> ;
if(check(mid)) l = mid + ;
else r = mid;
}
cout << l - ;
return ;
}

C. Ramesses and Corner Inversion

题意:

给出两个n*m的01矩阵,现在每次可以选择任意一个有四个角的子矩阵(不存在为长度为1的边),并且将四个角取反,问最后是否能将第一个矩阵变为第二个矩阵。

题解:

考虑每次选择(1,1),(1,y),(x,1),(x,y)这样的四个点,那么我们就能够让所有除开第一行第一列的值都与第二个矩阵相等。

现在就只剩下第一行第一列了,如果每行、每列的奇偶性两个矩阵相等,那么剩下的第一行第一列必然也与第二个矩阵相等的。所以就这么判断一下就好了。

代码如下:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = ;
int a[N][N], b[N][N] ;
int n, m ;
int main() {
ios::sync_with_stdio(false);cin.tie();
cin >> n >> m ;
for(int i = ; i <= n ; i++) {
for(int j = ; j <= m ; j++) {
cin >> a[i][j] ;
}
}
for(int i = ; i <= n ; i++) {
for(int j = ; j <= m ; j++) {
cin >> b[i][j] ;
}
}
int f = ;
for(int i = ; i <= n ; i++) {
int cnt1 = , cnt2 = ;
for(int j = ; j <= m ; j++) {
if(a[i][j]) cnt1++;
if(b[i][j]) cnt2++;
}
if((cnt1 & ) != (cnt2 & )) f = ;
}
for(int i = ; i <= m ; i++) {
int cnt1 = , cnt2 = ;
for(int j = ; j <= n ; j++) {
if(a[j][i]) cnt1++;
if(b[j][i]) cnt2++;
}
if((cnt1 & ) != (cnt2 & )) f = ;
}
if(f) cout << "No" ;
else cout << "Yes" ;
return ;
}

D. Frets On Fire

题意:

给出n个数字,然后有多个询问,每次询问一个区间[L,R],回答这n个数字从L起加到R中所有数的集合中有多少个元素。

题解:

首先可以发现这题中数的位置顺序不影响答案,那么我们可以对其排序。接下来就考虑每一个数的贡献。

假设我们现在考虑ai的贡献,设di = ai+1 - ai,D = R - L,如果di <= D,那么很显然贡献就为di;如果di > D,此时贡献就为D,因为多出的那一部分必然会被ai+1给遍历到,我们之后考虑ai+1的时候计算就行了,这样就可以不重复也不遗漏了。

具体做法的话就需要维护差值前缀和,然后对于每次询问二分查找位置,计算就行了。

代码如下:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 2e5 + ;
int n;
ll a[N], s[N], sum[N]; int main() {
ios::sync_with_stdio(false);cin.tie() ;
cin >> n;
for(int i = ; i <= n; i++) {
cin >> a[i] ;
}
sort(a + , a + n + );
int l = unique(a + , a + n + ) - a - ;
for(int i = ; i < l ; i++) s[i] = a[i + ] - a[i] ;
sort(s + , s + l) ;
for(int i = ; i < l ; i++) sum[i] =sum[i - ] + s[i] ;
int q;
ll x, y;
cin >> q;
while(q--) {
cin >> x >> y ;
ll d = y - x + ;
int p = upper_bound(s + , s + l, d) - s - ;
ll ans = sum[p] ;
ans += 1ll * (l - p) * d;
cout << ans << ' ' ;
}
return ;
}

E. Pavel and Triangles

题意:

给出a0,a1...an-1,分别表示有a1个20长度的木棍,有a2个21长度的木棍...有an-1个2n-1长度的木棍。现在问怎么选取木棍,使得拼出三角形的数量最多(每个三角形由三根木棍拼成)。

题解:

通过分析就会发现,木棍的组合方式就只有(i,i,i)或者(i,j,j),其中i < j。这两种方式都是需要3根木棍,我们考虑贪心的方法来选取:

从后往前遍历,统计当前对数pairs,如果当前有奇数个并且pairs > 0,那么我们就用这剩下的一个随便与后面的一个pair配对,这样肯定是最优的。最后利用pairs统计答案即可。

代码如下:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = ;
int n;
int a[N];
int main() {
ios::sync_with_stdio(false);cin.tie();
cin >> n;
for(int i = ; i <= n ; i++) cin >> a[i] ;
ll pairs = ;
ll ans = ;
for(int i = n ; i >= ;i--) {
pairs += a[i] / ;
if(a[i] & && pairs > ) {
ans++;
pairs--;
}
}
ans += pairs * / ;
cout << ans ;
return ;
}

Codeforces Global Round 2 题解的更多相关文章

  1. Codeforces Global Round 3 题解

    这场比赛让我上橙了. 前三题都是大水题,不说了. 第四题有点难想,即使想到了也不能保证是对的.(所以说下面D的做法可能是错的) E的难度是 $2300$,但是感觉很简单啊???说好的歪果仁擅长构造的呢 ...

  2. Codeforces Global Round 4 题解

    技不如人,肝败吓疯…… 开场差点被 A 题意杀了,幸好仔细再仔细看,终于在第 7 分钟过掉了. 跟榜.wtf 怎么一群人跳题/倒序开题? 立刻紧张,把 BC 迅速切掉,翻到了 100+. 开 D.感觉 ...

  3. Codeforces Global Round 16题解

    E. Buds Re-hanging 对于这个题该开始还是没想法的,但这显然是个思维题,还是要多多动手推样例,实践一下. 简化题意:给定一个有根树,规定某个点为树干,当且仅当这个点不是根,且这个点至少 ...

  4. Codeforces Global Round 1 (A-E题解)

    Codeforces Global Round 1 题目链接:https://codeforces.com/contest/1110 A. Parity 题意: 给出{ak},b,k,判断a1*b^( ...

  5. Codeforces Global Round 11 个人题解(B题)

    Codeforces Global Round 11 1427A. Avoiding Zero 题目链接:click here 待补 1427B. Chess Cheater 题目链接:click h ...

  6. CodeForces Global Round 1

    CodeForces Global Round 1 CF新的比赛呢(虽然没啥区别)!这种报名的人多的比赛涨分是真的快.... 所以就写下题解吧. A. Parity 太简单了,随便模拟一下就完了. B ...

  7. Codeforces Global Round 1 - D. Jongmah(动态规划)

    Problem   Codeforces Global Round 1 - D. Jongmah Time Limit: 3000 mSec Problem Description Input Out ...

  8. Codeforces Global Round1 简要题解

    Codeforces Global Round 1 A 模拟即可 # include <bits/stdc++.h> using namespace std; typedef long l ...

  9. Codeforces Global Round 1 (CF1110) (未完结,只有 A-F)

    Codeforces Global Round 1 (CF1110) 继续补题.因为看见同学打了这场,而且涨分还不错,所以觉得这套题目可能会比较有意思. 因为下午要开学了,所以恐怕暂时不能把这套题目补 ...

随机推荐

  1. mac安装pkg 一直“正在验证” 卡着

    今天换了新mac, 但是之前wireshark(抓包工具) 不能用了 ,要安装Xquartz. 下载之后一直卡着, 网上找了半天没有解决方法. 最后我重启一下就好了... 重启一下. 2. 15款ma ...

  2. 音频分析框架pyAudioAnalysis文档

    “ pyAudioAnalysis是一个非常好用且强大的音频分析开源工具,能实现音频的特征提取.分类和回归模型的训练和执行,以及其他一些实用的功能.此外,本文档并非直译,也有部分比较简略,可以结合源码 ...

  3. 如何理解IPD+CMMI+Scrum一体化研发管理解决方案之Scrum篇

    如何快速响应市场的变化,如何推出更有竞争力的产品,如何在竞争中脱颖而出,是国内研发企业普遍面临的核心问题,为了解决这些问题,越来越多的企业开始重视创新与研发管理,加强研发过程的规范化,集成产品开发(I ...

  4. 第18次Scrum会议(10/30)【欢迎来怼】

    一.小组信息 队名:欢迎来怼小组成员队长:田继平成员:李圆圆,葛美义,王伟东,姜珊,邵朔,冉华 小组照片 二.开会信息 时间:2017/10/30 17:19~17:38,总计19min.地点:东北师 ...

  5. c# dataGridView排序

    一.对阿拉伯数字进行自定义排序: 简单有效方法: 1.该列的sortmode属性为auto...(一般默认) 2.比如首列序号,添加该列数据的时候直接添加int即可.切忌不要用string. obje ...

  6. Right-BICEP 测试四则运算程序

    测试方法:      Right-BICEP 测试计划: 1.边界测试是否正确 2.负数表示是否实现 3.是否有乘除法 4.是否可以选择题目数量 5.是否有输出方式 6.是否有括号 7.是否有重复查询 ...

  7. tomcat启动时,报java.io.EOFException

    在启动Tomcat的时候突然报出IO异常,具体异常如下图 在网上找了解决方法,测试了好几种,都不行,到最后看了一个博客解决了,在此记录一下. 百度了下,网上都是说去Tomcat目录下:将tomcat5 ...

  8. prefix pch 中引用cocoapods 中的头文件失败

    如题,遇到这个问题,卡了几个小时,记下来防止下次再卡住: 解决办法: 1.pod install, 2.新建pch文件:projectname-Prefix.pch, 3.按要求在工程配置中添加, O ...

  9. UVA 11270 轮廓线

    题目链接: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=33787 题意: 用1*2或2*1的长条把n*m方格铺满的方案数. ...

  10. HDU 4489 The King’s Ups and Downs dp

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4489 The King's Ups and Downs Time Limit: 2000/1000 ...