AtCoder Beginner Contest 424

news/2025/9/26 11:45:06/文章来源:https://www.cnblogs.com/JYue-Aurora/p/19113188

A - Isosceles

核心代码

signed main()
{ios::sync_with_stdio(0);cin.tie(0); cout.tie(0);int a, b, c;cin >> a >> b >> c;if(a == b || b == c || a == c) cout << "Yes";else cout << "No";   return 0;
}

B - Perfect

核心代码

signed main()
{ios::sync_with_stdio(0);cin.tie(0); cout.tie(0);int n, m, k;cin >> n >> m >> k;vector<int> ans, cnt(n + 1);while(k--){int a, b;cin >> a >> b;cnt[a] ++;if(cnt[a] == m) ans.push_back(a);}for(auto t: ans) cout << t << " ";return 0;
}

C - New Skill Acquired

思路

根据描述建图,从 \(A_i,B_i\) 指向 \(i\)

最后求的就是从 \(0\) 可以到达的节点

核心代码

signed main()
{ios::sync_with_stdio(0);cin.tie(0); cout.tie(0);int n; cin >> n;vector<vector<int>> adj(n + 1);for(int i = 1; i <= n; i++){int a, b;cin >> a >> b;adj[a].push_back(i);adj[b].push_back(i);    	}queue<int> q;vector<int> vis(n + 1);q.push(0);int cnt = 0;while(q.size()){auto u = q.front();q.pop();for(auto v: adj[u]){if(vis[v]) continue;vis[v] = 1;q.push(v);cnt++;}}cout << cnt;return 0;
}

D - 2x2 Erasing 2

思路

tag:状压 dp

遍历每一行的状态,以及到达这种状态需要的染白次数(不需要管本来是白色,但是状态是黑色的情况)

核心代码

const int inf = 1e18;void solve()
{int n, m;cin >> n >> m;vector<string> g(n);for(int i = 0; i < n; i++) cin >> g[i];vector<int> dp(1 << m, 0);// 遍历每一行for(int i = 0; i < n; i++){// 遍历状态 如果 st 中的某一位是 1 那么这个格子就是黑色for(int st = 0; st < (1 << m); st++){for(int j = 0; j < m; j++){// 如果格子本来是黑色,但是状态要求是白色,那么就需要染白if(g[i][j] == '#' && ((st >> j) & 1) == 0){dp[st]++;}}}// 转移到下一行vector<int> ndp(1 << m, inf);for(int st1 = 0; st1 < (1 << m); st1++){for(int st2 = 0; st2 < (1 << m); st2++){int st = st1 & st2;bool ok = true;while(st){if((st & 3) == 3)// 存在两列都是 1 的情况{ok = false;break;}st >>= 1;}if(ok){ndp[st2] = min(ndp[st2], dp[st1]);}}}dp.swap(ndp);}cout << dp[0] << '\n';
}

E - Cut in Half

思路

因为 \(K\) 很大,所以不能直接模拟

优化:记录每个数和每个数出现的次数,每次取最大的数,如果它的个数比 \(k\) 小,那么可以全部砍半;否则,只取 \(k\)

核心代码

using PII = pair<double, int>;void solve()
{int n, k, x;cin >> n >> k >> x;priority_queue<PII> q;unordered_map<int, int> mp;for(int i = 0; i < n; i++){int x; cin >> x;mp[x]++;}	for(auto [x, ct] : mp) q.push({x, ct});while(q.size()){auto [x, ct] = q.top();q.pop();if(k >= ct){q.push({x / 2, ct * 2});k -= ct;}else{q.push({x, ct - k});q.push({x / 2, k * 2});k = 0;break;}}while(x){auto [v, ct] = q.top();q.pop();if(ct >= x){cout << setprecision(20) << fixed << v << '\n';return;}else x -= ct;}
}

F - Adding Chords

思路 1

对于圆上两个线段\([a, b],[c,d]\),线段相交的条件是 \(a < c < b < d\) 或者 \(c < a < d < b\)

所以问题变成了,对于新增的边 \([a, b]\),判断是否满足上述条件

那么对于每个区间:

  • 记录在这个区间的右端点的最小左端点,判断新增边的左端点是否小于最小左端点
  • 记录在这个区间的左端点的最大右端点,判断新增边的右端点是否大于最大右端点

核心代码

