CodeCraft-21 and Codeforces Round #711 (Div. 2) A~C 个人题解
补题链接:Here
1498A. GCD Sum
题意:给定一个 gcdSum 操作:\(gcdSum(762) = gcd(762,7 + 6 + 2) = gcd(762,15) = 3\)
请问要执行多少次 gcdSum 才能使结果不为 \(1\)
输出最后的 \(n\) 值
思路:按题意来,因为数据范围在 1e18 在执行 gcdSum 时比较快
using ll = long long;
ll gcd(ll x, ll y) { return y == 0 ? x : gcd(y, x % y); }
ll getSum(ll n) {
ll s = 0;
while (n) {
s += n % 10, n /= 10;
}
return s;
}
int main() {
ios_base::sync_with_stdio(false), cin.tie(0);
int _;
for (cin >> _; _--;) {
ll n;
cin >> n;
while (gcd(n, getSum(n)) == 1) n++;
cout << n << "\n";
}
return 0;
}
1498B. Box Fitting
题意:在一个被限定了宽度的盒子中给一些长度为 \(2^x\) 高度为 \(1\) 的长方块,请问怎么排放才能使最终高度最小
思路:先利用 map 存储各个长度的值,然后二分找到在该行中最大的一块然后填充。
这里建议看代码理解
int main() {
ios_base::sync_with_stdio(false), cin.tie(0);
int _;
for (cin >> _; _--;) {
int n, w;
cin >> n >> w;
map<int, int> mp;
for (int i = 0, x; i < n; ++i) {
cin >> x;
mp[x]++;
}
int ans = 1, cur = w;
while (mp.size()) {
if (mp.begin()->first > cur) {
++ans, cur = w;
}
auto it = prev(mp.upper_bound(cur));
assert(it->first <= cur);
cur -= it->first;
if (--(it->second) == 0) mp.erase(it);
}
cout << ans << "\n";
}
return 0;
}
1498C. Planar Reflections
DP优化 + 模拟
题意:给定一个可以穿越墙体的微观粒子(寿命为 \(k\)),但是每穿越一次墙体会产生一个反向寿命为 \(k - 1\) 的粒子。
请问最终共有多少个粒子?
思路:模拟变化过程,然后开DP数组存储已经计算过的即可,写的时候要注意细节,比如什么时候 \(k - 1\) 或者 \(1 - dir\) 方向变化
const int mod = 1e9 + 7;
int n, k;
int dp[1010][1010][2];
int solve(int cur, int k, int dir) {
if (k == 1) return 1;
// 非 -1 说明已经计算过了
if (dp[cur][k][dir] != -1) return dp[cur][k][dir];
int ans = 2; // 本身和穿过墙的复制体
if (dir == 1) {
if (cur < n) ans += solve(cur + 1, k, dir) - 1;
ans %= mod;
if (cur > 1) ans += solve(cur - 1, k - 1, 1 - dir) - 1;
ans %= mod;
dp[cur][k][dir] = ans;
} else {
if (cur > 1) ans += solve(cur - 1, k, dir) - 1;
ans %= mod;
if (cur < n) ans += solve(cur + 1, k - 1, 1 - dir) - 1;
ans %= mod;
dp[cur][k][dir] = ans;
}
return ans;
}
int main() {
ios_base::sync_with_stdio(false), cin.tie(0);
int _;
for (cin >> _; _--;) {
cin >> n >> k;
memset(dp, -1, sizeof dp);
cout << solve(1, k, 1) << '\n';
}
return 0;
}
在学习高榜大佬的代码时候发现的一种解法,Orz...
#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
int X[1001], Y[1001], n, k, K, R, val;
signed main() {
for (cin >> n; cin >> n >> k;) {
for (R = 0; R <= n; R++) X[R] = Y[R] = 0;
for (K = 2; K <= k; K++) {
for (R = n; R >= 0; R--) X[R] = (R + Y[n - R]) % mod;
val = 0;
for (R = n - 1; R >= 0; R--) Y[R] = (val += X[R]) %= mod;
}
cout << (1 + X[n]) % mod << ' ';
}
}
CodeCraft-21 and Codeforces Round #711 (Div. 2) A~C 个人题解的更多相关文章
- Codeforces Round #609 (Div. 2)前五题题解
Codeforces Round #609 (Div. 2)前五题题解 补题补题…… C题写挂了好几个次,最后一题看了好久题解才懂……我太迟钝了…… 然后因为longlong调了半个小时…… A.Eq ...
- CodeCraft-21 and Codeforces Round #711 (Div. 2)
就ac了俩 A题求gcd>1,WA了好多发....因为感觉没错,结果后面一看n的数据10^18,原来是没用long long. 经验:今后一定要看看数据范围. B题,一开始没看懂题意,不知道什么 ...
- Codeforces Round #556 (Div. 2) D. Three Religions 题解 动态规划
题目链接:http://codeforces.com/contest/1150/problem/D 题目大意: 你有一个参考串 s 和三个装载字符串的容器 vec[0..2] ,然后还有 q 次操作, ...
- Codeforces Round #604 (Div. 2) E. Beautiful Mirrors 题解 组合数学
题目链接:https://codeforces.com/contest/1265/problem/E 题目大意: 有 \(n\) 个步骤,第 \(i\) 个步骤成功的概率是 \(P_i\) ,每一步只 ...
- Codeforces Round #624 (Div. 3) F. Moving Points 题解
第一次写博客 ,请多指教! 翻了翻前面的题解发现都是用树状数组来做,这里更新一个 线段树+离散化的做法: 其实这道题是没有必要用线段树的,树状数组就能够解决.但是个人感觉把线段树用熟了会比树状数组更有 ...
- Codeforces Round #676 (Div. 2) A - D个人题解(E题待补)
1421A. XORwice 题目链接:Click Here // Author : RioTian // Time : 20/10/18 #include <bits/stdc++.h> ...
- Codeforces Round #677 (Div. 3) E、G题解
E. Two Round Dances #圆排列 题目链接 题意 \(n\)(保证偶数)个人,要表演一个节目,这个节目包含两种圆形舞蹈,而每种圆形舞蹈恰好需要\(n/2\)个人,每个人只能跳一种圆形舞 ...
- Codeforces Round#402(Div.1)掉分记+题解
哎,今天第一次打div1 感觉头脑很不清醒... 看到第一题就蒙了,想了好久,怎么乱dp,倒过来插之类的...突然发现不就是一道sb二分吗.....sb二分看了二十分钟........ 然后第二题看了 ...
- Codeforces Round #604 (Div. 2) 练习A,B题解
A题 链接 思路分析: 因为只需要做到相邻的不相同,利用三个不同的字母是肯定可以实现的, 所以直接先将所有的问号进行替换,比如比前一个大1,如果与后面的冲突,则再加一 代码(写的很烂): #inclu ...
- Codeforces Round #599 (Div. 2)的简单题题解
难题不会啊…… 我感觉写这个的原因就是因为……无聊要给大家翻译题面 A. Maximum Square 简单题意: 有$n$条长为$a_i$,宽为1的木板,现在你可以随便抽几个拼在一起,然后你要从这一 ...
随机推荐
- 快速认识什么是:Kubernetes
每次谈到容器的时候,除了Docker之外,都会说起 Kubernetes,那么什么是 Kubernetes呢?今天就来一起学快速入门一下 Kubernetes 吧!希望本文对您有所帮助. Kubern ...
- 基于DotNetty实现自动发布 - 实现一键打包发布
前言 上一篇,我只实现了一键检测代码变化,本篇才是真正的实现了一键打包发布 效果图 客户端打包待发布文件 /// <summary> /// 把多个文件添加到压缩包 (保留文件夹层级关系) ...
- [CF1830D] Mex Tree
题目描述 You are given a tree with $ n $ nodes. For each node, you either color it in $ 0 $ or $ 1 $ . T ...
- [CF1854D] Michael and Hotel
题目描述 Michael and Brian are stuck in a hotel with $ n $ rooms, numbered from $ 1 $ to $ n $ , and nee ...
- Gradle构建微服务项目
先说一下初衷把:为啥突然要用Gradle,公司后期自研项目都使用Gradle构建...... 1.下载安装 这个就不说了,网上大家搜索一下,配置一下环境变量即可 2.Groovy的一些语法Gradle ...
- Oracle-startup和shutdown
startup不同参数作用 startup nomount 非安装启动,以这种方式启动可执行: 1.重建控制文件. 2.重建数据库读取init.ora文件. 3.启动实例,即启动SGA和后台进程,需要 ...
- 超轻量级MP4封装方法介绍
liwen01 2023.12.17 前言 MP4是目前非常常用的一种视频封装格式,关于MP4的介绍资料也非常多.我们常用的封装库或工具有:ffmpeg,libmp4v2,GPAC,MP4.js,它们 ...
- 谷粒学院通用工具类R类
import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.HashMap; import ...
- 带你认识数仓的监控系统TopSQL
本文分享自华为云社区<GaussDB(DWS)TopSQL总结>,作者:nullptr_ . TopSQL 背景 TopSQL为DWS的监控系统,记录DWS中各个作业.算子级别的资源使用数 ...
- CloudIDE插件在手,按时下班不愁
摘要:带你通过插件机制将CloudIDE扩展出你想要的功能,在CloudIDE中看视频,玩游戏,聊天都可以通过我们的插件来轻松实现,让生产工具不再枯燥,开发工作多姿多彩. 距离华为云CloudIDE在 ...