USACO
文章平均质量分 76
LIN452
(*╹▽╹*)
展开
-
USACO2011Open Silver Running Laps题解
//请忽略我把牛看作羊....由题意,我们可以得到 t*vi-t*vj=kC.那么i,j相遇的次数就是最大的k(整数).为了得到最大的k就要使t最大,而tmax=L*C/vmax.那么 把式子整理得到: k=L*(vi-vj)/vmax.(向下取整) 对于第i只,它和速度比它小的每一只羊相遇的次数都能确定,常见的思路就是运用前缀和把式子累加,但由于k是每两只羊之原创 2016-06-28 17:07:58 · 729 阅读 · 0 评论 -
USACO2011Open Bronze 3lines 题解
[思路]符合 FJ的要求有两种情况:三条直线平行或者两条直线平行并与一条直线垂直.至于横竖的问题,可以通过反转奶牛的坐标转化成相同的方式.三条平行直线:把所有点的横坐标记录下来,如果不同的横坐标个数小于等于3,那么符合条件.两条平行与一条直线垂直:把所有的纵坐标和它们个数记下,也记下所有出现的纵坐标个数,再按照横坐标排序,再枚举一个横坐标a,表示这条原创 2016-06-28 17:01:22 · 1123 阅读 · 0 评论 -
USACO2011Open Silver Unlocking Blocks 题解
搜索搜索搜索! 每次把一块积木移动一步,而且每块积木内部的相对位置是不变的,那么每次只要记录积木任意一点的位置表示状态即可.为了方便,我们可以设为每个积木包围块的左上角的点. 如何实现?一种想法是暴搜!可惜T了…暴搜优化一下来个迭代加深,每次设定一个步数,可惜还是T了.由于问题为”最小步数” ,我开始想广搜.可是如何判重?积木位置可以随意移动,状态最多为(30*原创 2016-06-28 17:16:59 · 846 阅读 · 0 评论 -
USACO2011Open Gold Bookshelf 题解
可以把题目理解为在n本书中”切几刀”. 当n2)可以解决: dp[i]表示在前i本书,第i本书为当前书架的最后一本书的最小高度.dp[i]=min{dp[j]+mx[j+1,i]}且sum[j+1,i] 当n通过dp[i]=min{dp[j]+mx[j+1,i]},当mx[j+1,i]为h[i]时,j越小越优.假设在i前面,第一本比i高的书下标为x,如原创 2016-06-28 17:48:19 · 839 阅读 · 0 评论 -
USACO2011Open Gold Balanced Cow Subsets
N的范围很小,可以联想到枚举子集和状压.但是如果直接枚举两个子集,显然是不够的.那么我们可以联想到折半枚举!Meet inthe Middle! 把n个数分成两部分A,B集合,答案子集的来源有以下几种:1. A集合的子集.2. B集合的子集.3. 一部分是A的子集,一部分是B的子集.对于1,2两种情况都可以直接预处理出:枚举A的子集x,再枚举x的子集y,原创 2016-06-28 17:52:41 · 1027 阅读 · 0 评论