SMU Autumn 2023 Round 5

A. Everyone Loves to Sleep

把时间都转成分钟,然后存起来,二分找到离他睡觉点最近的一个时间段,减去他的睡觉点,如果最近的在第二天,则把中间的这段时间加起来

#include <bits/stdc++.h>
#define int long long
#define debug(a) cout<<#a<<"="<<a<<'\n'; using namespace std; void solve() { int n, H, M;
cin >> n >> H >> M;
int HM = H * 60 + M; set<int> s;
s.insert(INT_MAX);
for (int i = 0; i < n; i ++) {
int n, m;
cin >> n >> m;
s.insert(n * 60 + m);
} auto t = s.lower_bound(HM);
int ans ;
if (*t == INT_MAX) {
t = s.begin();
ans = 24 * 60 - HM + *t;
} else
ans = *t - HM;
cout << ans / 60 << ' ' << ans % 60 << '\n';
} signed main() {
ios::sync_with_stdio(false);
cin.tie(nullptr); int T;
cin >> T;
while (T--) {
solve();
} return 0;
}

B. Minimum Varied Number

倒着搜一遍即可,正着搜会超时,也可以直接打表

#include <bits/stdc++.h>
#define debug(a) cout<<#a<<"="<<a<<'\n'; using namespace std;
using i64 = long long; typedef pair<i64, i64> PII; int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr); int T;
cin >> T;
while (T--) {
int n;
cin >> n;
bitset<10> v;
vector<int> ans;
bool ok = false;
auto dfs = [&](auto self, int sum) {
if(ok) return;
if (sum == n) {
ok = true;
reverse(ans.begin(), ans.end());
for (auto i : ans)
cout << i ;
cout << '\n';
return ;
}
for (int i = 9; i >= 1; i --)
if (!v[i]) {
v[i] = 1;
ans.push_back(i);
self(self, sum + i);
v[i] = 0;
ans.pop_back();
}
}; dfs(dfs, 0); } return 0;
}

D. Add Modulo 10

对于以\(1,3,7,9\)结尾的经过几次运算最后都会变成\(2,4,8,6\)的循环,而对于\(5,0\)结尾的,最后都会变成\(0\)结尾,所以我们可以先把不是以\(2\)结尾的都经过几次运算直到以\(2\)结尾,然后去模上\(20(2+4+8+6)\),就能把这些数都转换到\(20\)以内,然后就是比较一下就好了

#include <bits/stdc++.h>
#define debug(a) cout<<#a<<"="<<a<<'\n'; using namespace std;
using i64 = long long; typedef pair<i64, i64> PII; int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr); int T;
cin >> T;
while(T--){
int n;
cin >> n;
vector<i64> a(n);
for(auto &i : a) cin >> i; bool f = true;
for(auto &i : a){
while(i % 10 != 2 && i % 10 != 0)
i += i % 10;
if(i % 10 == 2)
i %= 20;
} for(int i = 0;i + 1 < n;i ++)
if(a[i] != a[i + 1])
f = false; cout << (f ? "Yes" : "No") << '\n';
} return 0;
}

G. Make Them Equal(dp)

假设将\(a_i\)变成\(b_i\)需要\(f_i\)个操作数,你现在能操作\(k\)步,每个\(f_i\)操作可以使你获得\(c_i\)个硬币,问现在怎样使你得到的硬币数最大?

是不是很熟悉?

假如我将问题转换成:你现在有\(V\)体积的背包,你可以装\(n\)个物品,每个物品体积为\(v_i\),价值为\(c_i\),问你现在能装的最大价值是多少?

没错,就是很典型的背包题,只要我们预处理出\(f_i\),那么这个题也就迎刃而解了!

如果你没有判断$k \geq \sum\limits_{i=1}^{n}f_i $这一步的话,那么你就不能开#define int long long.

#include <bits/stdc++.h>
#define int long long
#define debug(a) cout<<#a<<"="<<a<<'\n'; using namespace std; vector<int> f(2048, INT_MAX); void solve() {
int n, k;
cin >> n >> k;
vector<int> b(n), c(n);
int sum = 0, ans = 0;
for (auto &i : b) {
cin >> i;
sum += f[i];
}
for (auto &i : c) {
cin >> i;
ans += i;
} if(k >= sum){
cout << ans << '\n';
return ;
} vector<int> dp(k + 1);
for (int i = 0; i < n; i ++)
for (int j = k; j >= f[b[i]]; j--)
dp[j] = max(dp[j - f[b[i]]] + c[i], dp[j]); cout << dp[k] << '\n';
} signed main() {
ios::sync_with_stdio(false);
cin.tie(nullptr); f[1] = 0;
for (int i = 1; i <= 1000; i ++)
for (int j = 1; j <= i; j ++)
f[i + i / j] = min(f[i + i / j], f[i] + 1); int T;
cin >> T;
while (T--) {
solve();
} return 0;
}

I. Div. 7

如果能整除直接就输出,否则就去枚举它的个位

