poi 11th(一) - HZH's Blog - 自闭症

poi 11th(一)

nbdhhzh posted @ 2015年4月07日 20:05 in 屯题 with tags POI , 814 阅读

原来想选更近一点的,但是题目太难不会所以就选了这届

目前战绩

Game (Stage I) (100/100)
Strings (Stage I) (100/100)
Spies (Stage I) (100/100)
The Competition (Stage I) (100/100)
The Bridge (Stage II - day 0) (100/100)
Gates (Stage II - day 1) (100/100)
Cave (Stage II - day 1) (100/100)
Passage (Stage II - day 2) (100/100)
The Tournament (Stage II - day 2) (100/100)
Guesswork (Stage III - day 0) (0/100)
East-West (Stage III - day 1) (100/100)
The Islands (Stage III - day 1) (100/100)
C-algae (Stage III - day 2) (100/100)
Maximal Orders of Permutations (Stage III - day 2) (100/100)

T1 阶梯取石子游戏,把考虑0是楼梯的间隔,1是石子,然后只要把奇数位的石子xor起来就好辣,方案数要把奇数偶数都考虑进去。。

T2 树形dp,以前还写过的,居然还写了2个小时,感觉没希望。第一问求1+sigma (点度数-1)>>1,第二问考虑先二分答案然后树形dp。

T3 也是dp,以前感觉用过一种更好的方法,结果现在想不出来了,然后就写了个傻逼dp

T4 刚刚开始写了个搜索+剪枝,T了一个点。然后想了很久,发现只要出去和回来到1走的那条边不同就可以辣,然后写了个spfa,又T了。加了个堆优化,还是T了,然后研究了很久,发现:次短路和最短路不能一起求!然后就0.03s A掉辣!真是历经艰难险阻,果然智商还是不够用。。

T5 考虑贪心,先让最小的和第二小的过去,然后最小的回来,最大的和第二大的过去,然后第二小的回来。这样一回合的代价是a[1]+a[2]*2+a[max]。还有一种方案就是最小的代最大的过去,然后回来再带第二大的过去,这样代价是a[1]*2+a[max]+a[max-1]然后比一比哪种优每次运两人就好了。

T6 刚刚开始写了个坑爹乱搞900B,然后萎了两个点。然后看数据发现漏考虑了一种情况,然后就码码码,结果还是错了一个点,然后这时发现要tarjan缩点后排拓扑序。然后感觉懒得写,于是就做了两遍2333,然后发现大点T了。然后加了个特判就A了。后来感觉这样没希望就重写了一个tarjan缩点排拓扑序+bfs。大概就是先bfs出0,1两点能直接变的那些点,然后考虑对每个点赋权值,然后bfs后看是否合法,如果只有一个合法就给他赋那个权值然后bfs一遍修改所有和他有关联的点的权值。然后如果他确定是?就可以把他能bfs到的全扭掉蛤蛤。

T7 神题。。果然像我这种蒟蒻肯定想不到怎么做。。题解http://yunpan.cn/cVrd49rCTdn3p (提取码:8b5f)(感谢杜教大神犇)想了2天都没想出来,果然我还是太弱了。以后要更加努力!

T8 傻逼子集dp 3^n轻松水

T9 考虑一个人,如果他能胜利,那么必定赢他的人一定都能被打败。然后怎么样都能被打败呢?考虑建立两个集合,一个表示能胜利的,还有一个表示不确定的。如果在不确定中有一个点x,他并不能被胜利集合中的某个点y打败的话,那么y就能把除了x之外的全干翻,然后x再干y,然后x就胜出辣,然后这东西可以用队列维护一下。

T10 未完成

T11 考虑他一定是到了那个关键节点然后停下来,然后再排队,然后伪证一下,只要把到那个结点的所有距离都求出来,然后把它们变得两两不同就好了。然后过了那条边之后,两两不会有干扰,只要把每个点的距离算一算然后两两匹配一下就好了

T12 扫描线,然后用线段树处理,上边界+1下边界-1,然后ans是线段树根的max值的max。上下边界的规定可以再读入的时候找到最左边一个点,然后一条一条扫过去继续用线段树,然后就没有辣!

T13 写了一个。。然后耒阳上面A掉了。。目测main上面大量的数据运算很慢?莫名T掉了。。不过算法时间复杂度应该靠谱。。然后加了个卡时A掉了。。自己骗骗了蛤蛤。。

T14 写了个dp。。时间复杂度O(n*质数个数),大概是1000W。这种做法可以无视数据组数。考虑题意就是让你把n划分成一些数然后他们的lcm最大。考虑一定是划分成 p[i]^k[i]的形式,然后取个log跑个背包,但是这样数组要开不下,所以考虑可以删去很多无用状态,然后就没有辣。

 

由于题答题没有中文题面导致弃坑~将来有空再补吧

目前我的代码 http://yunpan.cn/cVYhbu68HdKzu (提取码:da6f)

Avatar_small
我是蒟蒻 说:
2015年4月08日 21:16

太强了膜膜膜
跪进队爷跪跪跪


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter
Host by is-Programmer.com | Power by Chito 1.3.3 beta | © 2007 LinuxGem | Design by Matthew "Agent Spork" McGee