AtCoder Beginner Contest 194
A I Scream
int main()
{
IOS;
int a, b;
cin >> a >> b;
if(a + b >= 15 && b >= 8) puts("1");
else if(a + b >= 10 && b >= 3) puts("2");
else if(a + b >= 3) puts("3");
else puts("4");
return 0;
}
B
int n;
int a[N], b[N];
int main()
{
scanf("%d", &n);
int res = INF;
for(int i = 1; i <= n; ++ i)
{
scanf("%d%d", &a[i], &b[i]);
res = min(res, a[i] + b[i]);
}
for(int i = 1; i <= n; ++ i)
for(int j = 1; j <= n; ++ j)
if(i != j) res = min(max(a[i], b[j]), res);
printf("%d\n", res);
return 0;
}
C Squared Error
\(\sum\limits_{i=2}^N\sum\limits_{j=1}^{i-1}(A_i-A_j)^2\) = \(\sum\limits_{i=1}^NA_i^2 * (N - 1) - \sum\limits_{i=2}^NA_i\sum\limits_{j=1}^{i - 1}2 * A_j\)
用前缀和优化后复杂度 \(O(n)\)
int n;
int a[N], sum[N];
int main()
{
scanf("%d", &n);
LL res = 0;
for(int i = 1; i <= n; ++ i)
{
scanf("%d", &a[i]);
res += (LL)a[i] * a[i] * (n - 1);
res -= (LL)sum[i - 1] * a[i] * 2;
sum[i] = sum[i - 1] + a[i];
}
printf("%lld\n", res);
return 0;
}
D Journey
令当前已经访问过的顶点集合为 \(S\), 下一次能使得 \(|S|\) 增加 \(1\) 的概率为 \(\dfrac{N - |S|}{N}\), 首中即停止,符合几何分布,已知几何分布的期望是 \(\dfrac{1}{p}\), 故期望是 \(\sum\limits_{i = 1}^{n - 1}\dfrac{N}{N - i}\)
int n;
int main()
{
cin >> n;
double res = 0;
for(int i = 1; i < n; ++ i) res += (double)n / i;
printf("%.10lf\n", res);
return 0;
}
E Mex Min Editorial
对于相同的两个数 \(x\),如果它们之间的距离大于 \(M\),则代表有一段长度为 \(M\) 的区间中没有 \(x\), \(x\)则可以作为答案
为了处理边界情况,在 \(0\) 和 \(n + 1\) 的位置上放置每一个数
int n, m;
int last[N];
int main()
{
scanf("%d%d", &n, &m);
int res = INF;
for(int i = 1; i <= n; ++ i)
{
int x;
scanf("%d", &x);
if(i - last[x] > m) res = min(x, res);
last[x] = i;
}
for(int i = 0; i <= n; ++ i)
if(n + 1 - last[i] > m)
res = min(i, res);
printf("%d\n", res);
return 0;
}
F Digits Paradise in Hexadecimal
令 \(f[i][j]\) 为前 \(i\) 位选了 \(j\) 种的方案数,且选出的方案都严格小于上界
当上一位未达到上界时:
\(f[i + 1][j] += f[i][j] * j\)
\(f[i + 1][j + 1] += f[i][j] * (16 - j)\)
因为要处理前导零,所以从 \(0\) 转移要特殊处理:
\(f[i + 1][1] += f[i][0] * 15\)
\(f[i + 1][0] += f[i][0]\)
再统计上一位达到上界时,当前位取 \(0\) ~ \(v[i] - 1\) 的贡献
最后特判掉所有位都取到上界是否符合题意
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
#define IOS ios::sync_with_stdio(false); cin.tie(0);cout.tie(0)
const int P = 1e9 + 7;
const double PI = acos(-1.0);
const int INF = 0x3f3f3f3f;
const int N = 3e6 + 10;
int main()
{
IOS;
int n;
string str;
vector<int> v;
cin >> str >> n;
for(auto x : str)
if(x >= '0' && x <= '9') v.push_back((int)(x - '0'));
else v.push_back((int)(10 + x - 'A'));
vector<vector<int> > f(str.size() + 1, vector<int>(18, 0));
int state = 0;
for(int i = 0; i < (int)str.size(); ++ i)
{
for(int j = 1; j <= 16; ++ j)
{
f[i + 1][j] = (f[i + 1][j] + (LL)f[i][j] * j % P) % P;
f[i + 1][j + 1] = (f[i + 1][j + 1] + (LL)f[i][j] * (16 - j) % P) % P;
}
f[i + 1][1] = (f[i + 1][1] + (LL)f[i][0] * 15 % P) % P;
f[i + 1][0] = (f[i + 1][0] + f[i][0]) % P;
for(int j = 0; j < v[i]; ++ j)
{
int nstate = state;
if(i || j) nstate |= (1 << j);
f[i + 1][__builtin_popcount(nstate)] += 1;
}
state |= (1 << v[i]);
}
int res = f[str.size()][n] + (__builtin_popcount(state) == n);
cout << res << endl;
return 0;
}
AtCoder Beginner Contest 194的更多相关文章
- AtCoder Beginner Contest 100 2018/06/16
A - Happy Birthday! Time limit : 2sec / Memory limit : 1000MB Score: 100 points Problem Statement E8 ...
- AtCoder Beginner Contest 052
没看到Beginner,然后就做啊做,发现A,B太简单了...然后想想做完算了..没想到C卡了一下,然后还是做出来了.D的话瞎想了一下,然后感觉也没问题.假装all kill.2333 AtCoder ...
- AtCoder Beginner Contest 053 ABCD题
A - ABC/ARC Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Smeke has ...
- AtCoder Beginner Contest 136
AtCoder Beginner Contest 136 题目链接 A - +-x 直接取\(max\)即可. Code #include <bits/stdc++.h> using na ...
- AtCoder Beginner Contest 137 F
AtCoder Beginner Contest 137 F 数论鬼题(虽然不算特别数论) 希望你在浏览这篇题解前已经知道了费马小定理 利用用费马小定理构造函数\(g(x)=(x-i)^{P-1}\) ...
- AtCoder Beginner Contest 076
A - Rating Goal Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Takaha ...
- AtCoder Beginner Contest 079 D - Wall【Warshall Floyd algorithm】
AtCoder Beginner Contest 079 D - Wall Warshall Floyd 最短路....先枚举 k #include<iostream> #include& ...
- AtCoder Beginner Contest 064 D - Insertion
AtCoder Beginner Contest 064 D - Insertion Problem Statement You are given a string S of length N co ...
- AtCoder Beginner Contest 075 D - Axis-Parallel Rectangle【暴力】
AtCoder Beginner Contest 075 D - Axis-Parallel Rectangle 我要崩溃,当时还以为是需要什么离散化的,原来是暴力,特么五层循环....我自己写怎么都 ...
随机推荐
- C# 通过Internet搜索网络资源
Internet 网络资源非常丰富,几乎涉及到日常生活和研究的各个方面.流行的搜索引擎像Google.百度.雅虎等都能完成快速搜索网络资源的功能.本节我们将学习用C#实现这些功能的基本思路. 在Sys ...
- 鸟哥的linux私房菜——第六章学习(Linux文件与目录管理)
******************第六章学习****************** 1.[文件与目录管理] 在所有目录下面都会存在的两个目录,分别是 "." 与 "..& ...
- 杭电多校HDU 6656 Kejin Player(概率DP)题解
题意: 最低等级\(level\ 1\),已知在\(level\ i\)操作一次需花费\(a_i\),有概率\(p_i\)升级到\(level\ i+1\),有\(1 - p_i\)掉级到\(x_i( ...
- HDU 4866 Shooting(主席树)题解
题意:在一个射击游戏里面,游戏者可以选择地面上[1,X]的一个点射击,并且可以在这个点垂直向上射击最近的K个目标,每个目标有一个价值,价值等于它到地面的距离.游戏中有N个目标,每个目标从L覆盖到R,距 ...
- Dapr 正式发布1.0
年前我写了一篇博客<Dapr 已在塔架就位 将发射新一代微服务>, 今天Dapr 正式发布了1.0 : Dapr Runtime v1.0.0 Dapr dotnet SDK v1.0.0 ...
- How to Use RSS on Your Website
RSS feed 1 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...
- 使用 js 实现一个简易版的 drag & drop 库
使用 js 实现一个简易版的 drag & drop 库 具有挑战性的前端面试题 H5 DnD js refs https://www.infoq.cn/article/0NUjpxGrqRX ...
- TypeScript & Advanced Types
TypeScript & Advanced Types https://www.typescriptlang.org/docs/handbook/advanced-types.html#typ ...
- 发布npm包时,发布源码,而不是dist后的打包文件
基于webpack-scaffold 此脚手架配置 删除.gitignore文件中对dist文件夹的无视配置 修改package.json文件 { "private": true, ...
- 「NGK每日快讯」12.14日NGK公链第41期官方快讯!