自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(114)
  • 收藏
  • 关注

原创 NOI 2014 题解

起床困难综合症 魔法森林 动物园 随机数生成器 购票

2015-06-03 15:02:47 723

原创 NOI 2013 题解

树的计数 向量内积 矩阵游戏 书法家 快餐店

2015-06-02 16:51:07 1046

原创 NOI 2012 题解

随机数生成器 川藏骑行 魔幻棋盘 美食节 迷失游乐园

2015-06-02 11:36:39 636

原创 NOI 2011 题解

兔农 智能车比赛 阿狸的打字机 道路修建 NOI嘉年华 兔兔与蛋蛋

2015-06-02 09:51:50 609

原创 NOI 2010 题解

能量采集 超级钢琴 海拔 航空管制 旅行路线

2015-06-01 16:12:21 790

原创 NOI 2009 题解

变换序列 诗人小G 二叉查找树 植物大战僵尸 管道取珠

2015-06-01 15:09:22 546

原创 NOI 2008 题解

假面舞会 设计路线 志愿者招募 奥运物流 糖果雨

2015-06-01 11:08:44 643

原创 NOI 2007 题解

社交网络(传送门)题意一个加权无向图,每两个点的关系密切度用两点间最短路长度来衡量。因此,每个点的重要程度是经过这个点的最短路径的条数,求每个点的关系密切程度。分析由于点比较少,所以可以用复杂度为O(n^3)的Floyd来计算两点之间的最短路。path[i][j]为从i到j的最短路径的条数,Floyd松弛时,更新path[i][j]=0,遇到dist[i][k]+dis

2015-06-01 08:49:54 513

原创 NOI 2006 题解

网络收费 千年虫 最大获利 神奇的口袋

2015-06-01 08:31:48 824

原创 NOI 2005 题解

维修数列 瑰丽华尔兹 智慧珠游戏 月下柠檬树 聪聪与可可

2015-05-29 14:31:19 552

原创 NOI 2004 题解

郁闷的出纳员 曼哈顿 降雨量 小H的小屋

2015-05-29 11:32:30 680

原创 NOI 2003 题解

木棒游戏 文本编辑器 数据生成器 智破连环阵

2015-05-29 10:42:18 974

原创 NOI 2002 题解

贪吃的九头龙 银河英雄传说 荒岛野人 机器人M号

2015-05-29 08:52:18 1027

原创 HDU 5117 Fluorescent(2014 ACM/ICPC 北京赛区现场赛)

Fluorescent(标题为传送门)Time Limit : 3000MS    Memory Limit : 500MBProblem DescriptionMatt, a famous adventurer who once defeated a pack of dire wolves alone, found a lost court. Matt finds that

2015-04-11 08:49:57 510 1

原创 BZOJ 1698 (USACO 2007 Feb)Liypad Pond (黄金)荷叶池塘

1698: [Usaco2007 Feb]Lilypad Pond 荷叶池塘Time Limit: 5 Sec  Memory Limit: 64 MBDescription为了便于牛们欣赏和锻炼,农夫JOHN在他的农场上新添加了一个美丽的池塘。 JOHN的池塘是一个长方形,他已经把它划分成了M行N列的小正方行 (1 <= M <= 30; 1 <= N <= 30). 某些正方行

2015-04-02 10:58:10 815

原创 Tree Dp专题整理

Tree Dp介绍及做题大体思路tree dp即树形dp,就是在树形结构上的动态规划,找寻最有解。做树形DP一般步骤是:1. 建树,并将树转换为有根树2. 对于部分题目,需要在树上进行dfs_cal操作,预处理出一些需要的东西,比如距离什么的从子节点。3. 继续在树上进行dfs,从子树中返回信息层层往上更新至根节点。返回信息是tree dp的关键,即状态转移,因为每道题目要求做

2015-03-27 08:57:40 489

原创 USACO6.5.5 Checker Challenge( checker)

USACO最后一题,八皇后的类似问题,dfs加优化就可以轻松过了/*ID:xsy97051TASK:checkerLANG:C++*/#include #include int n, aim, ans;int a[20]; void dfs(int row, int ld, int rd, int i){ int p, pos; if(row!

2015-02-06 19:51:17 346

原创 USACO6.5.4 The Clocks(clocks)

模拟题,真是醉了USACO倒数第二题这么水直接看代码吧/*ID: xsy97051LANG: C++TASK: clocks*/#include#include#includeusing namespace std;int clocks[10],a[10],ans[10],times[10];void pan(){ for(int i=1;i<10;i++

2015-02-06 19:44:32 324

原创 USACO6.5.3 Betsy's Tour(betsy)

数据范围很小,不用写插头dp,dfs加上强力一些的剪枝就可以ac了,具体都写到代码里了/*ID:xsy97051LANG:C++TASK:betsy*///数据小,不用插头dp,各种强力剪枝就ok #include #include #include #include using namespace std; bool map[9][9];int pos[

2015-02-06 19:41:06 576

原创 USACO6.5.2 Closed Fences(fence4)

