C. Flapping Takahashi
维护当前时刻 \(t\) 可达的高度区间 \([\text{lh}, \text{rh}]\) 。从时刻 \(t_{i-1}\) 到 \(t_i\) 区间扩散为 \([\text{lh}-\Delta t, \text{rh} + \Delta t]\) 。 然后对区间 \([l, u]\) 取交集。
代码实现
#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); ++i)using namespace std;void solve() {int n, h;cin >> n >> h;int now = 0, lh = h, rh = h;bool ans = true;rep(i, n) {int t, l, u;cin >> t >> l >> u;lh -= t-now; rh += t-now;now = t;lh = max(lh, l);rh = min(rh, u);if (lh > rh) ans = false;}if (ans) puts("Yes");else puts("No");
}int main() {int t;cin >> t;while (t--) solve();return 0;
}
D. Clouds
二维差分
显然只有被 \(1\) 朵云覆盖的格子才会影响答案
代码实现
#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); ++i)using namespace std;const int M = 2000;
int sky[M+1][M+1];
int one[M+1][M+1];struct Cloud { int u, d, l, r; };int main() {int n;cin >> n;vector<Cloud> clouds;rep(i, n) {int u, d, l, r;cin >> u >> d >> l >> r;--u; --l;sky[u][l]++;sky[u][r]--;sky[d][l]--;sky[d][r]++;clouds.emplace_back(u, d, l, r);}rep(i, M)rep(j, M) sky[i+1][j] += sky[i][j];rep(i, M)rep(j, M) sky[i][j+1] += sky[i][j];rep(i, M)rep(j, M) one[i+1][j+1] = sky[i][j]==1;rep(i, M)rep(j, M+1) one[i+1][j] += one[i][j];rep(i, M+1)rep(j, M) one[i][j+1] += one[i][j];int base = 0;rep(i, M)rep(j, M) if (sky[i][j] == 0) base++;rep(i, n) {auto [u, d, l, r] = clouds[i];int dif = one[d][r] - one[d][l] - one[u][r] + one[u][l];int ans = base + dif;cout << ans << '\n';}return 0;
}
E. Distribute Bunnies
一种做法是二分图最大匹配
另一种做法是单独考虑每个无向图连通分量,为其定向:
- 边数 \(<\) 点数,树
- 边数 \(=\) 点数,基环树
- 边数 \(>\) 点数,把重边删掉就是等于的情况
代码实现
#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); ++i)using namespace std;
using P = pair<int, int>;// Coodinate Compression
template<typename T=int>
struct CC {bool initialized;vector<T> xs;CC(): initialized(false) {}void add(T x) { xs.push_back(x);}void init() {sort(xs.begin(), xs.end());xs.erase(unique(xs.begin(),xs.end()),xs.end());initialized = true;}int operator()(T x) {if (!initialized) init();return upper_bound(xs.begin(), xs.end(), x) - xs.begin() - 1;}T operator[](int i) {if (!initialized) init();return xs[i];}int size() {if (!initialized) init();return xs.size();}
};int main() {int m;cin >> m;vector<P> bunnies;CC cc;rep(i, m) {int x, r;cin >> x >> r;bunnies.emplace_back(x-r, x+r);cc.add(x-r); cc.add(x+r);}int n = cc.size();vector<vector<int>> to(n);rep(i, m) {auto [a, b] = bunnies[i];a = cc(a); b = cc(b);to[a].push_back(b);to[b].push_back(a);}int ans = 0;vector<bool> used(n);rep(i, n) if (!used[i]) {int edge = 0, vertex = 0;auto dfs = [&](auto& f, int v) -> void {if (used[v]) return;vertex++; edge += to[v].size();used[v] = true;for (int u : to[v]) f(f, u);};dfs(dfs, i);edge /= 2;ans += min(vertex, edge);}cout << ans << '\n';return 0;
}
F. Concat (2nd)
按 \(S_i + S_j < S_j + S_i\) 排序
显然直接排显然超时
有两种优化方法:
- 先 \(\text{shuffle}\) 一遍再排
- 用 \(z\) 算法优化比较函数
代码实现1
#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); ++i)using namespace std;void solve() {int n;cin >> n;vector<string> s(n);rep(i, n) cin >> s[i];random_shuffle(s.begin(), s.end());sort(s.begin(), s.end(), [&](const string& a, const string& b) {return a+b < b+a;});auto cat = [&]() {string res;for (string& t : s) res += t;return res;};rep(i, n-1) {if (s[i]+s[i+1] == s[i+1]+s[i]) {cout << cat() << '\n';return;}}swap(s[n-2], s[n-1]);string ans = cat();swap(s[n-2], s[n-1]);if (n >= 3) {swap(s[n-2], s[n-3]);ans = min(ans, cat());}cout << ans << '\n';
}int main() {int t;cin >> t;while (t--) solve();return 0;
}
代码实现2
#include <bits/stdc++.h>
#include <atcoder/all>
using namespace atcoder;
#define rep(i, n) for (int i = 0; i < (n); ++i)using namespace std;void solve() {int n;cin >> n;vector<string> s(n);rep(i, n) cin >> s[i];vector<vector<int>> z(n);rep(i, n) z[i] = z_algorithm(s[i]);auto comp = [&](int i, int j) {int w = s[i].size();if (s[i] != s[j].substr(0, w)) return (s[i] < s[j])?-1:1;int r = s[j].size()-w;if (r > 0 and z[j][w] < r) {int k = z[j][w];return (s[j][k] < s[j][w+k])?-1:1;}return (s[j].substr(r) < s[i])?-1:1;};vector<int> p(n);rep(i, n) p[i] = i;sort(p.begin(), p.end(), [&](int i, int j) {if (s[i].size() > s[j].size()) return comp(j, i) == 1;return comp(i, j) == -1;});{auto old = s;rep(i, n) s[i] = old[p[i]];}auto cat = [&]() {string res;for (string& t : s) res += t;return res;};rep(i, n-1) {if (s[i]+s[i+1] == s[i+1]+s[i]) {cout << cat() << '\n';return;}}swap(s[n-2], s[n-1]);string ans = cat();swap(s[n-2], s[n-1]);if (n >= 3) {swap(s[n-2], s[n-3]);ans = min(ans, cat());}cout << ans << '\n';
}int main() {int t;cin >> t;while (t--) solve();return 0;
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/986138.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!相关文章
Linux中级のRsync实战
客户端
客户端需求:
1.客户端提前准备备份的目录,备份目录命名规则如下:
主机名称_IP地址_时间
2.客户端在本地打包备份放入创建好的目录
3.客户端最后将备份的数据进行推送至备份服务器
4.客户端每天凌晨1点定时执行…
备案合规定制化服务方案-自研与微调大模型企业如何备案
备案合规定制化服务方案(自研/微调大模型企业如何备案)
(一)方案概述
本方案基于《生成式人工智能服务管理暂行办法》《互联网信息服务算法推荐管理规定》等核心政策,结合博特智能200+算法备案、100+大模型备案的实…
算法和大模型备案登记的流程和指南-有哪些备案类型及要求
算法和大模型备案合规指南
算法和大模型备案合规指南
一、政策背景与合规依据
(一)核心政策文件
《生成式人工智能服务管理暂行办法》(下称《办法》)由国家互联网信息办公室等七部委于2023年7月10日联合发布,2023…
第三篇Scrum冲刺
第三篇Scrum冲刺
站立式会议照:昨天已完成工作:成员
工作郭涛
#102 分数结算的奖励换算,用于接下来的商店交易系统货币区泽明
#202 细分调整各实体的碰撞范围以契合外观模型袁智燊
#302 调整玩家飞机控制逻辑,操作…
2025.12.3总结
设计软件案例分析项目的文档。
目前思路是先开发业务逻辑简单,完成不依赖于其他表的表,完成其增删改查。
🏠 系统核心功能模块(简化版)
1. 用户登录与首页概览
登录功能简单登录窗口:用户名、密码输入框 + [记住…
印度七大声控AI初创企业技术盘点
本文介绍了七家印度声控AI初创企业,它们通过多语言大语言模型、语音分析、语音代理和文本转语音等先进技术,正在重塑客户交互和企业自动化领域,为印度构建语音优先的数字基础设施。印度语音与语音AI生态系统正在经历…
第二篇Scrum冲刺
第二篇Scrum冲刺
站立式会议照:昨天已完成工作:成员
工作郭涛
#101 分数统计设计,包括分数结算以及分数累加逻辑区泽明
#201 实现基本的碰撞检测袁智燊
#301 实现敌机生成合理化,即数量由少变多以及游戏难度的递增…
团队作业4--项目冲刺
作业基本信息项目
内容这个作业属于哪个课程
https://edu.cnblogs.com/campus/gdgy/Class34Grade23ComputerScience/这个作业要求在哪里
https://edu.cnblogs.com/campus/gdgy/Class34Grade23ComputerScience/homework…
MyBatis完整教程IDEA版(2)--ResultMap/注解/一对多/多对一/lombok/log4j - 教程
pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …
以 Core i9-13900HX 实例讲解CPU概念:物理CPU,内核,逻辑CPU
缘起
# 完整代码见:https://github.com/luminousmen/grokking_concurrency/blob/master/Chapter%205/password_cracking_parallel.pydef crack_password_parallel(crypto_hash: str, length: int) -> None:"&…
图书馆管理系统团队作业4-项目冲刺
图书馆管理系统团队作业4-项目冲刺这个作业属于哪个课程
https://edu.cnblogs.com/campus/gdgy/Class34Grade23ComputerScience/这个作业要求在哪里
https://edu.cnblogs.com/campus/gdgy/Class34Grade23ComputerScien…
【第七章:时间序列模型】3.时间序列实战:使用时序模型进行股票预测实战 - 实践
pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …
罗克韦尔Micro850 PLC和欧姆龙NJ互通离不开Modbus工业物联网技术支撑
一、项目背景:人工关节精密加工生产线的通讯困境
在医疗器械人工关节精密加工生产线中,某企业用欧姆龙 NJ 系列 PLC(Modbus RTU 协议)负责钛合金关节切削打磨(尺寸精度 0.005mm),罗克韦尔 Micro850 PLC(Modbus…
一条不太寻常的路 —— AFO 退役记 -
我不是一个很爱煽情的人,但总会在看到别人退役记时,因别人的故事而伤心。这次轮到我的。
序言
这是一次悄悄的退役,无人知晓。这篇文章,只是介绍一个无名的人的莽撞与无能。
OIer 其实是一个很温暖的群体,但我好像…
Go 语言:类型别名 vs 新类型详解 - 若
📚 前言
在 Go 语言中,类型系统是非常严格的。我们经常需要基于现有类型创建新的类型,Go 提供了两种方式:类型别名(Type Alias) 和 新类型定义(Type Definition)。虽然它们看起来很相似,但本质上有着巨大的区…
pytest高级用法之mark
mark给用例标记不同标签,实现用例筛选
①注册标记:项目根目录下新建pytest.ini文件,添加配置[pytest]markers =bvtP0P1P2
②打上标记
③筛选标记:
运行单个标记 :pytest -m bvt
运行多个标记 :pytest -m &q…