首页 > 其他分享 >abc 302

abc 302

时间:2024-03-27 21:24:16浏览次数:17  
标签:abc 302 编号 交换 权值 集合

abc 302

E Isolation

  • 别忘了 set 有 \(O(log n)\) 的 erase 函数, 别去看什么 vector \(O(1)\) 删除
  • 其他没啥, 暴力做就行(均摊 \(O(nlogn)\))

F Merge Set

  • 非常有意思的一道题
  • 题意: 每次合并两个有交集的集合, 直到 1 和 M 在同一个集合中, 求最小步数
  • 直接贪心不行, 我们发现能合并的两个集合特征很明显(有交集), 且代价为 1, 可以直接建边跑最短路
    • 将所有包含 1 的集合编号作为起点, 包含 M 的作为终点
    • 如果集合 k 含有元素 a 就从 k 向 a (此处 a 的编号为 a + n, 防止与集合编号冲突)连一条权值为 1 的边, 从 a 向 k 连一条权值为 0 的边
      • 边权反过来也行, 但是不能两个都是 1, 否则会重复加(其实边权都设成 1 然后答案除以 2 也行)
    • 然后 Dijkstra 就行

G Sort from 1 to 4

  • 很特殊的一点: 题目中的数集是 1 - 4, 超级小
  • 设原序列为 a, 最终的(升序)为 b
  • 交换的位置一定构成一个环
  • 开始分类讨论
    • 如果 \(a_i == b_j \&\& a_j == b_i\) 那么直接交换 \(i, j\) 是最优的(1 次操作)
    • 否则, 如果\(a_i == b_j \&\& a_j == b_k \&\& a_k == b_i\) 那么交换 \(i, j, k\) 是除 1 之外最优的(2 次操作)
    • 再否则, 如果\(a_i == b_j \&\& a_j == b_k \&\& a_k == b_l \&\& a_l == b_i\) 那么除了交换 \(i, j, k, l\) 外别无选择(3 次操作)
    • 因为只有 4 个不同的数, 所以最多构成一个四元环, 不会再有其他情况了
  • 枚举每一种情况即可

Ex Ball Collector

  • Trick

    • 如果将 \(a_i, b_i\) 连边, 将构成一棵树或者一个连通图(边代表一个点 i)

    • 对于一棵 k 个节点的树, 最多可以选出 k - 1 个不同的球

    • 对于一个 k 个节点的图, 最多可以选出 k 个不同的球

  • 所以只要在 Dfs 时维护形成的树和图的个数即可, 用到可撤销并查集

  • 过程挺麻烦,略了

标签:abc,302,编号,交换,权值,集合
From: https://www.cnblogs.com/Bubblee/p/18100253

相关文章

  • abc310D 带限制的分组方案数
    将n个人分成T组,有m条限制条件,第i个条件为{a[i],b[i]},表示a[i]与b[i]不能分到同一组,问总共有多少种可行的分组方案?1<=T<=n<=10由于最多只有10人,直接爆搜也能过,可以再加个剪枝:如果剩下人每人单独一组都不够T组则不可行。另外,为了去重,可以按编号从小到大的顺序,依次考虑每个人,要么加......
  • 2024妈妈杯数学建模思路ABCD题思路汇总分析 MathorCup建模思路分享
    文章目录1赛题思路2比赛日期和时间3组织机构4建模常见问题类型4.1分类问题4.2优化问题4.3预测问题4.4评价问题5建模资料1赛题思路(赛题出来以后第一时间在CSDN分享)https://blog.csdn.net/dc_sinor?type=blog2比赛日期和时间报名截止时间:2024年4月11......
  • AT_abc345_c的题解
    (一)首先交换相同字符不改变字符串形态,那么就先统计是否有相同字符。交换不同字符容易证明不同操作后字符串各不相同。用前缀和或后缀和维护\(i+1\)到\(n\)中与\(i\)位置字符不同的数量。(二)AC代码。#include<bits/stdc++.h>#defineintlonglongusingnamespacestd......
  • AT_abc344_e的题解
    (一)这次ABC有点水。每个数记录前面那个数,和后面那个数。对于每个数,开个数组记录值,用map记录一个值的位置(二)AC代码。#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;intpre[400010],cnt,las[400010],a[400010],n,q;map<int,int>mp;signedmain(......
  • AT_abc344_c的题解
    (一)数据范围较小,三重循环枚举选的数,用map存储可能的和即可。(二)AC代码。#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;intn,m,l,q,a[110],b[110],c[110];map<int,bool>mp;signedmain(){ scanf("%lld",&n); for(inti=1;i<=n;i++)scan......
  • AT_abc343_f的题解
    (一)F<E。显然是线段树,虽然分块也能过。每个线段树上的节点记录最大值,第二大值,最大值个数,第二大值个数。合并操作注意值相等的情况。(二)AC代码。赛事写得有点乱。#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;intn,q,a[400010];structnode{ int......
  • FUSB302BMPX 可编程USB芯片控制器 接口集成电路 302B Type-C Control IC with PD
    FUSB302BMPX是一种可编程的USBType-C控制器,由安森美半导体公司生产。它支撑USBType-C检测,包含衔接和方向,并集成了USBBMC功率输送协议的物理层,可完成高达100W的电源和角色交换。该控制器适用于希望完成DRP/SRC/SNKUSBType-C衔接器的系统规划人员。此外,FUSB302BMPX支撑USB3......
  • abc329F 装彩球的盒子
    有编号为1~n的n个盒子,最初每个盒子里都有1个球,颜色为c[i]。有Q次询问,每次给出{a[i],b[i]},将编号为a[i]的盒子里的球全放进编号为b[i]的盒子里,要求输出操作后b[i]中有多少种颜色的球?1<=n,Q<=2e5;a[i]!=b[i]用map维护每个盒子里不同颜色的球数,模拟即可,注意要用启发式合并。#incl......
  • abc346
    D-GomamayoSequence给定\(N\)长的01字符串,使其满足,只有一个下标\(i,S_{i}=S_{i+1}\)对于\(S_i\),他改变的花费为\(C_i\),若\(S_i=0,则它变为1,否则变为0\)因为只有一对相同的字符组(i,i+1)维护\(1-i\)以\(j\in{0,1}\)结尾的01交替串的花费维护\(i-结尾\)以......
  • Atcoder ABC245H Product Modulo 2
    发现这个\(m\)很大,且这个式子是\(\times\)。一个想法是拆成\(m=\prod{p_i}^{e_i}(p_i\in\mathbb{P})\)然后对于\(M=p_i^{e_i}\)依次考虑\(b_i=a_i\bmodM\)和\(N=n\bmodM\)。根据\(\text{CRT}\),对于任意一个\(M\)得到的不同的\(b_i\)对于最后的\(a_i......