思路简单,难写,耐性子写吧/*ID:xsy97051LANG:C++TASK:fence4*/#include #include #include #include #include using namespace std;#define INF 1e200#define EP 1e-10#define MAXV 300#define PI 3.1

2015-02-06 19:36:23 389

原创 USACO6.5.1 All Latin Squares(latin)

搜索就好了吧,正解是置换群的优化剪枝,只对于最后一个点用得着,所以渣渣就自己给 n=7 打了个表置换群http://baike.baidu.com/link?url=3O0MeCCYhjxS4525-CTNAAf-lR4gmfeTKh6kdt4cNOgF18tNxo1183jjRZJuHHJJ7FAfvfqiQrNiWVdlhUOxA_大神置换群优化代码http://www.cpp

2015-02-06 19:20:32 440

原创 USACO6.4.3 Wisconsin Squares(wissqu)

按题目的要求搜索就好了,时限5s,基本用不着优化吧(但是奇怪的是只有一个测试点,并且0.54s就过了)既然要求字典序最小,除了第一位是d,后续的就是按字典序来枚举搜索咯/*ID: xsy97051PROG: wissquLANG: C++*/#include #include #include using namespace std;const int dx

2015-02-06 19:13:14 346

原创 USACO6.4.2 Electric Fences(fence3)

枚举题目范围不大,精度要求不高,将整个连续空间离散分成1000个每个相距0.1的点,枚举每个点,能找到答案,复杂度高,是可以优化的二分,每次枚举9个点 ( 正方形平均的9个点 ),找到最有点后再以这个点为九个点的中心点缩小步长再尝试9个点,直到枚举的两点间相差求出一个点到某线段的最短距离,要分两种情况:一是这个点做垂线会落到这个线段上,这种情况用差乘求出这个点与线段

2015-02-06 19:06:31 485

原创 USACO6.4.1 The Primes(prime3)