#include <bits/stdc++.h>
#define int long long
#define debug(a) cout<<#a<<"="<<a<<'\n'; using namespace std; void solve() {
int n;
cin >> n;
if(n % 7 == 0){
cout << n << '\n';
}else{
for(int i = 0;i <= 9;i ++){
if((n / 10 * 10 + i) % 7 == 0){
cout << (n / 10 * 10 + i) << '\n';
return ;
}
}
}
} signed main() {
ios::sync_with_stdio(false);
cin.tie(nullptr); int T;
cin >> T;
while (T--) {
solve();
} return 0;
}

SMU Autumn 2023 Round 5的更多相关文章

  1. Codeforces Round #845 (Div. 2) and ByteRace 2023 A-D

    Codeforces Round #845 (Div. 2) and ByteRace 2023 A-D A. Everybody Likes Good Arrays! 题意:对给定数组进行操作:删除 ...

  2. CodeForce——Deltix Round, Autumn 2021 (open for everyone, rated, Div. 1 + Div. 2)前三道题目题解

    目录 A: B: C: 题目链接 A Divide and Multiply standard input/output 1 s, 256 MB 正在上传-重新上传取消 x13036 B Willia ...

  3. 2023 01 19 HW

    2023 01 19 HW Okay, then let's start.  Okay. Maybe Karina, we start with the C2 design freeze. Yeah, ...

  4. SQL Server 随机数,随机区间,随机抽取数据rand(),floor(),ceiling(),round(),newid()函数等

    在查询分析器中执行:select rand(),可以看到结果会是类似于这样的随机小数:0.36361513486289558,像这样的小数在实际应用中用得不多,一般要取随机数都会取随机整数.那就看下面 ...

  5. SQL中Round(),Floor(),Ceiling()函数的浅析

    项目中的一个功能模块上用到了标量值函数,函数中又有ceiling()函数的用法,自己找了一些资料,对SQL中这几个函数做一个简单的记录,方便自己学习.有不足之处欢迎拍砖补充 1.round()函数遵循 ...

  6. oracle的round函数和trunc函数

    --Oracle trunc()函数的用法/**************日期********************/1.select trunc(sysdate) from dual --2013- ...

  7. Codeforces Round #366 (Div. 2) ABC

    Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...

  8. Codeforces Round #354 (Div. 2) ABCD

    Codeforces Round #354 (Div. 2) Problems     # Name     A Nicholas and Permutation standard input/out ...

  9. 【BZOJ1662】[Usaco2006 Nov]Round Numbers 圆环数 数位DP

    [BZOJ1662][Usaco2006 Nov]Round Numbers 圆环数 Description 正如你所知,奶牛们没有手指以至于不能玩"石头剪刀布"来任意地决定例如谁 ...

  10. Codeforces Round #368 (Div. 2)

    直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...

随机推荐

  1. 前端Uncaught (in promise) 的解决方法及原因

    问题:在Vue项目中使用axios调用一个第三方的接口时,前端无法获取到接口返回值,检查控制台Network发现接口请求已经正常发出并且有数据返回,但是控制台Console报了这么一个错误 上图可以看 ...

  2. 使用嵌套的ScriptableObject及ReorderableList创建习题持久化数据

    使用嵌套的ScriptableObject及ReorderableList创建习题持久化数据 效果展示 题集持久化数据:存储题目,可以直接在inspector面板上创建对应的问题子项 问题持久化数据 ...

  3. 搭建第一个web项目

    实现使用: 1.创建一个普通java文件 2.Java文件的类名实现HttpServlet 3.重写service方法 4.在WEB-INF下的web.xml中添加请求与servlet类的映射关系 定 ...

  4. Atcoder Beginner Contest 321 G - Electric Circuit 题解 - 状压dp | 指定最低位

    为了更好的阅读体验,请点击这里 题目链接:G - Electric Circuit 看到了 \(N\) 的数据范围,因此是显然的状压 dp. 不妨设 \(f_S\) 为仅使用 \(S\) 集合中的所有 ...

  5. MoneyPrinterPlus:AI自动短视频生成工具-腾讯云配置详解

    MoneyPrinterPlus可以使用大模型自动生成短视频,其中的语音合成和语音识别部分需要借助于一些第三发云厂商的语音服务. 很多小伙伴可能不知道应该如何配置,这里给大家提供一个详细的腾讯云语音服 ...

  6. Ubuntu 安装 gitweb + Apache2

    背景 之前已经使用了gerrit进行代码管理,但是在有些代码由于内部技术管理不当而丢失了Review记录. 因此找到了通过gitweb弥补的问题. 做法 安装 sudo apt-get install ...

  7. 新品再袭,比RK3568J降本40%+,瑞芯微最新性价比工业平台-RK3562J

  8. UG 2406 python 二次开发环境配置

    UG 2406 python 二次开发环境配置 项目地址 https://gitee.com/unm001/nx2406.git 安装python 安装 python 3.10.11 D:\prog\ ...

  9. 虚拟 DOM 实现原理?

    虚拟 DOM 的实现原理主要包括以下 3 部分: 用 JavaScript 对象模拟真实 DOM 树,对真实 DOM 进行抽象: diff 算法 - 比较两棵虚拟 DOM 树的差异: pach 算法 ...

  10. Mybatis xxxMapper.xml 三表关联,配置文件

    VideoMapper.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mappe ...