OI 笑传 #23

news/2025/10/26 17:22:55/文章来源:https://www.cnblogs.com/hm2nsite/p/19167052

今天是 ABC429 CDEF。被 E 卡到破防说是。代码能力场。

ABC429C

给三元组的样子分个类,\(AAB,ABB,ABA\) 这三种。

对于前两种,用个桶前缀后缀一下算贡献即可。

对于中间的,我们动态维护每种数左边和右边数量的乘积,因为每次只会改一个数,维护是简单的。

剩下就是代码了,一遍写对。

code

Show me the code
#define rd read()
#define mkp make_pair
#define ls p<<1
#define rs p<<1|1
#define rep(i,a,b) for( int i=(a); i<=(b); ++i)
#define per(i,a,b) for( int i=(a); i>=(b); --i)
#include<bits/stdc++.h>
using namespace std;
typedef long long i64;
typedef unsigned long long u64;
typedef unsigned int u32;
typedef __int128 i128;
i64 read(){i64 x=0,f=1;char c=getchar();while(c>'9'||c<'0'){if(c=='-') f=-1;c=getchar();}while(c>='0'&&c<='9'){x=(x<<3)+(x<<1)+(c^48);c=getchar();}return x*f;
}
const int N=2e5+5;
i64 a[N];
i64 t[N];
i64 t1[N];
i64 t2[N];
pair<i64,i64> t3[N];
int main(){int n;cin>>n;for(int i=1;i<=n;i++){cin>>a[i];t[a[i]]++;}i64 ans=0;for(int i=1;i<=n;i++){t1[a[i]]++;if(t1[a[i]]>=2){ans+=(t1[a[i]]-1)*(n-i-(t[a[i]]-t1[a[i]]));}t3[i].second=t[i];}for(int i=n;i>=1;i--){t2[a[i]]++;if(t2[a[i]]>=2){ans+=(t2[a[i]]-1)*(i-1-(t[a[i]]-t2[a[i]]));}}i64 msum=0;for(int i=1;i<=n;i++){msum-=t3[a[i]].first*t3[a[i]].second;ans+=msum;t3[a[i]].first++;t3[a[i]].second--;msum+=t3[a[i]].first*t3[a[i]].second;}cout<<ans;return 0;
}

ABC429D

朴素二分题,首先离散化,把每个放了人的位置的答案计算出来即可。

注意环的处理和相邻人的位置贡献的计算。

赛时好像这题也卡飞不少人?

code

Show me the code
#define rd read()
#define mkp make_pair
#define ls p<<1
#define rs p<<1|1
#define rep(i,a,b) for( int i=(a); i<=(b); ++i)
#define per(i,a,b) for( int i=(a); i>=(b); --i)
#include<bits/stdc++.h>
using namespace std;
typedef long long i64;
typedef unsigned long long u64;
typedef unsigned int u32;
typedef __int128 i128;
i64 read(){i64 x=0,f=1;char c=getchar();while(c>'9'||c<'0'){if(c=='-') f=-1;c=getchar();}while(c>='0'&&c<='9'){x=(x<<3)+(x<<1)+(c^48);c=getchar();}return x*f;
}
const int N=2e5+5;
i64 a[N];
i64 t[N];
i64 t1[N];
i64 t2[N];
pair<i64,i64> t3[N];
int main(){int n;cin>>n;for(int i=1;i<=n;i++){cin>>a[i];t[a[i]]++;}i64 ans=0;for(int i=1;i<=n;i++){t1[a[i]]++;if(t1[a[i]]>=2){ans+=(t1[a[i]]-1)*(n-i-(t[a[i]]-t1[a[i]]));}t3[i].second=t[i];}for(int i=n;i>=1;i--){t2[a[i]]++;if(t2[a[i]]>=2){ans+=(t2[a[i]]-1)*(i-1-(t[a[i]]-t2[a[i]]));}}i64 msum=0;for(int i=1;i<=n;i++){msum-=t3[a[i]].first*t3[a[i]].second;ans+=msum;t3[a[i]].first++;t3[a[i]].second--;msum+=t3[a[i]].first*t3[a[i]].second;}cout<<ans;return 0;
}

ABC429E

真正的红如温。后 50min 全是这个题。

你说得对但是 5min 想懂了再 5min 就写完了。但是它就是不过啊。

