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$天,手里有$j$个节点,最多会返还多少节点。
第$i$天获得节点的过程转移为$g_{i,j+f_j}=\max(g_{i,j+f_j},g_{i-1,j})$,而对于存储节点的过程,只需对每一种存储方式做一个完全背包即可。
C.elebration
-Problem designed by Starria-
定义长度不超过 $\frac{n-1}{2}$ ,且不含重复颜色的段为合法的段。记 $pre_x$ 为以 $x-1$ 为右端点的合法段最远的左端点, $nxt_x$ 为以 $x$ 为左端点的合法段最远的右端点。
枚举题面所述三元组中的 $a,b(a<b\le nxt_a+1)$ ,则合法的 $c$ 是 $(b,nxt_b+1]$ 与 $[pre_{a},n]$ 的交集。也就是说,当 $pre_{a}>nxt_b$ 时, $b$ 的贡献是 $nxt_{b}+2-pre_{a}$ 。
每次向右移动 $a$ 时,将 $(nxt_a+1,nxt_{a+1}+1]$ 区间内的 $b$ 的贡献挂在 $nxt_b$ 上,在移动 $pre_{a}$ 时将经过的贡献减去即可。
时空复杂度 $O(n)$ 。
利用数据结构可以简单地维护交集,这哪里卡得掉没有刻意去卡。
D.isaster
-Problem designed by Winniechen-
对于一个图很难处理,所以考虑将图简化,直接建立一棵生成树达到原来的效果。
由于我们询问的时候,要求只能走到编号 $\le y$ 的点,所以保留的边两端点编号的 $\max$ 应当尽可能小,这样就有更多的边可以被一次询问用到。
所以我们将边按照两端点的 $\max $ 排序,建立一棵 kruskal 重构树。(这个不会自行解决)
在此基础上维护一棵线段树和一个倍增数组,每次找到 kruskal 重构树上能到达的最高点,然后询问子树乘积和,修改就直接修改即可。
E.ffort
-Problem designed by Winniechen-
假设总攻击次数为 $k$ ,那么我们要把这 $k$ 次相同的攻击分配给 $n$ 个不同的人,根据插板法来看也就是在这 $k$ 次攻击里插 $n$ 个板。记令攻击次数恰为 $k$ 的方案为 $ans_1$ ,插板方法为 $ans_2$ , $k$ 的贡献即为 $ans_1\times ans_2$ 。
维护 $k$ 次项系数为一个第 $i$ 种数据结构攻击次数中插 $k$ 个板的方案的多项式 $F_i(x)$ ,那么 $[x^k]F_i^{a_i}(x)$ 就是第 $i$ 种里插 $k$ 个板的方案数了。
由于我们只有 $n$ 个板,所以多项式长度始终不超过 $n$ 。在模 $x^{n}$ 意义下做多项式快速幂,最后再将 $m$ 个多项式合并即可。
整体复杂度最优可以达到 $O(nm\log n)$ , std 写的是 $O(nm\log n\log a_i)$ 。
F.arewell
-Problem designed by negiizhao-
令 $E_S$ 表示点集 $S$ 内部的边数, $E_{S,T}$ 表示 $S$ 与 $T$ 之间的边数, $F_S$ 表示 $S$ 是 DAG 的方案数。
枚举入度为 0 的点集 $T$ ,转移为 $F_S=\sum_{T\subseteq S,T\neq \varnothing }(-1)^{|T|-1}F_{S\backslash T}2^{E_{T,S\backslash T}}$ 。
$S$ 中入度为 0 的点集的每个子集都会算一次,对其简单容斥即可得到系数 $(-1)^{|T|-1}$ ,而系数 $2^{E_{T,S\backslash T}}$ 来自于 $S\backslash T \rightarrow T$ 的边只能断掉或指向 $T$ 。
对DAG计数稍有了解的人可以从这里开始阅读
\sout{对DAG计数稍有了解的人可以从这里开始阅读}
$2^{E_{T,S\backslash T}}$ 可以写作 $2^{E_S}-2^{E_T}-2^{E_{S\backslash T}}$ ,因此原式化为$$\frac{F_S}{2^{E_S}}=\sum_{T\subseteq S,T\neq \varnothing }\frac{(-1)^{|T|-1}}{2^{E_T}}\ast \frac{F_{S\backslash T}}{2^{E_{S\backslash T}}}$$
对上述式子进行子集卷积即可。
对DAG计数稍有了解的人可以从这里开始阅读$\surd$
赛中后吐槽总结
- BY Winniechen&Starria
出题人的一些吐槽
- 为什么10min还没有人过B (在10min的时候
- 为什么大家D都一直在Wa啊!
- 为什么有人会写树状数组啊!
- CD是不是顺序反掉了啊……(这是Starria的锅!
- B看起来出难了(手动狗头)
- 怎么有人1h不到就出F了!
- (看起来F卡人常数了….
- 听说有人觉得题面不好,我不这么认为
- 1.5h的时候,终于六道题的一血都出来了,这让出题人很激动
- 2h的时候,终于有人A掉5道题了
- 2h 10min的时候,终于有 >10个人切 四道题了
- 2h 23min的时候,终于有第二个切E的人了!
- 在最后的10min的时候,发现supy的F被卡常了
- 然后终于出现了这场比赛唯一一个AK的选手!
最后看起来,CD放反了,EF放反了
- 为啥D题大家都没有发现$a_i ,v \le 10^9$会比$998244353$大
- 为啥$B$题会有那么多人wa那么多发
- C题出题人为何如此毒瘤
- 为何题面会出成这个样子
尽请期待后天晚上的视频题解,届时出题人Winniechen和Starria会为大家讲解这次试题,并解答一些花絮!
出题人的一些自我坦白与反思总结
- 其实原来的题目不是这个样子的,只不过在考试前三天,F的算法出现了问题,今天才出好这个F的数据,所以让人感到抱歉
- 每道题的数据都被dreamoon加强过,原来我的数据菜得要死
- 然后两位(三位)出题人都是鸽子,都很能拖
- 主要负责人(Winniechen)多数时候不能及时的传递信息,并且不参照出题手册出题,让AA姐等工作人员感到棘手,在此我深表歉意
- 谢谢大家支持!
- 出题人的QQ:Winiechen 1967199892 , Starria 972808330
Comet OJ - Contest #11 题解&赛后总结的更多相关文章
-
Comet OJ - Contest #11题解
传送门 \(A\) 咕咕咕 const int N=1e6+5; char s[N],t[N];int n,res; inline bool cmp(const int &x,const in ...
-
Comet OJ - Contest #11 E ffort(组合计数+多项式快速幂)
传送门. 题解: 考虑若最后的总伤害数是s,那么就挡板分配一下,方案数是\(C_{s-1}^{n-1}\). 那么问题在于总伤害数很大,不能一个一个的算. \(C_{s-1}^{n-1}\)的OGF是 ...
-
Comet OJ - Contest #0题解
传送门 菜爆了--总共只有一道题会做的--而且也没有短裙好难过 为啥必须得有手机才能注册账号啊喂--歧视么-- \(A\) 解方程 推一下柿子大概就是 \[x-\sqrt{n}=y+z+2\sqrt{ ...
-
Comet OJ - Contest #3 题解
传送门 太菜了连\(D\)都做不出来没有小裙子\(QAQ\) \(A\) 暴力把所有的数对都算出来,然后\(sort\)一下就行了 const int N=505; int a[N],st[N*N], ...
-
Comet OJ - Contest #11 B题 usiness
###题目链接### 题目大意:一开始手上有 0 个节点,有 n 天抉择,m 种方案,在每天中可以选择任意种方案.任意次地花费 x 个节点(手上的节点数不能为负),使得在 n 天结束后,获得 y 个节 ...
-
Comet OJ - Contest #2题解
传送门 既然没参加过就没有什么小裙子不小裙子的了-- 顺便全是概率期望真是劲啊-- 因自过去而至的残响起舞 \(k\)增长非常快,大力模拟一下就行了 int main(){ scanf("% ...
-
Comet OJ - Contest #15 题解
传送门 \(A\) 咕咕 const int N=1005; int a[N],n,T; int main(){ for(scanf("%d",&T);T;--T){ sc ...
-
Comet OJ - Contest #8题解
传送门 \(A\) 咕咕咕 const int N=1005; char s[N][N];int len[N],n,id; inline bool cmp(R int j,R int k){ R in ...
-
Comet OJ - Contest #11 B 背包dp
Code: #include <bits/stdc++.h> #define N 1005 #define M 2000 #define setIO(s) freopen(s". ...
随机推荐
-
OkHttp使用全解析(转)。
Android系统提供了两种HTTP通信类,HttpURLConnection和HttpClient.关于HttpURLConnection和HttpClient的选择>>官方博客尽管Go ...
-
cocod2d-x 之 CCTMXTiledMap &; CCTMXLayer
cocos2dx框架自带的地图CCTMXTiledMap,继承自CCNode.CCTMXTiledMap的坐标系的原点位于左上角,以一个瓦片为单位,换句话说,左上角第一块瓦片的坐标为(0,0),而紧挨 ...
-
ViewPager禁止滑动以及它与内层滑动控件水平方向上事件冲突的解决方法
一.上图 二.场景描写叙述 最近在做项目的时候.遇到一个怪异的需求,描写叙述例如以下: 1.ViewPager中嵌套3个View,当从View1滑动到View2时禁止ViewPager的滑动事件. 2 ...
-
Android:Service的非绑定式的创建和生命周期
Android的Service若使用非绑定式的创建,则创建后将无法再与它取得联系.即无法传递消息參数等: 所以假设希望创建后仍然与其存在联系,那么能够參考我的前几篇博客<Android:Serv ...
-
STL容器的内存分配
这篇文章参考的是侯捷的<STL源码剖析>,所以主要介绍的是SGI STL实现版本,这个版本也是g++自带的版本,另外有J.Plauger实现版本对应的是cl自带的版本,他们都是基于HP实现 ...
-
[置顶] cocos2d-x 植物大战僵尸(13)类似酷跑的【同一角色不同动画间的切换的实现】
有几天没和大家分享博客了,原因很简单,就是我在运行第12章所写的代码时:(开始一切正常,不过没多久就出现了内存泄露!.可能求成心切吧,当时没多加考虑就把代码发上去了.我在此对看过第12章得 ...
-
NET中小型企业级项目开发架构系列(一)
前端时间我们开发了基于Net的一套搭建sprint.NET+NHibernate+MVC+WCF+EasyUI等中小型企业级系统开发平台,现在把整个开发过程中的步步进展整理出来和大家分享,这个系列可能 ...
-
Go基础系列:为select设置超时时间
Go channel系列: channel入门 为select设置超时时间 nil channel用法示例 双层channel用法示例 指定goroutine的执行顺序 After() 谁也无法保证某 ...
-
【HDU - 4340】Capturing a country(树形DP)
BUPT2017 wintertraining(15) #8A 题意 n(<100)个城市组成的树.A攻击i城市需要a[i]代价,B需要b[i].如果一个城市的邻居被A攻击了,那么A攻击它只要A ...
-
深入浅出JavaScript之跨域总结
什么是跨域 1.document.domain+iframe的设置 2.动态创建script 3.利用iframe和location.hash 4.window.name实现的跨域数据传输 5.使用H ...