比赛链接:https://codeforc.es/contest/1201

A. Important Exam

题意:有\(n\)个人,每个人给出\(m\)个答案,每个答案都有一个分值\(a_i\),每个问题的正确答案不确定,询问最大可能的得分为多少。

分析:对于每个问题贪心最大数量就好。

AC代码:

#include <bits/stdc++.h>
#define SIZE 500007
#define rep(i, a, b) for(int i = a; i <= b; ++i)
using namespace std;
typedef long long ll;
void io() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
}
int n, m, t;
string s;
map<char, int>mp[1005];
int main() {
io(); cin >> n >> m;
rep(i, 1, n) {
cin >> s;
rep(j, 0, s.length() - 1) {
mp[j + 1][s[j] - 'a']++;
}
}
ll ans = 0;
rep(i, 1, m) {
cin >> t;
int maxx = 0;
for (auto it : mp[i]) {
maxx = max(maxx, it.second);
}
ans += 1ll * maxx * t;
}
cout << ans;
}

 

B. Zero Array

题意:给出一个\(n\)个数的数列,每次操作能将其中任意两个数\(-1\),询问能否将这个数列全部减为零。

分析:首先由于每次减少的总数为2,因此和为奇数的数列不行。再考虑和为偶数的数列,发现当且仅当最大的数值大于数列总和的一半时不存在。

AC代码:

#include <bits/stdc++.h>
#define SIZE 500007
#define rep(i, a, b) for(int i = a; i <= b; ++i)
using namespace std;
typedef long long ll;
void io() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
}
int n, m, t;
ll a[SIZE];
int main() {
io(); cin >> n;
ll sum = 0;
rep(i, 1, n) {
cin >> a[i];
sum += a[i];
}
sort(a + 1, a + 1 + n);
if (sum & 1) { cout << "NO"; return 0; }
else {
if (a[n] > sum / 2)cout << "NO";
else cout << "YES";
}
}

 

C. Maximum Median

题意:给定一个\(n\)个数的数列和\(k\)次操作,每次能将数列中的一个数\(+1\)。询问\(k\)次操作后数列中位数的最大值为多少。(\(n\)为奇数)

分析:先排序,然后为了使中位数最大,我们显然只用对当前数列中位数及中位数之后的数进行操作。于是我们考虑贪心地加,下面举个例子:

7 7

1 2 3 4 5 6 10

第一步:1 2 3 5 5 6 10

第二步:1 2 3 6 6 6 10

第三步:1 2 3 7 7 8 10

这种贪心的构造通过一种类似于前缀和的想法即可实现,AC代码:

#include <bits/stdc++.h>
#define SIZE 500007
#define rep(i, a, b) for(int i = a; i <= b; ++i)
using namespace std;
typedef long long ll;
void io() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
}
int n, m, t, k;
ll a[SIZE], pre[SIZE];
int main() {
io(); cin >> n >> k;
rep(i, 1, n) cin >> a[i];
sort(a + 1, a + 1 + n);
rep(i, (n + 3) / 2, n) {
pre[i] = pre[i - 1] + (i - (n + 1) / 2) * (a[i] - a[i - 1]);
if (pre[i] > k) {
ll tmp = ((k - pre[i - 1]) / (i - (n + 1) / 2));
cout << a[i - 1] + tmp;
return 0;
}
}
ll tmp = (k - pre[n]) / ((n + 1) / 2);
cout << tmp + a[n];
}

 

D题下午打完多校再写吧。。。

upd:咕咕咕