普通 BFS 题,每个 S 算贡献即可。用 BFS 处理出每个点到一个 S 的最短路和不同 S 的非严格次短路。

但就是这种东西我也能写挂把。

赛后又写了一遍就过了,我咋看不出这两种写法的区别呢?

code

Show me the code
#define rd read()
#define mkp make_pair
#define ls p<<1
#define rs p<<1|1
#define rep(i,a,b) for( int i=(a); i<=(b); ++i)
#define per(i,a,b) for( int i=(a); i>=(b); --i)
#include<bits/stdc++.h>
using namespace std;
typedef long long i64;
typedef unsigned long long u64;
typedef unsigned int u32;
typedef __int128 i128;
i64 read(){i64 x=0,f=1;char c=getchar();while(c>'9'||c<'0'){if(c=='-') f=-1;c=getchar();}while(c>='0'&&c<='9'){x=(x<<3)+(x<<1)+(c^48);c=getchar();}return x*f;
}
const int N=3e5;
vector<int> e[N];
int d1[N],d2[N];
int f1[N],f2[N];
struct work{int v;int w;int id;
};
queue<work> q;
int main(){int n;cin>>n;int m;cin>>m;for(int i=1;i<=m;i++){int u,v;cin>>u>>v;e[u].push_back(v);e[v].push_back(u);}string s;cin>>s;s=' '+s;memset(d1,0x3f,sizeof d1);memset(d2,0x3f,sizeof d2);for(int i=1;i<=n;i++){if(s[i]=='S'){q.push(work{i,0,i});f1[i]=i;d1[i]=0;}}while(q.size()){int u=q.front().v;int w=q.front().w;int id=q.front().id;q.pop();w++;for(int v:e[u]){if(d1[v]==0x3f3f3f3f){d2[v]=d1[v];d1[v]=w;f1[v]=f2[v];f1[v]=id;}else if(d2[v]==0x3f3f3f3f&&f1[v]!=id){d2[v]=w;f2[v]=id;}else continue;q.push(work{v,w,id});}}for(int i=1;i<=n;i++){if(s[i]=='D'){cout<<d1[i]+d2[i]<<'\n';}}return 0;
}

ABC429F

线段树题,写不完了晚上回来再写。

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

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

相关文章

[ java 锁 - 04 - Integer o = 1 作为 锁的问题]

关于 Integer 作为锁对象的风险总结 核心结论 Integer(如 Integer lock = 1;)不适合作为 synchronized 的锁对象,因缓存复用和不可变性导致同步逻辑失效。 关键风险点缓存复用导致锁冲突 Java 对 [-128, 127] 范围内…

2025年自动提升机厂家权威推荐榜单:专业制造与高效解决方案深度解析

2025年自动提升机厂家权威推荐榜单:专业制造与高效解决方案深度解析 在工业自动化快速发展的今天,自动提升机作为物料输送系统的核心设备,其性能优劣直接影响生产效率和运营成本。随着智能制造和工业4.0理念的深入应…

golang: gin项目常用第三方库

一,安装gin $ go get github.com/gin-gonic/gin@latest二,安装zap $ go get -u go.uber.org/zap三,安装validator $ go get -u github.com/go-playground/validator/v10四,安装gorm gorm $ go get -u gorm.io/gorm …

ssh: 连接报错

一,报错信息: $ ssh -p 22 root@123.124.125.84 Unable to negotiate with 123.124.125.84 port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss 二,问题原因 个错误消息表明你的SSH客户端和服…

python3: ubuntu上安装时报错: No module named zlib

一,报错信息: Traceback (most recent call last):File "<frozen zipimport>", line 620, in _get_decompress_func ModuleNotFoundError: No module named zlib二,解决: 安装zlib库 # wget https:/…

2025年提升机厂家权威推荐榜:自动提升机、垂直提升机、斗式提升机、物料提升设备源头厂家精选

2025年提升机厂家权威推荐榜:自动提升机、垂直提升机、斗式提升机、物料提升设备源头厂家精选 在工业自动化快速发展的今天,提升机作为物料输送系统的核心设备,其性能直接影响生产效率和运营成本。随着智能制造理念…

[java 锁 - 03 重入写法 ]

可重入锁的核心是“同一线程可重复获取同一把锁”,Java 中 synchronized 和 ReentrantLock 都是可重入锁,写法各有特点。下面分别两种锁的可重入用法示例,清晰展示“重复获取锁”的场景: 一、synchronized 可重入写…

