当前位置: 首页 > news >正文

9.9未完成

usaco24openP1. Identity Theft

题意:

给一些 01 串,现在你每一次操作都可以往其中一个 01 串的摸末尾添加一个数字。问至少需要多少次操作才可以让任意一个串都不是其他串的前缀。

题解:

我们先建一颗 trie 出来,发现我们对一些现在不满足要求的串操作,可以选择把这个串 \(S\) 添加成两种可能。

  • 在子树中选择一个度数为 \(1\) 的点,把串 \(S\) 添加到这个点的空的儿子上,代价为 \(dep\) 差值 \(+1\)。而且此时同时创造了一个叶子。
  • 在子树中选择一个满足要求的串 \(X\),然后把这个串和 \(S\) 分别挂到原来 \(X\) 叶子上的两个空儿子上代价为 \(dep\) 差值 \(+2\)。而且此时同时创造了两个叶子。

显然我们贪心的选择所有代价中最小的。用堆来维护代价。合并的时候启发式合并即可。\(\Theta(\sum|s_i|\log N)\).

code:

#include<bits/stdc++.h>
#define For(i,a,b) for(int i=(a);i<=(b);++i)
#define Rof(i,a,b) for(int i=(a);i>=(b);--i)
using namespace std;
typedef pair<int,int> Pair;
const int Maxn=1e6;
int n,ans,tot,t[Maxn+5][2],cnt[Maxn+5],dep[Maxn+5];
priority_queue<Pair,vector<Pair>,greater<Pair>> q[Maxn+5];
inline void Insert(){string s;cin>>s;int p=0;for(auto i:s){if(!t[p][i-'0']) t[p][i-'0']=++tot,dep[tot]=dep[p]+1;p=t[p][i-'0'];} cnt[p]++;
}
inline void dfs(int x){int a=t[x][0],b=t[x][1];if(a) dfs(a); if(b) dfs(b);if(!a && !b) q[x].emplace(dep[x]+2,1),cnt[x]--;else if(!a || !b) swap(q[x],q[a+b]),q[x].emplace(dep[x]+1,2);else{if(q[a].size()<q[b].size()) swap(a,b);swap(q[x],q[a]); while(!q[b].empty())q[x].push(q[b].top()),q[b].pop();}while(cnt[x]--){auto [k,id]=q[x].top(); q[x].pop(),ans+=(k-dep[x]);if(id==1) q[x].emplace(k+1,1),q[x].emplace(k+1,1);else q[x].emplace(k+2,1);}
}int main(){cin>>n; For(i,1,n) Insert();dfs(0); cout<<ans<<endl;return 0;
}
http://www.zskr.cn/news/1217.html

相关文章:

  • 202205_宁波市赛_Cr4ck2
  • 20250909 GOJ 模拟赛
  • 自我介绍
  • MQ
  • 自我介绍+软工五问
  • 三数之和-leetcode
  • 相似了
  • 最新可用Docker镜像加速站点
  • 第一周作业
  • 来此加密实现SSL证书自动申请+自动部署
  • 2025.9.9——1橙
  • 学习
  • TRVCOST - Travelling cost 题解
  • 原型设计实用干货!3款热门AI生成原型图软件横向测评
  • 错误报警:“该 CPU 或当前的库版本不支持数据类型”
  • Charles实战秘籍:弱网模拟、Map Local/Remote、HTTPS抓包详解
  • 9月23日周二《AI+企业IP获客联盟峰会》,相约东莞厚街富盈酒店
  • 第一次作业 自我介绍+软工5问
  • 深度学习调参新思路:Hyperband早停机制提升搜索效率
  • Nginx 基础
  • .NET 单文件程序详解:从原理到实践 - C#混淆加密大师解包打包单文件程序
  • Rust/C/C++ 混合构建 - Buck2构建工具一探究竟
  • Linux运维-字符处理(1、文件查看)
  • Rust 环境搭建
  • Node-RED 究竟是否适合工业场景?
  • 向量化与嵌入模型:RAG系统背后的隐形英雄
  • 模拟信号采集的硬件基石:高性能ADC设计的核心法则
  • WPS设置多级标题,一级标题为“一”、“二”、“三”,二级标题为“1.1”、“2.2”、“3.3”,三级标题为“1.1.1”、“2.2.2”、“3.3.3”
  • 第一周个人作业
  • Modbus开发不头疼:极简指南,半小时搞定基础配置