一周学习总结5.3

来源:互联网 发布:淘宝上买的vr送资源 编辑:程序博客网 时间:2024/05/16 01:20

这周废了,说是100题之后休息一下,结果一睡不醒哦……

开始做USACO啦~

基本没学什么,随便做了几题。

 

USACO Your Ride Is Here:没啥可说的,只是用来熟悉一下IO。我很自作聪明的用了feof(),结果白白错了一次,囧啊……

 

USACO Greedy Gift Givers:没难度的题,模拟整个过程就好了。

 

USACO Friday the Thirteenth:从1900年1月1日开始的n年内,每个月的13日落在星期一,星期二......星期日的次数。暴力之,貌似没什么其他方法。想到学同余的时候求过2^2003天之后是星期几这样的问题……但每个13号之间的天数不同……否则应该可以简化很多。

 

USACO Broken Necklace:我只是很直接的想到了搜索,从每个点断开进行尝试。O(n^2)的方法。测试数据给的不变态,最大n才344。这个方法是可行的。确实DP是更好的方法,因为每次尝试只移动一位,以前的搜索结果对当前也是适用的,可以改进成O(n)。

 

POJ 3670 Eating Together:思路蛮简单吧,最长不下降子序列。但是数据给的比较多,TLE…可以根据3个数讨论状态。

 

USACO Milking Cows:暴力搜索。相当于给数轴上的一些区间,有交集的区间合并。最后问数轴上有区间覆盖的最长有多长,没有区间覆盖的最长有多长。一开始想到用链表实现,标识区间的端点。比如测试数据的3 300 1000 700 1200 1500 2100,最后链表就是300->1200    
->1500->2100。那么max(2*n+1-2*n)就是最长有区间,max(2*n+2-2*n+1)就是最长无区间。不过这样做太复杂了。鉴于1million的数据量。其实可以从最小值开始试到最大值。在区间内time_yes++,在区间外time_no++,交换区间时查看是否是最值。简单直观,代码也很短。唯一一个问题就是如果不交换区间那么就不会比较最值,所以试到最大值+1,使区间一定交换。    
 
USACO Transformations:无聊的题目。给两个矩阵,对前一个矩阵进行变形(给定变形方式),看经过那种变形可以变成后一个矩阵。依次试过去是唯一的选择。    
 
POJ 1017 Packets:装箱问题,贪心。6*6一箱,5*5一箱剩下装1*1,4*4一箱剩下装2*2和1*1……    
 
POJ 1047 Round and Round We Go:循环数。很SB的想到暴力法1到len一个个试过去。看discuss上说有性质的,n*(len+1)=9…9(len个9)。我比较讨厌数论这个东西。    

 

POJ 1056 IMMEDIATE DECODABILITY:无聊题,水。从第一个开始依次查找,看是不是后面元素的前缀。

原创粉丝点击