第八场

CodeForces - 1288A. Deadline

Example

input

3
1 1
4 5
5 11

output

YES
YES
NO

Note

In the first test case, Adilbek decides not to optimize the program at all, since \(d≤n\).

In the second test case, Adilbek can spend \(1\) day optimizing the program and it will run \(⌈\frac52⌉=3\) days. In total, he will spend \(4\) days and will fit in the limit.

In the third test case, it's impossible to fit in the limit. For example, if Adilbek will optimize the program \(2\) days, it'll still work \(⌈\frac{11}{2+1}⌉=4\) days.

题意:

\(Adilbek\) 有一个编程任务,总工期为 \(n\) 天,直接暴力完成需要 \(d\) 天。但他可以选择花 \(x\) 天进行优化,然后再花 \(⌈\frac{d}{x + 1}⌉\) 天运行。如果可以在工期内完成则输出 \(YES\) 不然输出 \(NO\)。

思路:

如果暴力完成天数小于工期则不需要去特地优化,不然的话需要进行优化但优化天数是不能超过 工期数(即 \(x < n\))。

详解看代码更好理解。

#include<bits/stdc++.h>
#define ms(a,b) memset(a,b,sizeof a)
using namespace std;
typedef long long ll;
const int N = 1e5 + 100;
ll _, n, d, a[N], i, j;
void solve() {
cin >> n >> d;
if (d <= n) {
cout << "YES" << endl;
return;
}
for (int x = 1; x < d && x <= n; ++x) {
if ((x + ceil((float)d / (x + 1))) <= n) {//必须要先提高精度(float化)不然在除的时候会导致错误,如4/3 = 1.333 = 1发生错误
cout << "YES" << endl;
return;
}
}
cout << "NO" << endl;
} int main() {
//freopen("in.txt", "r", stdin);
ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);
cin >> _; while (_--) solve();
}

CodeForces - 1288B. Yet Another Meme Problem

input

3
1 11
4 2
191 31415926

output

1
0
1337

Note

There is only one suitable pair in the first test case: \(a=1, b=9 (1+9+1⋅9=19)\).

题目内部图片:

题意:

给定\(A,B\) 求$ 1≤a≤A, 1≤b≤B1$ 有多少对(a,b)使\(a⋅b+a+b=conc(a,b)\) 成立。

思路:

仔细分解一下所给的公式:

\[a * b + a + b = conc(a,b)\\
a * b + a + b = a * 10^{|num|} + b \\
| num | 是b的十进制表示长度。\\
a * b + a = a * 10^{|num|}\\
b + 1 = 10^{|num|}\\
因此,b总是看起来像99…99。 因此,答案是a *(| num + 1 | -1)。
\]
#include<bits/stdc++.h>
#define ms(a,b) memset(a,b,sizeof a)
using namespace std;
typedef long long ll;
const int mod = 1e9 + 7;
const int N = 1e5 + 100;
ll _, n, m, a[N], i, j; void solve() {
ll A, B; cin >> A >> B;
ll weinum = 0, i = B;
bool flag = true;
while (i) {
weinum++;
i /= 10;
}
i = B;
while (i) {
if (i % 10 != 9) {
flag = false;
break;
}
i /= 10;
}
if (flag)cout << A * weinum << endl;
else cout << A * (weinum - 1) << endl;
} int main() {
//freopen("in.txt", "r", stdin);
ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);
cin >> _; while (_--) solve();
}
#python
for t in range(int(input())):
a, b = map(int, input().split())
print(a * (len(str(b + 1)) - 1))

1288C - Two Arrays

组合数学问题。

让我们考虑以下顺序:

\[a_1,a_2,…,a_m,b_m,b_{m-1},…,b_1。
\]

它的长度为$ 2m \(的序列以降序排列,其中每个序列的每个元素都是\) 1 \(和\) n $之间的整数。

我们可以通过简单的组合来找到此类序列的数量-它是与重复结合在一起的。 所以答案是

