AtCoder Beginner Contest 180 个人题解(快乐DP场)
补题链接:Here
A - box
输出 \(N - A + B\)
B - Various distances
按题意输出 3 种距离即可
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main() {
ios_base::sync_with_stdio(false), cin.tie(0);
int N;
ll x;
ll ans1 = 0, ans2 = 0, ans3 = 0;
cin >> N;
for (int i = 0; i < N; i++) {
cin >> x;
ans1 += abs(x);
ans2 += x * x;
ans3 = max(ans3, abs(x));
}
double ans2_ = sqrt(double(ans2));
cout << ans1 << endl;
cout << fixed << setprecision(20) << ans2_ << endl;
cout << ans3 << endl;
}
C - Cream puff
set 容器存因子,然后循环输出
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main() {
ios_base::sync_with_stdio(false), cin.tie(0);
ll x, y, a, b;
cin >> x >> y >> a >> b;
ll ans = 0;
while ((a - 1) * x <= b && a * x < y && (double)a * x <= 2e18) {
x *= a, ans++;
}
cout << ans + (y - 1 - x) / b << '\n';
return 0;
}
D - Takahashi Unevolved
题意:Iroha 在游戏中有一只宠物加 Takahashi,为了帮助 Takahashi 变得强力起来,需要将它送入训练场
- Kakomon Gym:\(STR \times= A,EXP += 1\)
- AtCoder Gym:\(STR += B,EXP += 1\)
但是 STR 不能超过 Y 的情况下求 EXP 的最大值
思路:最大化去第一种 Gym 的次数然后用 Y减去差值除 B 即可
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main() {
ios_base::sync_with_stdio(false), cin.tie(0);
ll x, y, a, b;
cin >> x >> y >> a >> b;
ll ans = 0;
while ((a - 1) * x <= b && a * x < y && (double)a * x <= 2e18) {
x *= a, ans++;
}
cout << ans + (y - 1 - x) / b << '\n';
return 0;
}
E - Traveling Salesman among Aerial Cities
https://blog.csdn.net/weixin_45750972/article/details/109144617
题意:给定边权的计算方法,求n nn个结点的最小曼哈顿回路花费。
思路:状压DP
令\(dp(i,j)\)为状态 \(i\) 下从起点出发到 \(j\) 的最小花费,这里的状态 \(i\) 指从起点要经过的城市
最后答案即为:\(dp[(1<<n)−1][0]\),假设起点为 \(0\)。
状态方程:\(dp[i][j]=min(dp[i][j],dp[i−(1<<j)][k]+dis(k,j)),(i\&(1<<j)>0)\)
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = 17, M = (1 << 17) + 1;
int n, x[N], y[N], z[N];
ll dp[M][N];
ll d(int a, int b) {
return abs(x[a] - x[b]) + abs(y[a] - y[b]) + max(0, z[b] - z[a]);
}
int main() {
ios_base::sync_with_stdio(false), cin.tie(0);
cin >> n;
for (int i = 0; i < n; ++i) cin >> x[i] >> y[i] >> z[i];
memset(dp, 0x3f, sizeof(dp));
dp[0][0] = 0;
for (int i = 1; i < (1 << n); ++i) {
for (int j = 0; j < n; ++j)
if ((i >> j) & 1)
for (int k = 0; k < n; ++k)
dp[i][j] = min(dp[i][j], dp[i - (1 << j)][k] + d(k, j));
}
cout << dp[(1 << n) - 1][0] << '\n';
return 0;
}
F - Unbranched
这里做的有点懵,贴一下代码
这里使用了 atcoder/all 头文件,添加方法:Click Here
#include <atcoder/all>
using mint = atcoder::modint1000000007;
int N, M, L;
mint f(int L) {
mint dp[303][303];
dp[0][0] = 1;
for (int i = 0; i < N; i++)
for (int j = 0; j <= i; j++) {
mint T = dp[i][j];
for (int k = 1; i + k <= N && j + k - 1 <= M && k <= L; k++) {
if (k > 1) dp[i + k][j + k] += T;
if (k == 2) T *= 500000004;
dp[i + k][j + k - 1] += T * k;
T *= N - i - k;
}
}
return dp[N][M];
}
int main() {
std::cin >> N >> M >> L;
std::cout << (f(L) - f(L - 1)).val();
return 0;
}
AtCoder Beginner Contest 180 个人题解(快乐DP场)的更多相关文章
- KYOCERA Programming Contest 2021(AtCoder Beginner Contest 200) 题解
KYOCERA Programming Contest 2021(AtCoder Beginner Contest 200) 题解 哦淦我已经菜到被ABC吊打了. A - Century 首先把当前年 ...
- AtCoder Beginner Contest 089完整题解
A - Grouping 2 Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement There a ...
- AtCoder Beginner Contest 179 D - Leaping Tak (DP)
题意:给你一个数字\(n\)和\(k\)个区间,\(S\)表示所有区间的并的集合,你目前在\(1\),每次可以从集合中选择一个数字向右移动,问有多少种方法从\(1\)走到\(n\). 题解:我们从1开 ...
- AtCoder Beginner Contest 261E // 按位思考 + dp
题目链接:E - Many Operations (atcoder.jp) 题意: 给定一个数x,以及n个操作(ti,ai): 当 t = 1 时,将 x & a 当 t = 2 时,将 x ...
- Atcoder Beginner Contest 138 简要题解
D - Ki 题意:给一棵有根树,节点1为根,有$Q$次操作,每次操作将一个节点及其子树的所有节点的权值加上一个值,问最后每个节点的权值. 思路:dfs序再差分一下就行了. #include < ...
- 2018.09.08 AtCoder Beginner Contest 109简要题解
比赛传送门 水题大赛? 全是水题啊!!! T1 ABC333 就是判断是不是两个数都是奇数就行了. 代码: #include<bits/stdc++.h> using namespace ...
- AtCoder Beginner Contest 154 题解
人生第一场 AtCoder,纪念一下 话说年后的 AtCoder 比赛怎么这么少啊(大雾 AtCoder Beginner Contest 154 题解 A - Remaining Balls We ...
- AtCoder Beginner Contest 153 题解
目录 AtCoder Beginner Contest 153 题解 A - Serval vs Monster 题意 做法 程序 B - Common Raccoon vs Monster 题意 做 ...
- AtCoder Beginner Contest 184 题解
AtCoder Beginner Contest 184 题解 目录 AtCoder Beginner Contest 184 题解 A - Determinant B - Quizzes C - S ...
- AtCoder Beginner Contest 173 题解
AtCoder Beginner Contest 173 题解 目录 AtCoder Beginner Contest 173 题解 A - Payment B - Judge Status Summ ...
随机推荐
- 方法覆盖Override
继承作用: 基本作用:代码复用 重要作用:方法覆盖和多态机制 ===================================================================== ...
- [NOI online22提高A] 丹钓战
题目描述 有 \(n\) 个二元组 \((a_i, b_i)\),编号为 1 到 n. 有一个初始为空的栈 SS,向其中加入元素 \((a_i, b_i)\) 时,先不断弹出栈顶元素直至栈空或栈顶元素 ...
- 【Linux API 揭秘】container_of函数详解
[Linux API 揭秘]container_of函数详解 Linux Version:6.6 Author:Donge Github:linux-api-insides 1.container_o ...
- bash shell笔记整理——head命令
作用 我直接搬运官方英文了,这英文真的简单直白了,我英语辣鸡...毕竟我学历不行,觉得翻译不好就直接自己来吧.. Print the first 10 lines of each FILE to st ...
- 华企盾DSC服务器状态显示“服务未安装”
在cmd中先删除原服务:sc delete DSEServer 然后重新创建DSEServer所在位置:sc create "DSEServer" binpath= "C ...
- 【Python】【OpenCV】定位二维码
相较于BarCode,QRCode有明显的特征区域,也就是左上角.右上角.左下角三个"回"字区域,得益于hierarchy中,父子关系的轮廓是连续的(下标),所以这个时候我们就可以 ...
- 三种方式MD5加密
1.直接生成(标准的MD5加密) 选择函数助手,选择__digest,填写算法和密码,点击生成 2.开发直接给的jar包 步骤:a.从测试计划导入jar包 或 放在jmeter的lib\ext目录读取 ...
- 痞子衡嵌入式:Farewell, 我的写博故事2023
-- 题图:苏州虎丘塔 2023 年的最后一天,照旧写个年终总结.昨晚和同门师兄弟一起吃饭,有个师弟告诉痞子衡,微博上一个拥有 22.3W 粉丝的嵌入式同行今年 4 月发过一个吐槽微博,说恩智浦 MC ...
- Luogu P1298 最接近的分数 做题记录
算是水紫,不过也学到一些有用的东西. 题意 给定正小数 \(N\).求分子不大于 \(n\),分母不大于 \(m\) 的分数 \(\dfrac{n}{m}\),使得 \(\dfrac{n}{m}\) ...
- SQL 的递归查询
在一般的业务场景中,特别是针对相关的业务线相关的功能开发时,可能会遇到一些具有层级关系的数据关联结构.比如,一个员工可能属于一个领导管辖,而同时,这个领导也被另一个更高级别的领导管辖--,而本质上这些 ...