struct Info
{int minl, maxr;Info() : minl(1e9), maxr(0) {}
};Info operator+(const Info& a, const Info& b)
{Info c;c.minl = min(a.minl, b.minl);  c.maxr = max(a.maxr, b.maxr);return c;
}template<class Info>
struct SegmentTree
{int n;vector<Info> info;// 构造空线段树SegmentTree(int n) : n(n), info(4 << __lg(n)) {}// 利用数组构造线段树template<class T>SegmentTree(vector<T> v){n = v.size();info.resize(4 << __lg(n));//[l, r) 初始化线段树function<void(int, int, int)> build = [&](int p, int l, int r){// 叶子节点if(l + 1 == r){info[p] = v[l];return;}int mid = l + r >> 1;build(p << 1, l, mid);build(p << 1 | 1, mid, r);up(p);};build(1, 1, n + 1);};// 向上合并void up(int p){info[p] = info[p << 1] + info[p << 1 | 1];}// 修改左端点对应的最大右端点void modify_maxr(int pos, int val){modify_maxr(1, 1, n + 1, pos, val);}void modify_maxr(int p, int l, int r, int pos, int val){if(l + 1 == r){info[p].maxr = max(info[p].maxr, val);return;}int mid = (l + r) >> 1;if(pos < mid) modify_maxr(p << 1, l, mid, pos, val);else modify_maxr(p << 1 | 1, mid, r, pos, val);up(p);}// 修改右端点对应的最小左端点void modify_minl(int pos, int val){modify_minl(1, 1, n + 1, pos, val);}void modify_minl(int p, int l, int r, int pos, int val){if(l + 1 == r){info[p].minl = min(info[p].minl, val);return;}int mid = (l + r) >> 1;if(pos < mid) modify_minl(p << 1, l, mid, pos, val);else modify_minl(p << 1 | 1, mid, r, pos, val);up(p);}// 查询Info query(int l, int r){return query(1, 1, n + 1, l, r);}Info query(int p, int l, int r, int x, int y){if(x >= r || y <= l) return Info();if(l >= x && r <= y) return info[p];int mid = l + r >> 1;return query(p << 1, l, mid, x, y) + query(p << 1 | 1, mid, r, x, y);}
};signed main()
{ios::sync_with_stdio(0);cin.tie(0); cout.tie(0);int n, q;cin >> n >> q;SegmentTree<Info> seg(n);for(int i = 1; i <= q; i++){int a, b;cin >> a >> b;auto [minl, maxr] = seg.query(a, b);if(minl < a || maxr > b) {cout << "No" << '\n';}else{cout << "Yes" << '\n';seg.modify_maxr(a, b);seg.modify_minl(b, a);}} return 0;
}

思路 2

利用异或哈希

核心代码

