题目 首先还没有安排座位的\(m-k\)个人之间是有顺序的,所以先把答案乘上\((m-k)!\),就可以把这些人看作不可区分的. 已经确定的k个人把所有座位分成了k+1段.对于第i段,如果我们能求出这一段恰好额外坐j人时的代价总和\(f_{i,j}\),并令\(f_{i,j}\)的普通生成函数为\(F_i(x)\),答案就是\(\prod F_i(x)\)的\(m-k\)次项系数. 先考虑k+1段中两边都有已经确定的人的k-1段.对于每一段i,枚举其中额外坐的人数j,现在考虑求出\(f_{i,j…
题目 令\(dp_{i,j}\)表示从点1到达点i,路径长度为j的方案数.转移为\(dp_{i,j}=\sum_{(i,v,w)\in E}dp_{v,j-w}p_{i,v,w}\). 显然只能从长度小的转移到长度大的,而且转移是一个自己和自己卷积的形式.考虑分治FFT,当分治到\((l,r)\)时,考虑\(dp_{i,t1} \to dp_{j,t2}(l \leq t1 \leq mid,mid < t2 \leq r)\)的转移.枚举i和j(i,j之间存在边),把\(dp_{i,t1}(l…
AtCoder ABC 242 题解 A T-shirt 排名前 \(A\) 可得 T-shirt 排名 \([A+1,B]\) 中随机选 \(C\) 个得 T-shirt 给出排名 \(X\) ,求得到 T-shirt 的概率 一个 if 即可 B Minimize Ordering 给一个字符串 \(S\) ,求 \(S\) 排列出的字典序最小的字符串 一个排序 C 1111gal password 给 \(n\) ,求出满足条件的 \(n\) 位数 \(X\) 个数 \(\;mod\;99…
atcoder abc 244 D - swap hats 给定两个 R,G,B 的排列 进行刚好 \(10^{18}\) 次操作,每一次选择两个交换 问最后能否相同 刚好 \(10^{18}\) 次 算出交换最少次数,判断是否为偶数. E - King Bombee \(n\) 点 \(m\) 边的简单无向图,给定 \(K,S,T\) 和 \(X\) 求满足以下条件的路径数 \(\;mod\;998244353\) 路径 \(A\) 以长度为 \(K\) ,以 \(S\) 开使,\(T\) 结…
AtCoder ABC 250 总结 总体 连续若干次一样的结果:30min 切前 4 题,剩下卡在 T5 这几次卡在 T5 都是一次比一次接近, 什么 dp 前缀和打挂,精度被卡,能水过的题连水法都没写出来 确实是思维上的缺陷,毕竟 atc 全程都是紧张的 等下一场吧.. 前 4 题较易,不再赘述. E- Prefix Equality 长度为 \(n\) 的数组 \(A,B\) ,每次询问 \(A\) 的前 \(x\) 项和 \(B\) 的前 \(y\) 项组成的集合是否相同 即排序.去重后…
ATCODER ABC 099 记录一下自己第一场AK的比赛吧...虽然还是被各种踩... 只能说ABC确实是比较容易. A 题目大意 给你一个数(1~1999),让你判断它是不是大于999. Solution 没什么好说的,代码学过编程就应该都会打. B 题目大意 有一排树,高度分别为1,1+2,1+2+3,1+2+3+4....1+2+3+...+999.现在下雪了,给出露在外面的两棵相邻的树的高度,问你雪的厚度. Solution 明显,我们把这俩数减一下就可以得出他们本来的位置,然后直接…
Atcoder ABC 141 A - Weather Prediction SB题啊,不讲. #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; char ch[50]; int main() { scanf("%s",ch+1); if(ch[1] == 'S') puts("Cloudy…
Atcoder ABC 139E 题意: n支球队大循环赛,每支队伍一天只能打一场,求最少几天能打完. 解法: 考虑抽象图论模型,既然一天只能打一场,那么就把每一支球队和它需要交手的球队连边. 求出拓扑序,每次从入度为0的点进行拓扑排序,并把答案加1,删去所有出度,重复该操作. 如果形成环的话就无解. CODE: #include<iostream> #include<cstdio> #include<cstring> #include<algorithm>…
Atcoder ABC 139D 解法: 等差数列求和公式,记得开 $ long long $ CODE: #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; #define LL long long LL n,ans; int main() { scanf("%lld",&n); ans =…
Atcoder ABC 139C 题意: 有 $ n $ 个正方形,选择一个起始位置,使得从这个位置向右的小于等于这个正方形的高度的数量最多. 解法: 简单递推. CODE: #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; #define LL long long const int N = 1e5 + 100; in…