传送门. 题解: 考虑若最后的总伤害数是s,那么就挡板分配一下,方案数是\(C_{s-1}^{n-1}\). 那么问题在于总伤害数很大,不能一个一个的算. \(C_{s-1}^{n-1}\)的OGF是\({x^{n-1}\over (1-x)^n}\) 由\(F=FA+R->F={R \over 1-A}\) 得到递推式\(A=1-(1-x)^n\),前面的项可以用组合数算出. 那么每次就是常系数齐次递推,每次搞的时候取模就好了. 复杂度是\(O(log^2)\) 题解给出了更加巧妙的方法,我们…
Solution of Comet OJ - Contest #11 A.eon -Problem designed by Starria- 在模 10 意义下,答案变为最大数的最低位(即原数数位的最小值)和原数最低位的差. 令$S$为输入数字串,则答案为 $(\min_{i=1}^{n}S_i-S_n)%10$ . 时间复杂度 $O(n)$ . B.usiness -Problem designed by Winniechen- 这是一个很显然的动态规划问题. 令$g_{i,j}$表示第$i$…
传送门 \(A\) 咕咕咕 const int N=1e6+5; char s[N],t[N];int n,res; inline bool cmp(const int &x,const int &y){return x>y;} int main(){ scanf("%s",s+1),n=strlen(s+1); fp(i,1,n)t[i]=s[i];sort(t+1,t+1+n,cmp); fp(i,1,n)res=(res*10+t[i]-s[i]),res=…
###题目链接### 题目大意:一开始手上有 0 个节点,有 n 天抉择,m 种方案,在每天中可以选择任意种方案.任意次地花费 x 个节点(手上的节点数不能为负),使得在 n 天结束后,获得 y 个节点. 其次,在每天结束后,会根据自己手上所具有的节点数来获得一些节点,设当天结束后所拥有 x 个节点,那么将获得 f(x) 个节点. 分析: 1.将全过程分为 n 天,每天开始有一定的节点数,然后 DP 求得花费后的最大价值(这个最大价值指的是,n 天结束后仅返还获得的最大节点数).故设 dp[i]…
Code: #include <bits/stdc++.h> #define N 1005 #define M 2000 #define setIO(s) freopen(s".in","r",stdin) using namespace std; int A[N],B[N],w[M+3],f[M+3]; int main() { // setIO("input"); int n,m,k,i,j,ans=0; scanf("…
Code: #include <bits/stdc++.h> #define N 3000000 using namespace std; char str[N]; int main() { int minv=10,cur,len; scanf("%s",str+1),len=strlen(str+1); for(int i=1;i<=len;++i) { minv=min(minv, str[i]-'0'); cur=str[i]-'0'; } printf(&qu…
发现对于任意一条边,起决定性作用的是节点编号更大的点. 于是,对于每一条边,按照节点编号较大值作为边权,按照最小生成树的方式插入即可. 最后用线段树维护 dfs 序做一个区间查询即可. Code: #include <bits/stdc++.h> #define N 400005 #define ll long long #define mod 998244353 #define setIO(s) freopen(s".in","r",stdin) us…
Comet OJ - Contest #2 简要题解 cometoj A 模拟,复杂度是对数级的. code B 易知\(p\in[l,r]\),且最终的利润关于\(p\)的表达式为\(\frac{(p-l)(\frac{L+R}{2}-p)}{r-l}\),二次函数求最值即可. code C 枚举独立集点数即可.\(\sum_{i=0}^n\binom nip^{\binom i2}\). code D 树上的任意一个满足\(|S|\ge2\)的点集\(S\)均有一个唯一的中心,即直径的中点(…
Comet OJ - Contest #2简要题解 前言: 我没有小裙子,我太菜了. A 因自过去而至的残响起舞 https://www.cometoj.com/contest/37/problem/A?problem_id=1528 容易发现那玩意增长的飞快,只要模拟就可以了 //❤ ayaponzu* #include <cstdio> #include <cstring> #include <algorithm> #include <cstdlib>…
原题:Comet OJ - Contest #4-B https://www.cometoj.com/contest/39/problem/B?problem_id=1577传送门 一开始就想着暴力打表,结果.. 前缀和是个很好的工具,本题可以用相邻前缀和之差得到结果. 例如:K=4: 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 1 #include <cstdio> using int64 = long long; int main() { int T; scanf(&quo…