usaco5.1

5.1.1 fence milk cow

 计算集合,求凸包,开始用usaco官方章头给的算法,一个个添加点,计算角度,到最后一个点再向2头拓展判断,把我这种方向感弱的人搞晕了......后来跳出这个算法,直接造个链表,然后判段当前节点的下一个节点是左转还是右转,再加各种出栈进栈,虽然貌似复杂点,但只要考虑一个方向,我终于解脱了。

 

5.1.2 starry night

 (勾起无限童年的回忆......usaco5.1

  floodfill找出形状,用队列中的节点存的每个点的坐标来造一个字符串当hash用(这题数据不大这么做够了),注意好旋转和反射的操作,再加上无尽夜的调试,俺过了- -。

 

5.1.3 theme

 本来以为要用KMP之类的字符串匹配算法,后来发现DP可以水过。

 定义f[i]为检查到第i个音符时的主题长度,f[i]默认为f[i-1],如果f[i]=f[i-1]+1;那么肯定是因为第i个音符的加入使主题变长了,所以每次只要在末尾搜索长度为f[i-1]+1的字符串是否重复就好了,值得注意的是,题目要求重复的主题在序列中不能有公共部分......因为忽略掉了这个限制,我郁闷地调试了好久- -。

 

 关于5.1.3的延伸:

 细胞自动机

 一直以为作曲就已经很帅了,后来发现,算法作曲更帅,普林斯顿大学(貌似是这个学校)研究的算法作曲,得到了肖邦风格的音乐,而且连音乐教授都察觉不出来(以上松鼠会看到的,链接忘了- -||)。

 国外的java程序员利用细胞自动机不断演化的到了许多音乐片段,并且开发出了能构造乐句的软件......其实自己也不太清楚具体神马情况,得找个时间好好学习一下。

 资料链接:http://www.ibm.com/developerworks/cn/java/j-camusic/

 

本文使用Blog_Backup未注册版本导出,请到soft.pt42.com注册。

你可能感兴趣的:(USACO)