Polaris.AI Programming Contest 2025(AtCoder Beginner Contest 429)

news/2025/12/8 0:39:57/文章来源:https://www.cnblogs.com/arin876/p/19319228

D - On AtCoder Conference

环形 二分

#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
#define yes cout << "Yes" << endl
#define no cout << "No" << endl
#define pii pair<int,int>
#define ll long long
#define pb push_back
#define ft first
#define se second
#define inf 0x3f3f3f3f
#define INF 0x3f3f3f3f3f3f3f3f#define int long longint n, m, c;
int a[500010];
int s[2*500010];
map<int, int> mp;void solve(){cin >> n >> m >> c;vector<int> vec;vec.pb(0); vec.pb(m);for(int i = 1; i <= n; i ++){cin >> a[i];vec.pb(a[i]); mp[a[i]] ++;}sort(vec.begin(), vec.end()); vec.erase(unique(vec.begin(), vec.end()),vec.end());int nn = vec.size();for(int i = 0; i < nn; i ++) vec.pb(vec[i]);for(int i = 0; i < nn + nn; i ++){if(i == 0) s[i] = 0;else s[i] = s[i - 1] + mp[vec[i]];}int ans = 0;for(int i = 0; i < nn - 1; i ++){int l = i + 1; int r = nn + nn - 1;while(l < r){int mid = (l + r) >> 1;if(s[mid] - s[i] >= c) r = mid;else l = mid + 1;}// cout << (s[l] - s[i]) << ' ' << vec[i + 1] - 1 - vec[i] + 1 << '\n';ans += (s[l] - s[i]) * (vec[i + 1] - 1 - vec[i] + 1);}cout << ans << '\n';
}signed main(){std::ios::sync_with_stdio(false);int T = 1; //cin >> T;while(T--){solve();}
}

E - Hit and Away

对于每一个危险点,输出从一个安全点经过他到达另一个安全点的最小距离
这种跨着的,类似树的直径,随便四个更新都可以

#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
#define yes cout << "Yes" << endl
#define no cout << "No" << endl
#define pii pair<int,int>
#define ll long long
#define pb push_back
#define ft first
#define se second
#define inf 0x3f3f3f3f
#define INF 0x3f3f3f3f3f3f3f3f#define int long longconst int N = 200010;
vector<int> G[N];
int vis[N];
int d1[N], p1[N], d2[N], p2[N];void solve(){int n, m; cin >> n >> m;while (m --){int u, v; cin >> u >> v;G[u].pb(v); G[v].pb(u);}string s; cin >> s; s = "a" + s;queue<int> q;for(int i = 1; i <= n; i ++){d1[i] = INF; p1[i] = -1;d2[i] = INF; p2[i] = -1;}for(int i = 1; i <= n; i ++){if(s[i] == 'S'){d1[i] = 0; p1[i] = i;q.push(i);}}while(!q.empty()){int u = q.front(); q.pop();for(auto v:G[u]){if(d1[v] > d1[u] + 1 && p1[v] != p1[u]){d2[v] = d1[v];p2[v] = p1[v];d1[v] = d1[u] + 1;p1[v] = p1[u];q.push(v);}if(d2[v] > d1[u] + 1 && p1[v] != p1[u]){d2[v] = d1[u] + 1;p2[v] = p1[u];q.push(v);}if(d1[v] > d2[u] + 1 && p1[v] != p2[u]){d2[v] = d1[v];p2[v] = p1[v];d1[v] = d2[u] + 1;p1[v] = p2[u];q.push(v);}if(d2[v] > d2[u] + 1 && p1[v] != p2[u]){d2[v] = d2[u] + 1;p2[v] = p2[u];q.push(v);}}}for(int i = 1; i <= n; i ++){//   cout << d1[i] << ' ' << p1[i] << ' ' << d2[i] << ' ' << p2[i] << '\n';if(s[i] == 'D'){cout << d1[i] + d2[i] << '\n';}}
}signed main(){std::ios::sync_with_stdio(false);int T = 1; //cin >> T;while(T--){solve();}
}

F - Shortest Path Query

三行,所以不可能往回走
分治,用线段树每次单点修改

#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
#define yes cout << "Yes" << endl
#define no cout << "No" << endl
#define pii pair<int,int>
#define ll long long
#define pb push_back
#define ft first
#define se second
#define inf 0x3f3f3f3f
#define INF 0x3f3f3f3f3f3f3f3f#define int long longconst int N = 200010;
char a[4][N];struct Tree{int l, r;int d[4][4];
}tr[4*N];void emp(Tree& u){for(int i = 1; i <= 3; i ++)for(int j = 1; j <= 3; j ++) u.d[i][j] = INF;
}
void emp(int u){emp(tr[u]);
}
void pushup(Tree& u, Tree & l, Tree & r){ emp(u);u.l = l.l; u.r = r.r;for(int i = 1; i <= 3; i ++){for(int j = 1; j <= 3; j ++){for(int k = 1; k <= 3; k ++){if(a[k][l.r] == '.'){u.d[i][j] = min(u.d[i][j], l.d[i][k] + 1 + r.d[k][j]);}}}}
}
void pushup(int u){pushup(tr[u], tr[u << 1], tr[u << 1 | 1]);
}void chg(int u){emp(u);for(int i = 1; i <= 3; i ++){int j = i;while(j >= 1 && a[j][tr[u].l] == '.'){tr[u].d[i][j] = abs(i - j);j --;} j = i;while(j <= 3 && a[j][tr[u].l] == '.') {tr[u].d[i][j] = abs(i - j);j ++;}}
}void bui(int u, int l, int r){emp(u);tr[u].l = l; tr[u].r = r;if(l == r){chg(u);return ;}int mid = (l + r) >> 1;bui(u*2, l, mid);bui(u*2 + 1, mid + 1, r);pushup(u);
}void modify(int u, int x, int y){if(tr[u].l == tr[u].r && tr[u].l == y){ chg(u);return ;}int mid = (tr[u].l + tr[u].r) >> 1;if(y <= mid) modify(u*2, x, y);else modify(u * 2 + 1, x, y);pushup(u);
}void solve(){int n; cin >> n;for(int i = 1; i <= 3; i ++){string s; cin >> s;for(int j = 1; j <= n; j ++) a[i][j] = s[j - 1];}bui(1, 1, n);int q; cin >> q;while(q --){int x, y; cin >> x >> y;if(a[x][y] == '.')a[x][y] = '#';else a[x][y] = '.';modify(1, x, y);if(tr[1].d[1][3] > INF / 2) cout << -1 << '\n';else cout << tr[1].d[1][3] << '\n';}}signed main(){std::ios::sync_with_stdio(false);int T = 1;// cin >> T;while(T--){solve();}
}

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

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

相关文章

折腾笔记[39]-使用Scala3的Storch计算

使用Scala3的Storch(对标PyTorch)简单计算张量.摘要 使用Scala3的Storch(对标PyTorch)简单计算张量. 前言 本文目的是分享人工踩坑经验, AI搜索引擎可以更快给出正确结果(用于投喂AI😂). 简介 bytedeco系列javacpp库…

day03 指针应用和文件操作

C语言指针的详解与应用指针存放的是首地址,指针是变量关于指针 p++ 的操作#include <stdio.h> int main() {char a = 0x66;char *p; // 星号通常和变量名放在一起,防止歧义p = &a; // 把a的地址给pprin…

ZenMux 企业级大模型聚合平台,免费试用模型 Gemini 3 Pro

ZenMux 是全球首个支持保险赔付机制的企业级大模型聚合平台。 ZenMux 聚合了全球领先的闭源和开源大语言模型,在一个统一的平台上为开发者提供便捷的模型调用服务。 ZenMux 提供统一的 API 接口访问 OpenAI、Anthropi…

102302139 尚子骐 数据采集与融合作业4

作业一1. 完整代码及运行结果点击查看代码 from selenium import webdriver from selenium.webdriver.edge.service import Service from selenium.webdriver.common.by import By from selenium.webdriver.support.ui…

代码随想录32_动态规划基础

代码随想录32_动态规划基础理论基础 Dynamic Programming,当前状态由上一状态推导而来。 FIB 斐波那契 1.初始化数组的时候需要分配数组大小; 2.如果没有分配,使用push_back是安全的; 题解 class Solution { public…

vsc_backgroud_css小记

突然想给vsc背景加张图片 下载了 Custom CSS and JS Loader的插件 这个插件专门用来加载自定义的css和js文件 然后用ai写了个css文件 /* VS Code背景图:左下角局部显示 + 低存在感 */ body {/* https://img2024.cnblo…

3、缺陷管理

3.1缺陷介绍 1、缺陷的定义 软件在使用过程中存在的任何问题都叫软件的缺陷,简称bug2、缺陷的判定标准软件为实现需求(规格)说明书中明确要求的功能——少功能 软件出现了需求(规格)说明书中指明不应该出现的错误…

SGLang 的 DP Attention 模式浅析 - -银光

SGLang 的 DP Attention 模式浅析注:本文已于2025.11.30 发表于知乎和公众号 1. 简介 前序的三篇笔记,先系统总结各种SGLang 分布式集群模式,然后对TP 集群的完整执行流程做解析,再重点介绍 PP 集群的任务调度和分…

记我第一次代码审计 (bluecmsv1.6的sql注入复现)

此次漏洞复现搭建环境:php5.4.6+phpstudy+windows 1.首先获取bluecms源码并导入到phpstorm方便后续的代码审计,定位漏洞代码 在phpstorm可以使用快捷键shift+ctrl+f使用全局搜索功能并且支持正则匹配,通过这段查询语…

每日3题 2(暂鸽)

事情实在太多了先鸽着,在学莫比乌斯反演

K8S的Service

原文博客:https://nosae.topapiVersion: discovery.k8s.io/v1 kind: EndpointSlice metadata: name: my-service-1 # EndpointSlice命令的最佳实践是以svc的名称作为前缀 labels: # 这个label的值必须是svc的名称,将…

在MacOS中运行k3s

原文博客:https://nosae.topk3shttps://github.com/caicloud/kube-ladder安装ubuntu家的multipass虚拟机 brew install multipass(镜像路径在/var/root/Library/Caches/multipassd/qemu/vault/images下) 创建一个虚拟…

2025 最新成都/西南地区品牌策划服务商 / 公司 TOP5 评测!实战案例 + 系统服务权威榜单发布,助力企业品牌资产与业绩双增长

随着市场竞争的日益激烈,专业的品牌策划已成为企业打造核心竞争力、实现可持续发展的关键。本榜单基于技术实力、行业经验、服务案例、客户口碑四大维度,结合行业协会数据及市场反馈,权威解析2025年五大品牌策划公司…

第48天(中等题 数据结构)

打卡第四十八天 2道中等题题目:思路:前缀和+贪心,一边遍历数组计算前缀和,一边维护前缀和的最小值(相当于股票最低价格),用当前的前缀和(卖出价格)减去前缀和的最小值(买入价格),就得到了以当前元素结尾的…

2025杭州有哪些靠谱的舞蹈培训机构:拱墅区舞蹈培训机构推荐

2025杭州有哪些靠谱的舞蹈培训机构:拱墅区舞蹈培训机构推荐!选择舞蹈培训机构时,建议从以下几个维度进行考量:教学体系:关注课程设置的系统性和科学性,是否形成循序渐进的教学路径师资队伍:了解教师的专业背景、持…

2025包装机械厂家/粉末吨袋包装机厂家综合实力榜单

2025包装机械厂家/粉末吨袋包装机厂家综合实力榜单。粉末吨袋包装机作为大宗粉末物料包装的核心设备,凭借高效、精准、环保的特性,成为化工、建材、粮食等行业的关键装备。其核心优势在于能针对性解决粉末易飞扬、流…

为什么使用 telnet 命令可以探测目标主机的某个端口是否开放?

为什么使用 telnet 命令可以探测目标主机的某个端口是否开放?Telnet 属于应用层协议,传输层采用 TCP,服务器默认监听 23 端口,通过 telnet 协议可以实现远程登录设备,并以命令方式进行交互。 使用 Telnet 传输数据…

2025成都/西南地区营销策划服务商 TOP5 评测!实战案例驱动 + 系统服务权威榜单发布,赋能品牌资产与业绩双增长

随着市场竞争的日益激烈,专业的营销策划已成为企业打造品牌、提升销量的关键。本榜单基于技术实力、行业适配性、服务效能、实战案例以及行业贡献五大维度,结合众多企业的实际反馈与行业数据,权威解析2025年五大营销…

PDFsharp:强大的 .NET 跨平台 PDF 处理库

PDFsharp:强大的 .NET 跨平台 PDF 处理库Posted on 2025-12-08 00:00 lzhdim 阅读(0) 评论(0) 收藏 举报一、简介 PDFsharp 是一个功能强大且免费开源的 .NET 库,专为创建、修改和处理 PDF 文档而设计。它支持多…