Comet OJ - Contest #11 A 水题】的更多相关文章

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…
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$…
###题目链接### 题目大意:一开始手上有 0 个节点,有 n 天抉择,m 种方案,在每天中可以选择任意种方案.任意次地花费 x 个节点(手上的节点数不能为负),使得在 n 天结束后,获得 y 个节点. 其次,在每天结束后,会根据自己手上所具有的节点数来获得一些节点,设当天结束后所拥有 x 个节点,那么将获得 f(x) 个节点. 分析: 1.将全过程分为 n 天,每天开始有一定的节点数,然后 DP 求得花费后的最大价值(这个最大价值指的是,n 天结束后仅返还获得的最大节点数).故设 dp[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=…
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("…
发现对于任意一条边,起决定性作用的是节点编号更大的点. 于是,对于每一条边,按照节点编号较大值作为边权,按照最小生成树的方式插入即可. 最后用线段树维护 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…
Code: #include <cstdio> #include <algorithm> #include <cstring> #define setIO(s) freopen(s".in","r",stdin) #define maxn 400005 #define inf 1000000009 #define ll long long using namespace std; int head,tail; int S[maxn…
传送门. 题解: 考虑若最后的总伤害数是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)\) 题解给出了更加巧妙的方法,我们…
原题: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…
Comet OJ - Contest #13-C2 C2-佛御石之钵 -不碎的意志-」(困难版) 又是一道并查集.最近做过的并查集的题貌似蛮多的. 思路 首先考虑,每次处理矩形只考虑从0变成1的点.这样我们的复杂度就控制在了\(O(nm)\). 那么,我们考虑怎么维护每个点下一个0的位置.因为我们知道并查集是用来维护一些元素的相同关系.所以我们考虑使每个点的\(fa\)为这一行下一个0的位置.那么,当我们把一个点由0染成1时,将这个点和左边的点合并.我们就能保证当前这个点的\(fa\)就是下一个…