首页 > 其他分享 >AtCoder Beginner Contest 321

AtCoder Beginner Contest 321

时间:2024-03-04 15:35:14浏览次数:24  
标签:AtCoder statu num1 num2 状态 text 连通 321 Beginner


\[\large \text{Round 12 : AtCoder Beginner Contest 321} \]

一言:
只要你在,我便无所不能。
——进击的巨人

感觉只有最后一道题有点意思,其他的就是时间问题,但是速度还是不够快,思维要跟上啊。

有意思的是,周考考了回退背包,这里居然又来一次。。

\(\text{G : Electric Circuit}\)

这个期望又是拿来唬人的,直接状压得到所有的连通块具体包含了哪些点,然后算概率,加起来就是答案。

首先先预处理每个状态中,在 \(a\) 数组中出现了多少次,在 \(b\) 数组中出现了多少次,假设为 \(num1[statu],num2[statu]\)。

首先,如果 \(num1[statu] \not = num2[statu]\),显然这个连通块是构造不出来的。

然后,我们只考虑 \(num1[statu]\) 和 \(num2[statu]\) 这些点。首先有一个乱排的总方案 \(num1[statu]!\)。但是显然有一些方案是不合法的,它会使得这个连通块不完整,所以要减去这些方案。

考虑从前面的状态转移的到这个减去的方案。先枚举状态 \(k\),显然满足 \(k\) 是 \(statu\) 的子状态。那么显然,如果你将 \(k\) 状态中的所有 \(num1[k]\) 与 \(num2[k]\) 完全匹配,那么就会使得 \(k\) 这个连通块被独立出来,然后对于其他剩下来的,乱排就可以了,故要减去 \(\sum dp[k] \times (num1[statu]-num1[k])!\)。

减完之后,统计答案的时候,由于只考虑了 \(num1[statu],num2[statu]\) 这些点,所以要将 \(dp[statu]\) 乘上 \((m-num1[statu])!\),也就是其他边乱排。

最后乘个逆元就行了。

\(\text{Submission}\)

\(\text{What I learned}\)

  • AT 的期望全是唬人的,就是把所有状态的贡献加上就行了。

  • 有些时候,为了减去不合法的方案,这些方案数可能可以从其他合法的子状态中转移得到。

标签:AtCoder,statu,num1,num2,状态,text,连通,321,Beginner
From: https://www.cnblogs.com/SFsaltyfish/p/18051895

相关文章

  • AtCoder Regular Contest 171
    \[\large\text{Round13:AtCoderRegularContest171}\]一言:我并不是要失去自由,而是要去收获那无可替代的不自由。——SSSS.电光机王几年没写了,但是我们仍然要捡回来!没啥好写的,T1,T2能力范围之内,T3不会,T4感觉很好,但是没做出来。\(\text{D:RollingHash}\)这题无论......
  • AtCoder Beginner Contest 298
    \[\large\text{Round5:AtCoderBeginnerContest298(VP)}\]一言:成一事者,是失之不渝的愚者;毁一事者,是停滞不前的贤者。——不正经的魔法讲师\(\text{Ex:SumofMinofLength}\)这次比赛总体难度不是很大,可能也是我第一次自己独立做出\(\text{Ex}\)。(虽然不是场切......
  • AtCoder Beginner Contest 315
    \[\large\text{Round6:AtCoderBeginnerContest315}\]一言:愿悲、爱恋、你和宇宙以及那颗星辰,能够永远拥抱我们。——THEBEYOND-機動戦士ガンダム40周年纪念曲这场打的一般,主要还是一开始网卡爆了把心态弄得很不好,一定程度上影响了发挥。\(\text{G:Ai+Bj+Ck......
  • AtCoder Beginner Contest 310
    \[\large\text{Round8:AtCoderBeginnerContest310(VP)}\]一言:虚伪的眼泪,会伤害别人,虚伪的笑容,会伤害自己。——反叛的鲁鲁修\(\text{F}\)竟然没有第一时间想到状压,还是太蒟了。。\(\text{F:Make10Again}\)这题看到一个子集,再加上子集和的范围只需要考虑小于......
  • AtCoder Beginner Contest 313
    \[\large\text{Round2:AtCoderBeginnerContest313(VP)}\]一言:当我拔出第二把剑时,就是为了我所爱之人——刀剑神域这场比赛真的是大败而归,只A了\(A,B,C,E\)。。。虽然但是,\(F,G\)确实不可做,但是\(D\)题还是有点可惜了。\(\text{D:OddorEven}\)感觉考场......
  • AtCoder Beginner Contest 343
    AtCoderBeginnerContest343比赛链接A-WrongAnswer思路简单的模拟,事实上我们需要注意一下当a和b都为0的情况Code#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongvoidsolve(){ inta,b; cin>>a>>b; intans=a+b; //cout<<a+b-1<<en......
  • AtCoder Beginner Contest 343
    基本情况前四题秒了,但是都有不够优雅的地方F知道是线段树,但是写不出来,极其绝望C-343C-343(atcoder.jp)更简洁的回文判断MyCodeboolcheck_p(i64x){std::strings(std::to_string(x));intn=sz(s);for(inti=0;i<n/2;i++){if......
  • AtCoder Beginner Contest 343:起航
    AtCoderBeginnerContest343:起航2024/3/2/22:53有点儿晚了,简单总结一下。前4题都很基础,一点点小思维,其中C题边界又盲目追求刚刚好,WA了一次,总结经验,程序实际设计应该略微大于数据范围。EFG开始就做不动了,只剩了20多分钟,先通读然后看E题,E题读了半天发现大概是体积交并反......
  • AtCoder Beginner Contest 343
    B-AdjacencyMatrix难度:⭐题目大意给定一个无向图的邻接矩阵,问每个节点都和哪些节点相练;解题思路没啥好说的;神秘代码#include<bits/stdc++.h>#defineintlonglong#defineIOSios::sync_with_stdio(false);cin.tie(0);cout.tie(0);#defineendl'\n'......
  • AtCoder Beginner Contest 343(小白来了)
    A-WrongAnswer思路:给你两个数(A,B0~9)输出非A+B(0~9)解法:许多(A+B)^1等等Code:#include<iostream>usingnamespacestd;intmain(){intA,B;cin>>A>>B;cout<<!(A+B);return0;}B-AdjacencyMatrix思路......