COCI 2011~2012 #1~#4 题解

【背景(神犇不要鄙视)】
前段时间,本沙茶在捉神马题都被完虐的情况下,发现了COCI……一看,发现里面有相当数量的水题,于是就去捉了……结果,本想体验虐题的感觉,可还是被里面的一些神犇题虐了……我太沙茶了,没脸见人了囧……

COCI官网

2011~2012 #1:
jabuke: 超级大水题;
matrix:超级大水题,不过本沙茶一开始看疵题了……
x3: 水题,直接对每一位单独考虑即可;
ples: 水题,裸DP;
sort: 这个题看上去很不好搞囧……但注意题目里面的这个条件:一开始各极大递减子序列的长度均为偶数(也就是均>1),这样,第一次模拟一遍以后,剩下的极大递减子序列就只有长度为2的了,这时每个数要归位需要与其后面所有比它小的数都交换一次,所以结果就是第一次模拟的rev执行次数加上第一次模拟之后的逆序对总数;
skakac: 神犇题,因为涉及比较难的知识点,本沙茶暂时不会搞囧……

2011~2012 #2:
najboljih5: 超级大水题;
okret: 超级大水题,注意特殊情况即可;
zadaca: 水题,直接因数分解一遍,再查找相同的因数(用哈希),求较小值即可,对于10^9的判定应该很容易的,注意特殊情况;
kompici: 中等难度,需要用到容斥原理,对于开始的10^6个数,由于本质不同的只有1024个,所以可以压缩成1024种情况,这样总的复杂度就是1024*1024了;
funkcija: 神犇题!!巨神无比的递推!!这里面涉及到的思想需要慢慢总结;
raspored: 中等难度,模型转化后可以发现T是无用的,只需要按照时间递增的顺序执行任务(贪心的经典模型),然后用线段树维护这个递增序的和就行了;

2011~2012 #3:
digitalna: 超级大水题;
dhondt: 超级大水题,关键在于题意的理解(是把每个派别的选票总数依次除以1到14,得14个结果,然后汇总起来取前14大的结果对应的派别,不是按比例);
pogodak: 水题,暴力模拟即可;
robot: 水题,注意二分查找的边界(比如要找大于等于给定值的最小值,需要特判所有的值都小于给定值的情况);
place: 超级大水题,裸得不能再裸的模型了;
traka: 本张试卷的唯一一道不水的题(是个神犇题),首先很容易模型转化为求F[i]S[i-1]-F[i+1]S[i]的最大值,由于F是个定值且为正,可以除以F[i],变成S[i-1]-(F[i+1]/F[i])*S[i],可以看成直线y=S[i-1]-S[i]*x,当x=F[i+1]/F[i]时的纵坐标,这样把所有的直线搞出来,维护下凸壳即可(当然本沙茶至今未做过这样数形结合的题目囧……以后可以搞一个专题);

2011~2012 #4:
kino: 超级大水题,贪心就能搞定;
zima: 水题,线段树操作,注意细节(本沙茶一开始把下放标记dm()中的mr_opr(LCH(No)),mr_opr写成dm了……成递归调用了……为此查了2h+);
keks:超级大水题,贪心经典模型,不要管前导0的问题;
ograda:这个是神犇题了(因为本沙茶总是搞不定啊囧……),首先由于相邻元素的大小关系以定,绝对值号可以去掉的(本沙茶竟然木有想到这个),然后根据贪心思想,应当尽量把大的和小的交替放置,而且这样必然能得到可行解(详细证明见官方题解);
broj:中等难度,P>=5000时可以直接筛,P<5000时用容斥原理(表面上需要计算2 N次,N是小于P的质数总数,其实很多交集都是空集,可以忽略掉,最后剩下的非空集合很少的囧……这也是容斥原理之所以广泛应用的原因啊囧……)
kriptogram: 中等难度,首先各个单词可以映射到Trie里面,变成编号,然后就是类似KMP的搞法了(类似于WC2012 Day1上午讲的那道CEOI题目)……本沙茶用官方数据本机测试AC,但交上去RE了两个点……说是Trie爆了……(本机测试时跟踪了一下,发现木有爆)主要是这题空间卡得太死(64M),而Trie的空间由于要乘上一个104,所以不能开太大(或许这里可以优化,但本沙茶还不会啊囧……)

你可能感兴趣的:(COCI 2011~2012 #1~#4 题解)