COCI2017/2018 CONTEST #6

暑假在帮忙训练普及组

顺便翻译了两套最近的COCI题目,因为还没有题解,就自己做做看.....

估计是又要暴露煞笔本质了QAQ

题面的中文翻译戳这里

代码戳这里

Task Davor

\(X\)从大到小(从100开始递减),\(K\)从小到大枚举答案即可


Task Alkemija

一道比较讲究技巧的搜索题

我们可以把\({x}\)集合全部指向他的反应编号,对每一个反应初始记录为反应物的数量

那么每次有新的物质生成的时候,我们可以对所有他指向编号的反应总和\(-1\),当一个反应的值变为\(0\)时,说明这个反应的反应物齐全了,可以进行反应

用这样的方法,对所有的反应进行\(BFS\),我们可以保证所有的反应只进入依次队列,保证每一个物质最多只进入一次队列

最后统计所有遍历物质即可


Task Mate

看来COCI的网测速度和我的本机速度差异还是挺大的。弄了个AC的程序下来,跑得比我还慢,果断不管了。

询问比较多,我们可以考虑预处理所有的情况

我们可以枚举第一个位置\(X\),预处理出\(X\)后面所有26个字母的数量

那么对于当前枚举到的一个位置\(i\)\(X\),如果所需要的长度为\(N\),位置\(i\)后面有\(A_y\)\(Y\),则他对答案的贡献就是\(C^{n-2}_{i-1}*A_y\)

这样暴力预处理,然后直接输出询问即可

复杂度是\(O(n^2*26)\)正好是\(10^8\)多一点点,似乎是常数不太好,本地要跑\(3s+\)


Task Cover

我们可以发现,对于矩阵覆盖最优的情况,一定是下图这样的情形

我们先将坐标排序,方便处理

考虑用\(dp\)来解决,我们用\(f[i]\)表示覆盖前i个点所需要的最小面积

我们可以通过枚举\(j\),来计算一次性覆盖\(j+1\)\(i\)个点所需要的最小面积

暴力转移即可


Task Kotrljanje


Vrtić


猜你喜欢

转载自www.cnblogs.com/xiejiadong/p/9319905.html