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 我要崩溃,当时还以为是需要什么离散化的,原来是暴力,特么五层循环....我自己写怎么都 ...
随机推荐
- Pyqt5 安装
window 安装PyQt5 pip install pyqt5 pip install pyqt5-tools (安装常用的Qt工具) 添加环境变量 变量名: QT_QPA_PLATFORM_PL ...
- 考研路茫茫——单词情结 HDU - 2243 AC自动机 && 矩阵快速幂
背单词,始终是复习英语的重要环节.在荒废了3年大学生涯后,Lele也终于要开始背单词了. 一天,Lele在某本单词书上看到了一个根据词根来背单词的方法.比如"ab",放在单词前一般 ...
- 二、Python基础(input、变量名、条件语句、循环语句、注释)
一.input用法 input在Python中的含义为永远等待,直到用户输入了值,从而将所输入的值赋值另外的一个东西. n=input('请输入......') 接下来用一个例子学习input的用法 ...
- CQRS Event Sourcing介绍
什么是CQRS模式? CQRS是Command and Query Responsibility Segregation的缩写,直译就是命令与查询责任分离的意思. 命令会改变对象的状态,但不返回任何数 ...
- entity framwork修改指定字段
1.ef修改时指修改指定字段public void ChangePassword(int userId, string password) { var user = new User() { Id = ...
- M1 MacBook安装Homebrew
在装载M1芯片的MacBook产品上,默认是不带有homebrew这款包管理工具的,具体原因官方解释为适配问题,原有的homebrew无法与silicon Mac机型匹配.但是这并不意味着我们不可以在 ...
- Explain 索引优化分析
Explain 语法 # 语法 explain + DQL语句 mysql> explain select * from city where countrycode ='CHN' or cou ...
- Petrozavodsk Summer Training Camp 2016H(多标记线段树)题解
题意: \(n\)个草,第\(0\)天种下,高度都为\(0\),每个草每天长高\(a_i\).现给出\(q\)询问,每次给出第\(b_i\)天,然后把高于\(d_i\)的全削成\(d_i\),每次问你 ...
- HDU 4628 Pieces(状压DP)题解
题意:n个字母,每次可以删掉一组非连续回文,问你最少删几次 思路:把所有回文找出来,然后状压DP 代码: #include<set> #include<map> #includ ...
- Flutter for web
Flutter for web https://flutter.dev/web https://github.com/flutter/flutter_web Dart https://github.c ...