\[\begin{pmatrix}n+2m−1\\\\2m\end{pmatrix} = (n+2m−1)!(2m)!/(n−1)!
\]
#python
from math import factorial as fact
mod = 10**9 + 7 def C(n, k):
return fact(n) // (fact(k) * fact(n - k)) n, m = map(int, input().split())
print(C(n + 2*m - 1, 2*m) % mod)

1288D - Minimax Problem

思路:来自CF官网

我们将使用二进制搜索来解决该问题。 假设我们想知道答案是否不少于x。

每个数组都可以由一个m位掩码表示,其中如果数组的第i个元素不少于x,则第i个位为1;如果第i个元素小于x,则第i个位为0。 如果要验证答案不小于x,则必须选择两个数组,使它们的掩码的按位或为\(2^m-1\)。

检查所有成对的数组太慢。 取而代之的是,我们可以将相同掩码表示的数组视为相等-这样,我们将不会有超过\(2^m\)个不同的数组,并且可以迭代\(4^m\)对。 总体而言,该解决方案在\(O(logA(4^m + nm))\)下工作。

C++代码实现:

#include<bits/stdc++.h>
using namespace std;
int n, m;
vector<vector<int> > a;
int a1, a2; bool can(int mid)
{
vector<int> msk(1 << m, -1);
for(int i = 0; i < n; i++)
{
int cur = 0;
for(int j = 0; j < m; j++)
if(a[i][j] >= mid)
cur ^= (1 << j);
msk[cur] = i;
}
if(msk[(1 << m) - 1] != -1)
{
a1 = a2 = msk[(1 << m) - 1];
return true;
}
for(int i = 0; i < (1 << m); i++)
for(int j = 0; j < (1 << m); j++)
if(msk[i] != -1 && msk[j] != -1 && (i | j) == (1 << m) - 1)
{
a1 = msk[i];
a2 = msk[j];
return true;
}
return false;
} int main()
{
scanf("%d %d", &n, &m);
a.resize(n, vector<int>(m));
for(int i = 0; i < n; i++)
for(int j = 0; j < m; j++)
scanf("%d", &a[i][j]);
int lf = 0;
int rg = int(1e9) + 43;
while(rg - lf > 1)
{
int m = (lf + rg) / 2;
if(can(m))
lf = m;
else
rg = m;
}
assert(can(lf));
printf("%d %d\n", a1 + 1, a2 + 1);
}

Educational Codeforces Round 80 A - D题题解(又是卡很久的一场比赛)的更多相关文章

  1. Educational Codeforces Round 80 A-E简要题解

    contest链接:https://codeforces.com/contest/1288 A. Deadline 题意:略 思路:根据题意 x + [d/(x+1)] 需要找到一个x使得上式小于等于 ...

  2. Educational Codeforces Round 80 (Rated for Div. 2)部分题解

    A. Deadline 题目链接 题目大意 给你\(n,d\)两个数,问是否存在\(x\)使得\(x+\frac{d}{x+1}\leq n\),其中\(\frac{d}{x+1}\)向上取整. 解题 ...

  3. Educational Codeforces Round 37-F.SUM and REPLACE题解

    一.题目 二.题目链接 http://codeforces.com/contest/920/problem/F 三.题意 给定$N$个范围在$[1, 1e6)$的数字和$M$个操作.操作有两种类型: ...

  4. Educational Codeforces Round 80 (Rated for Div. 2)

    A. Deadline 题目链接:https://codeforces.com/contest/1288/problem/A 题意: 给你一个 N 和 D,问是否存在一个 X , 使得 $x+\lce ...

  5. Educational Codeforces Round 80 C. Two Arrays(组合数快速取模)

    You are given two integers nn and mm . Calculate the number of pairs of arrays (a,b)(a,b) such that: ...

  6. Educational Codeforces Round 80 (Rated for Div. 2)D E

    D枚举子集 题:https://codeforces.com/contest/1288/problem/D题意:给定n个序列,每个序列m个数,求第i个和第j个序列组成b序列,b序列=max(a[i][ ...

  7. Educational Codeforces Round 37-G.List Of Integers题解

    一.题目 二.题目链接 http://codeforces.com/contest/920/problem/G 三.题意 给定一个$t$,表示有t次查询.每次查询给定一个$x$, $p$, $k$,需 ...

  8. Educational Codeforces Round 23 A-F 补题

    A Treasure Hunt 注意负数和0的特殊处理.. 水题.. 然而又被Hack了 吗的智障 #include<bits/stdc++.h> using namespace std; ...

  9. Educational Codeforces Round 12 B C题、

    B. Shopping 题意:n个顾客,每个顾客要买m个物品,商场总共有k个物品,看hint就只知道pos(x)怎么算了,对于每一个Aij在k个物品中找到Aij的位置.然后加上这个位置对于的数值,然后 ...

  10. Educational Codeforces Round 10 A B题、

    A. Gabriel and Caterpillar 题意: 就是说  一个小孩子去观察毛毛虫从 h1的地方爬到h2的地方.毛毛虫从10点爬到22点.每小时爬的距离是a, 晚上22点到第二天早上10点 ...