mt19937_64 rnd(chrono::steady_clock::now().time_since_epoch().count());struct Fenwick
{vector<int> tree;int n;Fenwick(int size) : n(size + 1), tree(size + 2, 0) {}void update(int idx, int val){for(; idx <= n; idx += idx & -idx)tree[idx] ^=  val;} int query(int idx){int res = 0;for(; idx > 0; idx -= idx & -idx)res ^= tree[idx];return res; }bool query(int x, int y){return (query(y) ^ query(x - 1)) == 0;}
};signed main()
{ios::sync_with_stdio(0);cin.tie(0); cout.tie(0);int n, q;cin >> n >> q;Fenwick fw(n);for(int i = 1; i <= q; i++){int a, b;cin >> a >> b;if(fw.query(a, b)){cout << "Yes" << '\n';int rd = rnd();fw.update(a, rd);fw.update(b, rd);}else cout << "No" << '\n'; }return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/918204.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

US$39 BAV-Key Adapter for Yanhua Mini ACDP

BAV-Key Adapter for Yanhua Mini ACDPBAV-Key Adapter will be needed for Module 1 BMW CAS1-CAS4+, Modul 9 Land Rover and Module10 for Porsche.Package List:1pc x BAV-Key Adapter for Yanhua Mini ACDP Pictu…

可以放钓鱼网站的免费空间做一个网站以及app多少钱

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 孤立词识别是语音识别领域的一个重要分支&#xff0c;其目标是将输入的语音信号转换为计算机可…

ClkLog埋点分析系统-私有化部署+轻量灵活

ClkLog 自发布以来已有两年时间。从最初的社区版,到如今不断迭代出专业版与企业版,我们一直紧跟用户需求,不断优化产品,只为做出真正“小而美、好上手、落地快”的用户行为分析系统。在ClkLog 2.0 版本发布之际,我…

级数 - Emi

几何级数定义:每一项乘以一个固定的数得到下一项(不就是等比级数?) 求和: $$S_n=\frac{a(1-r^n)}{1-r}$$ 这里\(S_n\)是前\(n\)项的和, \(a\) 是第一项, r 是公比. 然后呢,整个级数的和就是前\(n\)项和取\(n\)趋近…

基于 Docker 的 Nginx + OpenSSL 自签名证书启用 HTTPS

基于 Docker 的 Nginx + OpenSSL 自签名证书启用 HTTPS(按步骤、可直接复制)目标:在没有域名的情况下,基于 Docker 部署 Nginx,使用 OpenSSL 生成自签名证书,启用 https://<你的公网IP> 访问。 适用:开发…

PolarFire Soc System Services

PolarFire Soc System ServicesPolarFire Family System Services User Guide1、读取 序列号 16 个字节 status = MSS_SYS_get_serial_number(data_buffer, MSS_SYS_MAILBOX_DATA_OFFSET);xprintf_hex( "devic…

抄袭的网站wordpress 授权插件

引言&#xff1a;中小企业推进数字化转型的背景是多重因素叠加的结果&#xff0c;包括市场竞争压力、信息技术发展及普及、各级政府政策支持及引导、企业经营发展需求和人才结构变化等。这些因素共同推动了中小企业加快数字化转型的步伐&#xff0c;以应对日益复杂多变的市场环…

网站建设视频下载哈尔滨seo优化专注

文章目录 前言一、MyBatis 与 Hibernate 有哪些不同&#xff1f;二、MyBatis 的好处是什么&#xff1f;三、简述 Mybatis 的 Xml 映射文件和 Mybatis 内部数据结构之间的映射关系&#xff1f;四、什么是 MyBatis 的接口绑定,有什么好处&#xff1f;五、接口绑定有几种实现方式,…

基于STM32的正弦波逆变器设计

一、系统架构设计 graph TD A[输入电源] --> B[输入滤波电路] B --> C[DC-DC升压模块] C --> D[SPWM生成模块] D --> E[全桥逆变电路] E --> F[LC滤波电路] F --> G[输出保护电路] G --> H[负载]…

深入解析:SDL2视频渲染

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

高校固定资产管理高效的系统——Java EE毕业设计资源包

高校固定资产管理高效的系统——Java EE毕业设计资源包pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&q…

======================================分割线======================================

======================================分割线====================================== ======================================分割线====================================== ===================================…

OpenLayers地图交互 -- 章节六:范围交互详解 - 实践

OpenLayers地图交互 -- 章节六:范围交互详解 - 实践2025-09-26 11:34 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; dis…

互联网公司网站源码优设网专利

Kubernates容器化JVM调优笔记&#xff08;内存篇&#xff09; 先说结论背景思路方案 先说结论 1、首先如果是JDK8&#xff0c;需要使用JDK8_191版本以上&#xff0c;才支持容器化环境和以下参数&#xff0c;否则就更新到JDK10以上&#xff0c;选择对应的镜像构建就行了 2、在容…

标准卷积和空洞卷积--适应不同尺寸的输入--ASPP模块

https://zhuanlan.zhihu.com/p/50369448 重要的是感受野 多尺度特征提取:通过不同空洞率的卷积层捕获不同范围的特征 保持空间分辨率:采用适当的padding策略,确保输出特征图尺寸与输入一致 全局上下文信息:通过全局…

游戏在高负载场景下,整机功耗控制在多少

1)游戏在高负载场景下,整机功耗控制在多少合理2)什么是MALLOC_SMALL和MALLOC_NANO,如何优化3)Spine堆内存占用高怎么办这是第446篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技…

打印机状态错误,怎么恢复正常打印?

众所周知,打印机这家伙时不时就会莫名出点毛病,什么打印一团乱麻,喷墨或是直接无法使用,有时候对着它来上几次爱的抚摸就能解决问题,但大部分时候还是要挨个排查问题,很是麻烦。其实这类问题大多和驱动异常、服务…

使用Ollama 0.12.2本地部署大模型,友好界面对话,开启飞行模式数据完全存在本地

之前写过一篇Ollama的介绍C#使用OllamaSharp调用Llama 3、Phi 3等大语言模型。那个时候Ollama还是没有界面对话的。需要再命令行下载需要的大模型,对话输出的内容也是在命令行显示,格式比较单一。 最新的0.12.2安装包…

7timer.info 免费天气预报对接记录

import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.web.client.RestTemplate;import java.time.*; import java.time.format.DateTi…

招聘网站开发程序员做国外订单的网站

环境 Python3&#xff0c; gensim&#xff0c;jieba&#xff0c;numpy &#xff0c;pandas 原理&#xff1a;文章转成向量&#xff0c;然后在计算两个向量的余弦值。 Gensim gensim是一个python的自然语言处理库&#xff0c;能够将文档根据TF-IDF, LDA, LSI 等模型转化成向量模…