Codeforces Round #577 (Div. 2) 题解的更多相关文章

  1. Codeforces Round #182 (Div. 1)题解【ABCD】

    Codeforces Round #182 (Div. 1)题解 A题:Yaroslav and Sequence1 题意: 给你\(2*n+1\)个元素,你每次可以进行无数种操作,每次操作必须选择其 ...

  2. Codeforces Round #608 (Div. 2) 题解

    目录 Codeforces Round #608 (Div. 2) 题解 前言 A. Suits 题意 做法 程序 B. Blocks 题意 做法 程序 C. Shawarma Tent 题意 做法 ...

  3. Codeforces Round #525 (Div. 2)题解

    Codeforces Round #525 (Div. 2)题解 题解 CF1088A [Ehab and another construction problem] 依据题意枚举即可 # inclu ...

  4. Codeforces Round #528 (Div. 2)题解

    Codeforces Round #528 (Div. 2)题解 A. Right-Left Cipher 很明显这道题按题意逆序解码即可 Code: # include <bits/stdc+ ...

  5. Codeforces Round #466 (Div. 2) 题解940A 940B 940C 940D 940E 940F

    Codeforces Round #466 (Div. 2) 题解 A.Points on the line 题目大意: 给你一个数列,定义数列的权值为最大值减去最小值,问最少删除几个数,使得数列的权 ...

  6. Codeforces Round #577 (Div. 2) D. Treasure Hunting

    Codeforces Round #577 (Div. 2)  D. Treasure Hunting 这个一场div2 前面三题特别简单,这个D题的dp还是比较难的,不过题目告诉你了只能往上走,所以 ...

  7. Codeforces Round #677 (Div. 3) 题解

    Codeforces Round #677 (Div. 3) 题解 A. Boring Apartments 题目 题解 简单签到题,直接数,小于这个数的\(+10\). 代码 #include &l ...

  8. Codeforces Round #665 (Div. 2) 题解

    Codeforces Round #665 (Div. 2) 题解 写得有点晚了,估计都官方题解看完切掉了,没人看我的了qaq. 目录 Codeforces Round #665 (Div. 2) 题 ...

  9. Codeforces Round #160 (Div. 1) 题解【ABCD】

    Codeforces Round #160 (Div. 1) A - Maxim and Discounts 题意 给你n个折扣,m个物品,每个折扣都可以使用无限次,每次你使用第i个折扣的时候,你必须 ...

随机推荐

  1. 161.内置User模型的基本使用

    User模型 user模型是这个框架的核心部分,他的完整路径是在django.contrib.auth.models.User.对User对象做一个简单的了解. 字段: 内置的User模型有以下字段: ...

  2. Python之QRCode

    目录 一.基本介绍 介绍 QRCode二维码版本展示 QRCode方法 常用函数 二.安装QRCode 三.基本案例 生成普通二维码: 生成带有图片的二维码: 四.制作动态二维码 安装 myqr 和 ...

  3. rest_framework:版本控制

    一.作用: 用于版本的控制,区分不同的功能,对于一些新增功能的添加更新就会在新的版本中体现,有点类似于,新版本就是软件发布的新版本,和老版本相比新增或者修改了一些功能 二.内置的版本控制类: from ...

  4. c# 让接口实现方法

    interface IMy { } static class MyFunc { public static void Func<T>(this T obj) where T : IMy { ...

  5. Unable to guess the mime type as no guessers are available (Did you enable the php_fileinfo extension?)

    原因是没有开启php的php_fileinfo扩展,开启即可. 找到php.ini文件,搜索到php_fileinfo,去掉前面的分号,然后重启服务器apache.nginx下同理. extensio ...

  6. C#对config.ini文件进行读取和修改

    C#对config.ini文件进行读取和修改: public partial class Patrolcar : Form之后可以加入如下类: #region public class IniFile ...

  7. js加密(二)文书获取

    时间原因直接上代码,有空再解释. js代码: //var tm=new Array(1) //tm[0]=e; ////tm[1]="%u5e72%u82e5%u4f5c%u5de5%u88 ...

  8. 【算法学习记录-排序题】【PAT A1016】Phone Bills

    A long-distance telephone company charges its customers by the following rules: Making a long-distan ...

  9. python之路之生成器和的迭代器

    生成器的基本原理 生成器实现xrange 迭代器

  10. 将java字节自动转为"B", "KB", "MB", "GB", "TB"等

    //字节转换 public static String readableFileSize(long size) { if (size <= 0) return "0"; fi ...