随机推荐

  1. 从零开始使用 ROS CDK 搭建云上解决方案

    作者: 金湛 前言 资源编排服务ROS(Resource Orchestration Service)是阿里云提供的一项简化云计算资源管理的服务.开发者和管理员可以编写模板,在模板中定义所需的阿里云资 ...

  2. 【uniapp】学习笔记day02 | uniapp搭建

    起因:需要做一个小程序,家人们谁懂啊,老师我真的不会做,由于懒得看视频学习,于是只能看博客学习了. uniapp 好处: 1.不用关心适配问题 2.可以发布到各大平台的小程序 3.上手容易,使用vue ...

  3. PTA 函数与递归部分题目讲解及思路

    7-1 判断素数 题目分析 题目输入n个数,判断其是否为质数 对于判断质数,只需要满足从2开始遍历的每一个数一直到√n均无法被n整除即可 关于为什么只要到√n呢? 因为n = √n * √n,因此其最 ...

  4. 华企盾DSC手机app注册保存成功登录时一直转圈

    可能是花生壳等映射软件不稳定,重启一下花生壳等工具

  5. 【笔记】 springCloud-configServer配置中心

    当然第一步还是得要了解啦! 介绍 做项目, 那么就少不了配置微服务架构中,配置文件众多,各个服务的配置文件也有可能不一样, Spring为我们提供了相应的配置中心组件--Spring Cloud co ...

  6. R6900 R7000刷梅林 AImesh组网

    本文作者: Colin本文链接: https://www.colinjiang.com/archives/netgear-r6900-flash-merlin-rom.html 然后开始讲正题,刷梅林 ...

  7. 如何延长window11更新信息?

    前言 日常使用电脑的时候,我们总是会遇到一个很常见的问题:如何关闭windows自动更新. 解决方法一: 暂停更新 解决方法二: 打开注册表: 运行 => regedit 进入: HKEY_LO ...

  8. 一些JavaSE学习过程中的思路整理(二)(主观性强,持续更新中...)

    目录 一些JavaSE学习过程中的思路整理(二)(主观性强,持续更新中...) 将一个子类的引用对象赋值给超类的对象(多态) 抽象方法和抽象类 简单概括以下包装器类的作用 面向接口编程时的一些细节 f ...

  9. macOS 安装 clang-tidy

    先安装 homebrew,网上教程很多,推荐官方教程,此处略过 通过 brew 安装 llvm brew install llvm 创建软连接,指向 homebrew 安装的 clang-tidy m ...

  10. 文心一言 VS 讯飞星火 VS chatgpt (32)-- 算法导论5.2 4题

    四.利用指示器随机变量来解如下的帽子核对问题(hat-heck problem):n位顾客,他们每个人给餐厅核对帽子的服务生一顶帽子.服务生以随机顺序将帽子归还给顾客.请问拿到自己帽子的客户的期望数是 ...