2025年包装机厂家权威推荐榜:自动包装机,半自动包装机,高效包装设备源头厂家精选与选购指南

2025年包装机厂家权威推荐榜:自动包装机,半自动包装机,高效包装设备源头厂家精选与选购指南 随着制造业智能化转型的深入推进,包装机械行业正迎来技术革新的关键时期。自动包装机和半自动包装机作为生产线的重要环…

实用指南:Golang 中的字符串:常见错误和最佳实践

实用指南:Golang 中的字符串:常见错误和最佳实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas"…

2025年自动上料机厂家推荐排行榜:螺旋上料机,真空上料机,粉末上料机,颗粒上料机专业制造商精选指南

2025年自动上料机厂家推荐排行榜:螺旋上料机,真空上料机,粉末上料机,颗粒上料机专业制造商精选指南 随着工业自动化进程的加速推进,自动上料机作为生产线上的关键设备,其技术水平和性能表现直接影响着生产效率和…

完整教程:iOS 抓包工具有哪些?实战对比、场景分工与开发者排查流程

完整教程:iOS 抓包工具有哪些?实战对比、场景分工与开发者排查流程2025-10-26 17:09 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto …

OI 笑传 #22

Hitsuzetsu技巧场,题目都不难。 1给定字符串 \(S\) 和许多人名字的缩写字符串 \(T\),判断是否存在一个分割点 \(p\)(\(1 \leq p < |S|\)),使得:子串 \(S[1..p]\) 可划分成若干“拼音”(至少两个小写英文字母…

2025长沙1024程序员日:为开发者职业发展插上腾飞之翼

2025长沙1024程序员日:为开发者职业发展插上腾飞之翼2025长沙1024程序员日:为开发者职业发展插上腾飞之翼 开发者目前最关注的是什么? 相信大多数人的答案是:AI来了,我的工作怎么办? 8月份,斯坦福发布的《关于A…

20232315 2025-2026-1 《网络与系统攻防技术》实验三实验报告

20232315 2025-2026-1 《网络与系统攻防技术》实验三实验报告20232315 2025-2026-1 《网络与系统攻防技术》实验三实验报告 目录一、实验基本信息二、实验内容三、实验要求四、实验过程4.1 正确使用msf编码器,使用msf…

2067C cf1500

题目描述: C. 九进制问题 时间限制:每个测试2秒 内存限制:每个测试256兆字节 给定一个正整数 n。每次操作中,你可以给 n 加上任意一个十进制表示仅由数字 9 组成的正整数(数字 9 可以重复出现多次)。 请问至少需…

兼职日志-mysqlpython出图

背景 1、win安装mysql 安装包https://downloads.mysql.com/archives/installer/ 安装步骤https://blog.csdn.net/mumiandeci/article/details/134520684 数据库连接工具https://www.hexhub.cn/CREATE DATABASE IF NOT …

2025东莞包装机/自动包装机/半自动包装机厂家推荐垚林机械,精准高效耐用!

当前包装设备领域的技术挑战与突破包装机械行业正面临着前所未有的技术革新压力。随着制造业智能化转型的加速,传统包装设备在精度、效率和稳定性方面暴露出诸多问题。据统计,目前仍有超过35%的制造企业因包装环节的…

使用pyautogui完成简单的游戏功能--皇室战争降杯

背景简介 有时候我们需要进行游戏的简单完成日常任务,例如皇室战争这个手机游戏,这种卡牌游戏很吃卡牌等级,由于我是国际服新号,等级不太高,不想打到太高分数,避免碰到高等级高卡牌高强度对手,但手动降低杯数太…

彻底清除浏览器缓存

代码如下: localStorage.clear(); sessionStorage.clear(); if (caches in window) {caches.keys().then(names => {names.forEach(name => caches.delete(name));console.log(Service Worker缓存已清除);}); }…

2025 年 10 月系统门窗厂商榜单揭晓,专业工艺制造与品牌保障口碑优选

2025 年 10 月系统门窗厂商榜单由建筑金属结构协会、家具装饰业商会联合发布,此次评选聚焦系统门窗 “工艺精细化、保障全周期” 核心要求,以《铝合金门窗》(GB/T 8478-2008)及《系统门窗技术要求》为双重技术基准…