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的木板,现在你可以随便抽几个拼在一起,然后你要从这一 ...
随机推荐
- 思科4331 语音网关配置, cisco 4331 router 配置文件
GW01#cisco_ROUTER01#cisco_ROUTER01#sh clocisco_ROUTER01#cisco_ROUTER01#cisco_ROUTER01#cisco_ROUTER01 ...
- 35个超实用excel快捷键
以下是一些常用的Excel快捷键,希望对你有所帮助.如果你想要了解更多快捷键,可以参考Excel的官方文档或者在网上搜索相关信息. Ctrl + C:复制选定的单元格或单元格范围. Ctrl + X: ...
- Socket编程和实现聊天室
一.HTTP协议的socket通信 1.server.py # 服务端 import sys import socket ip_point = ('127.0.0.1',9999) sk = sock ...
- ProtocolBuffer详细教程
下面大佬写的特别详细,直接参考他的吧! 推荐参考大佬写的ProtocolBuffer详细教程
- 35. 干货系列从零用Rust编写负载均衡及代理,代理服务器的源码升级改造
wmproxy wmproxy已用Rust实现http/https代理, socks5代理, 反向代理, 静态文件服务器,四层TCP/UDP转发,七层负载均衡,内网穿透,后续将实现websocket代 ...
- 蓝桥杯-最短路 (SPFA算法学习)
SPFA算法主要用来解决存在负边权的单源最短路情况(但不能有负环!!!)一个简单的方法判断是否有没有负环可以通过判断是否有一个节点是否频繁进出队列. 以下内容转自https://blog.csdn.n ...
- MySQL运维13-Mycat分库分表之按月分片
一.按照月分片 使用场景为按照自然月来分片,每个自然月为一个分片,但是一年有12个月,是不是要有12个数据节点才行呢?并不是.例如我现在只有三个分片数据库,这样就可以1月在第一个数据分片中,2月在第二 ...
- 【scikit-learn基础】--『预处理』之 缺失值处理
数据的预处理是数据分析,或者机器学习训练前的重要步骤.通过数据预处理,可以 提高数据质量,处理数据的缺失值.异常值和重复值等问题,增加数据的准确性和可靠性 整合不同数据,数据的来源和结构可能多种多样, ...
- 华企盾DSC服务器状态显示“服务未安装”
在cmd中先删除原服务:sc delete DSEServer 然后重新创建DSEServer所在位置:sc create "DSEServer" binpath= "C ...
- 【玩转腾讯混元大模型】怎么说?我用混元AI大模型开发了个IDEA插件
前言 halo 我是杨不易呀,在混元大模型内测阶段就已经体验了一番当时打开页面的时候灵感模块让我大吃一惊这么多角色模型真的太屌了,随后我立马进行了代码处理水平和上下文的效果结果一般般但是到如今混元大模 ...