自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

LIN452

努力努力再努力 Since 150713

  • 博客(11)
  • 收藏
  • 关注

原创 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

原创 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 841

原创 USACO2011Open Silver Unlocking Blocks 题解

搜索搜索搜索!     每次把一块积木移动一步,而且每块积木内部的相对位置是不变的,那么每次只要记录积木任意一点的位置表示状态即可.为了方便,我们可以设为每个积木包围块的左上角的点.     如何实现?一种想法是暴搜!可惜T了…暴搜优化一下来个迭代加深,每次设定一个步数,可惜还是T了.由于问题为”最小步数” ,我开始想广搜.可是如何判重?积木位置可以随意移动,状态最多为(30*

2016-06-28 17:16:59 847

原创 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

原创 USACO2011Open Bronze 3lines 题解

[思路]符合 FJ的要求有两种情况:三条直线平行或者两条直线平行并与一条直线垂直.至于横竖的问题,可以通过反转奶牛的坐标转化成相同的方式.三条平行直线:把所有点的横坐标记录下来,如果不同的横坐标个数小于等于3,那么符合条件.两条平行与一条直线垂直:把所有的纵坐标和它们个数记下,也记下所有出现的纵坐标个数,再按照横坐标排序,再枚举一个横坐标a,表示这条

2016-06-28 17:01:22 1128

原创 CodeForces 160D Edges in MST 题解

[题意]      给出一个n个点m条边的无向连通图,判断图中每条边是否一定在最小生成树上.     n,m[思路]由于最小生成树的性质,我们造出任意一棵最小生成树,并记录下与最小生成树权值相等的所有边.暴力版:沿着非树边x的两个端点走到它们的lca,在环上去找与x权值相同的边,如果找到,说明被替换的边和x都不一定在最小生成树上.暴力做法优化版:这里又有一个结论

2016-06-28 07:13:04 619

原创 CodeForces 444C DZY Loves Colors题解

[题意]     有n个气球,每个气球有一个颜色x,改变为y后,美丽值增加|x-y|.     对一个序列有两种操作:1.    把区间在[L,R]的颜色染成x.2.   询问区间[L,R]的气球的美丽值总和.n[思路]     区间更新,区间询问可以联想到线段树.     只是更新的时候有点复杂:     因为一个区间内的颜色不一定相同,无法一次性全部更新,那

2016-06-27 22:40:45 812

原创 CodeForces 444B DZY Loves FFT 题解

[题意]     给出一个的1~n的排列A,和一个长度为n,只有0,1的序列B,求序列C:Ci=max(aj,bi-j)(i     数据保证是随机构造的.[思路]这题坑啊.不怕难题,就怕水题ToT     因为数据是随机的,所以可以乱搞(什么鬼啊).     //信息量还这么少!范围怎么大!不瞎搞怎么过!(@#*&….)     从大到小枚举50(或者更少)个

2016-06-27 22:33:07 927

转载 dfs序的常见用法整理

dfs序就是一棵树在dfs遍历时组成的节点序列.它有这样一个特点:一棵子树的dfs序是一个区间.下面是dfs序的基本代码:void dfs(int x,int pre,int d){//L,R表示一个子树的范围 L[x]=++tot; dep[x]=d; for(int i=0;i<e[x].size();i++){ int y=e[x][i];

2016-06-27 21:32:06 4804

原创 毯子 题解(COCI 2008-2009Final C)

[题意]N 块矩形毯子铺在地上。0秒时(0,0)处有一桶油倒了,然后开始流呀流,每秒往八个方向扩散一个单位。注意,这里的坐标描述一个单元格,不表示点。M个询问,每次问一个时间点被油染到的毯子面积(若有毯子重叠,面积也要累加,如一个单位格被三个毯子覆盖,那么被油染到之后就算3个单位面积)。[思路]50分:暴力!n*m枚举每个询问时每块毯子被染到的范围.直接把顶点算出.100分:

2016-06-26 15:53:13 895

原创 维修道路 题解

[题意]一棵n个节点的树,求两条路径s1,s2最大的长度积,满足s1,s2都是两点之间的最短路径,而且两条路径不含任何公共点.n[思路]     O(n^2):         枚举树上的每条边,把此边从树上移除,那么原来的树就变成了两棵子树:所求的两条路径分别在两棵子树中.那么为了满足题意中的最大长度积,分别求出两棵子树的直径即可.     O(n):

2016-06-26 15:45:20 574

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除