搜索题,但是好麻烦,各种的优化才涉险过了1.先打表是必须的:这个表是既是素数且每位相加又是所要求的数的5位数,并且为避免重复计算,可以把每个符合要求的数给拆分好记录2.确定行,列,对角线,直接确定一整行或者一整列或一整对角线,也就是直接是找个五位数全部添上去(因为已经有打好的有序的表),减少了无意义的搜索试探3.搜索顺序:最上一条—最左一条—两个对角线—第二行—枚举2,3,4,5列(为

2015-02-06 17:35:15 335

原创 USACO6.3.3 Cowcycles(cowcycle)

dfs,重点在优化上,需要注意的都写到代码里了/*ID:xsy97051LANG:C++PROG:cowcycle*/#include #include #include using namespace std;#define MAXF 10#define MAXR 20+2int ansF[MAXF];//答案Fint ansR[MAXR];//答案R

2015-02-05 21:07:41 346

原创 USACO6.3.2 Cryptcowgraph(cryptcow)

模拟,先找O再找C最后找W会快很多/* ID:10239512 PROG:cryptcow LANG:C++ */ #include #include #include #include using namespace std;#define HashSize 131071const string dest="Begin the Escape executi

2015-02-05 21:00:49 323

原创 USACO6.3.1 Fence Rails(fence8)

把原木和新木快排一遍,每次二分枚举可以切的木块数,再去验证。验证时,设枚举的木块数为k。由贪心思想可知,我们挑前k小的新木来切割一个特别关键的剪枝:统计切剩下的board(无法再切下rail)总和,这个值大于board总和减去rail总和,无解。这个代码里写有解释,应该是很清楚的/*ID:xsy97051LANG:C++PROG:fence8*/#incl

2015-02-05 20:52:10 331

原创 USACO6.2.3 Shaping Regions(rect1)

简单的矩形切割/*ID:xsy97051LANG:C++TASK:rect1*/#include #include #include #include using namespace std;int a,b,n,color[2505],cnt[2505],llx[2505],lly[2505],urx[2505],ury[2505];void qiege(int

2015-02-05 20:41:34 302

原创 USACO6.2.2 Packing Rectangles(packrec)

模拟/*ID: xsy97051LANG: C++TASK: packrec*/#include #include using namespace std;int total,MIN=32767,a[5][3],Ans[100][3],a1,a2,a3,a4,b1,b2,b3,b4;void Updata(int x,int y){ if(x*y>MIN)

2015-02-05 20:38:26 316

原创 USACO6.2.1 Calf Flac(calfflac)

先吐槽:USACO 6.2开始加的题居然有好多training上第一第二章的……这道题简单,注意的一点是,判断回文串时不考虑标点什么的但是最后答案要求输出的需要带标点不多说,上代码/* ID: xsy97051 LANG: C++ TASK: calfflac*/#include #include #include #include using nam

2015-02-05 20:25:02 377

原创 USACO6.1.3 Cow XOR(cowxor)

首先要知道若a^b=c,则有a,b,c两两异或得到第三个数num[ i ]记录前i个数字的异或值,所以,要求异或值最大的一段区间,即求num[ ]数组中两个数使之异或值最大用到的算法是trie树(利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希表高多了)注意:在保证区间异或值最大的同时,要求最靠前最短的一段/*ID:xsy97051LA

2015-02-05 20:11:46 346

原创 USACO6.1.2 A Rectangular Barn(rectbarn)

本题求最大子矩形,所以big barn的方法便不适用了,给出另一种方法:设h[ i ][ j ]为点(i,j)向上方扩展的最大高度,l[ i ][ j ]为( i , h[ i ][ j ] )这条线段向左边扩展的最长距离,r[ i ][ j ]为( i , h[ i ][ j ] ) 向右边扩展的最长距离则 S = h[ i ][ j ] × ( l[ i ][ j ] + r[ i

2015-02-05 19:57:44 365

原创 USACO6.1.1Postal Vans(vans)

插头dp(基于连通性状态压缩的动态规划)问题 什么是插头dp看陈丹琪的论文,她的写法也是目前为止的标准写法吧http://wenku.baidu.com/link?url=VGHZwf6zGOFGKRN8DCKHPi6BJApgXYBsnk2CDXByfOYmwxToQoOJWi64MgEf1v5qWRuounu4y8xT_T_UuJb-XuYvjEgAzjRhaUK6HPO6szK对

2015-02-05 19:36:18 512

原创 USACO5.5.3 (twofive)

矩阵转编号:如矩阵ACEGI......只需求出以AB、ACD、ACEF、ACEFH......开头的矩阵的数目之和再加1即可。编号转矩阵:顺次枚举每一位,若当前方案开头的矩阵数目小于n则减去,否则即可确定当前位。记忆化搜索,求以固定串开头的矩阵数目。令f[a][b][c][d][e]表示各行分别放入了a,b,c,d,e个字符的方案数。则合法

2015-02-05 18:15:17 377

原创 USACO5.5.2 Hidden Password(hidden)

最小表示法,可以看下面这个链接http://blog.csdn.net/cclsoft/article/details/5467743设指针 i , j 分别向后滑动 k 个位置后比较失败(k>=0)。假设s[i+k]≠s[j+k],讨论 s[i+k]>s[j+k]:因为s[i+x]与s[j+x](0现在已经在 i+k 位置处与 j+k 不相等且 s[i+k] > s[j+

2015-02-05 18:05:16 298

原创 USACO5.5.1 Picture(picture)

先处理所有的横线,横边记录一个pos值,每个矩形有两条横边,下面的pos记为1,上面的pos记为-1。将所有横边按y坐标由小到大排序,枚举,横坐标上的每个点记录一个值layer。每遇到一条边i,对于边i上的每一个点x,layer[ x ] += i.pos 。如果layer[ j ]从0变为1,周长ans++,如果layer从1变为0,同样ans++。竖线同理,但要注意:矩形的顶点

2015-02-05 17:58:37 305

原创 USACO5.4.1 Canada Tour(tour)

这道题刚开始搜索加各种优化还是超时,题中所说的只能自西向东定向旅行,实际上取消了该题的后效性,可以用动态规划来做。把返回的路线反向,假定有两个人分别从起点到终点进行旅行,那么整条路线就变成了两条不相交的从起点到终点的路线。设dp[ i ][ j ]为假定的甲乙两人,甲走到第i个城市,乙走到第j个城市时,两人走过的城市数目的和。(初始时dp[1][1]=1)状态转移方程:dp[ j

2015-02-04 19:50:02 330

原创 USACO5.3.4 Big Barn(bigbrn)

简单的dp题dp[ i ][ j ]表示点(i,j)为左上角点的最大的正方形的边长很明显,如果一个点(i,j没有树,)状态转移方程为:dp[ i ][ j ] = MIN{ dp[ i+1 ][ j ] , dp[ i ][ j + 1 ] ,dp[ i+1 ][ j+1 ]  }  +1 最后扫描dp[ ][ ]数组,最大的即为答案/*ID: xsy97051

2015-02-04 19:41:01 302

原创 USACO5.3.3 Network of Schools(schlnet)

强连通分量,可以去下面这个链接看一下Tarjan算法https://www.byvoid.com/blog/scc-tarjan/ 一个强连通分量里的点肯定能互相传输。所以先用Tarjan缩点,如果一个点没有入度,那么则说明其他所有点无论如何都到不了这个点,如果要将文件传给所有点,那么首先没有入度的点必须要直接发文件,再想除了这些点,其他的点肯定有入度了。那么当把所有没有入度的点给

2015-02-04 19:29:04 336

原创 USACO5.3.2 Window Area(window)

对于创建,置顶,置底,删除一个窗体 ,很简单就不赘述了。重点在最后一问输出面积百分比,即矩形切割的题目。所谓的矩形切割,矩形a与矩形b重叠,其中a在下面,b在上面,我们要知道a有多少面积可以被看见。其实就是用dfs的方法,在多个矩形重叠的情况下,一般先按重叠次序排一下序,然后从要询问的那个开始一次与他上面相邻的矩形比较,每次把不重叠的左边、右边、上边、下边一部分分别割成4个小矩形,然后每个小矩

2015-02-04 19:19:36 353

空空如也

空空如也

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

TA关注的人

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