自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zzyzzy12

大数据搬砖狗...

  • 博客(32)
  • 资源 (1)
  • 收藏
  • 关注

原创 USACO Section 5.3 Window Area - 又一矩形覆盖问题

最重要的问题..如何确定这些矩形的重叠层次顺序...我通过给每个矩形一个权值来表示当前矩形的优先级..只有当这个矩形某区域上有重合部分的矩形优先级都比这个矩形低..这个区域才说是从正面可以看到的面积...而这个优先级的操作:       用maxn表示当前优先级的最大值...用minn表示当前优先级的最小值..maxn与minn的初始值都为0..       当输入一个矩形..按题目的要求

2012-01-31 23:43:05 1625

原创 USACO Section 5.3 Milk Measuring - DFSID+DP...

这道题要是不要写具体方案数就很普通的可重复背包了..对一个bool数组进行DP...从1做到Pnum..每次当k空间的k-P[i]为可得到时..k空间则可得到...每次扫描空间从0到Q.最后当Q为true..这些物品各种可重复的组合说能得到Q... 但要求具体的方案数就eggache了..开始我想用一个当在做重复背包的时候跟着判断并传递...每个空间不为bool...而是一个struct..包

2012-01-31 02:21:57 1042

原创 USACO Section 5.2 Wisconsin Squares - 按要求DFS就行了..

这题真搞~就一组数据....囧~~~       按他的要求枚举搜索就ok了..当然要输出字典序最小的解~~~那就按字典序来搜索..除了最开始是确定D..后面的都是先确定较小的A,B,C,D,E..再确定较小的Y..再确定较小的X...如此搜出的第一个解就是字典序最小的答案...       开始还想着Hash...结果写完了样例过了...一交就A了...似乎这题不需要Hash..

2012-01-29 12:58:13 833

原创 POJ 1519 - 水题找手感...

USACO又卡住了...好纠结~~~这题纯水题了..题目意思是说给一个数..每位相加得到一个数..若这个数只有一位..那么就是答案...否则就要对得到的新数继续做这个操作..开始就这么写模拟..结果WA了..看discuss..晕倒..最大有2000位的数..题目中又没有哪里说清楚...好吧..最多2000位..假设每位都是9..那么第二次后最长的用int也存得下..所以就是最开始读进来用字符

2012-01-29 02:18:10 1157

原创 USACO Section 5.2 Electric Fences - 有意思的枚举+计算几何

这题一上来首先想到的是能否用数学方法来求得这个点..比如说画一个半径最小的圆使其与所有线段相交或相切…那么圆心就是所求..想法似乎没问题..但怎么来求是毫无头绪~想了良久也没想出用数学的方法如何实现…      还是用枚举了…题目范围不大..并且精度要求不高..将整个( 0 , 0 ) ~ ( 100 ,100 ) 的连续空间离散分成1000个每个相距0.1的点..枚举每个点..定能找到答案.

2012-01-28 12:33:52 1348

原创 USACO Section 5.2 Snail Trail - 很水的枚举..

就按题目要求枚举出所有情况吧~~~就是从1,1开始DFS...值得注意的是其实一条路径结束的条件除了碰到自己~~还有就是被边境或#给夹得没地方去~~我就因为少考虑了这个WA了一次....Program:/* ID: zzyzzy12 LANG: C++ TASK: snail*/ #include #include #include

2012-01-26 23:43:15 841

原创 USACO Section 5.1 Musical Themes - 题目转换以及KMP..

先写了一个N^3的裸搜试了试~~结果还过了12个点~~囧...然后就想起优化...主要思想是要利用前面已经搜索过的..尽量减少重复的判断搜索...根据这些特征自然而然的想到了KMP...但由于题目中是要求两列每位对应差相等而不是说两列完全相等...所以写了一晚上搞得十分蛋疼..还是搞不出来...     再看了下样例..发现题目可以转化!!! 其实差了一个自然数的两列..若写成相邻前后之差的形

2012-01-26 04:07:32 920

原创 USACO Section 5.1 Starry Night - 有点麻烦写的题..

这道题应该一看~~基本思路就出来~~从左上角扫到右下角~~扫一个没更新过的连通块...就先与前面已经确定的比较...并且是翻成八种情况都来比较...若有符合的~~那么就确定这个连通块是前面哪个相同的...若无一符合~~就计数器++..发现新的连通块~~~但仔细想想...会好麻烦的感觉..     我是这么处理的 :       1.记录前面的连通块..我就是记录了连通块上的某点坐标..因为

2012-01-24 23:06:32 832

原创 USACO Section 5.1 Fencing the Cows - 凸包模板题~~

USACO本节开头的TXT将得就是凸包的求法~~     题目的原意是给出N个点...问最少要用多长的栅栏才能将所有点都围起来..     求出平面中这些点的凸包...凸包的周长就是解..很好想到的..     我是用Graham写的...好久没写凸包了...很不熟练...调了一晚上才出来...再次总结一下Graham求凸包的顺序:     1 . 找出最左下方的点...并将其挪到

2012-01-23 23:52:03 1148

原创 USACO Section 4.4 Shuttle Puzzle - Hash都不用的DFS水题..

龙年第一题~~~这题开始以为搜索会超时~~要用构造才行~~我这找了好久规律~~也没找出构造的方法~~~就写搜索了...     搜索的时候要注意方法和顺序...显然的是W只能往右移..B只能往左移~~否则不可能得到最小步数的解~~然后也能想到的其实只要每次都保证了W右移,B左移~~最小总步数一开始就是确定的...而如果在移的时候先尝试WB_ -> _BW...再尝试W_ -> _W 再尝试_B

2012-01-23 12:53:20 1388 3

原创 USACO Section 4.4 Pollutant Control - 找更优的搜索枚举方案~

首先最原始的方法就是不断地枚举要去掉的边~~直到从1出发到不了N...中间可以用个优化...若所去掉的边代价和大于前面找到的解..那么就剪掉...开始我确实这么写了..前几个没错..但效率很捉急啊....    再在这个方向想...因为每次去掉一条边后..都要从起点开始进行此搜索..能到达终点才继续往下搜..何不把这个搜索过程利用起来...于是我就把每次搜索找到的路径记录下来...而去掉的边总

2012-01-22 15:21:07 1060

原创 USACO Section 4.4 Frame Up - DFS即可~

无敌大水题一道...只可惜我太粗心了送了3次WA和1次爆数组才给过...囧..开始题目看错了...题目是要求出所有的涂色方案...并且按字典序输出..一种方案输出一行~~    数据范围很小阿..整个图也就30*30...所出现的也就A-Z的26个大写字母..而且还没有重复...为了方便搜索..我在开始就记录好了A-Z矩形方框的X,Y最大值和最小值~~也就是定位好了每个框框...然后就一个个枚

2012-01-20 23:36:12 1220

原创 USACO Section 4.3 Street Race - 简单搜索

50个点...100条边....数据量很小...第一问就直接枚举去掉每个点看能否到达终点~~~N次BFS就ok了...    第二问~~首先第二问的点肯定是第一问的点的子集~~这个应该好想到..然后就按他的描述...枚举第一问得到的点..从起点开始BFS到枚举的这个点记录能到达的点..从枚举的这个点开始BFS到终点并记录所能到达的点...若两者标记的点中没有重复则说明这个第一问的点同时满足第二

2012-01-20 19:35:31 774

原创 USACO Section 4.3 Letter Game - 简单枚举

本来是1A的...就因为不知怎么USACO不认识gets..给报了次Compile error...这题算是简单的...     首先我为了方便判断一个字符串是不是由所给的字符组成(不一定全部用上)..那么用一个26位的int数组h [ ] 先记录所给的字符个数...如aabb那么h [ ] = { 2,2,0,0....0 }..假设这里来一个字符串...那么就把 h [ ] 的信息先转移给

2012-01-19 10:16:24 1042

原创 USACO Section 4.3 Buy Low, Buy Lower - DP+大数加法

这题的本体就是经典的最长非降子序列...第一问就是O(n^2)的最长降序列了...    而第二问则有技巧..首先明确的是要得到方案数..那么在dp更新最长长度时方案数要跟着传递更新..如果没有题目中所给的位置不同但序列每个数相等的序列只能算一个序列的条件...那么更新方案数是当dp更新长度时如果能更新得更长,那么就将方案数直接赋值过来..若相等则相加..    但是题目中又给出了这个条件

2012-01-18 12:16:55 883

原创 USACO Section 4.3 The Primes - 好恶心的搜索

看题目名字是质数..以为是水题...读完题目更觉得是水题..范围这么小..先打个质数表不就秒了么~~结果...纠结了一下午一晚上..写了150行代码终于整出来了...确实这题就是搜索..但要讲究策略.    1.先打表是必须的..注意的是这个表打得是既是素数且每位相加又是所要求的数的5位数..并且了为避免重复计算..在这里就可以把每个符合要求的数给拆分好记录...    2.我这里不论是确

2012-01-17 22:31:10 1250

原创 USACO Section 4.2 Cowcycles - 枚举~

开始想复杂了...纠结了很久..后来发现数据范围很小阿...枚举所有情况也就那么多...所以就两层递归暴力枚举..结果就过了....话说这题主要还是题意要理解清楚...这里的mean和variance中的Xi..是指排好序的F[i]/R[i]的前后相差的数...其实样例下面的说明也体现了...Program:/* ID: zzyzzy12 LANG: C++ TASK:

2012-01-17 00:33:37 940

原创 POJ 1363 - 模拟栈操作的水题..

USACO又卡住了T_T...好郁闷...找了到水题来娱乐娱乐..    这题就是说输入的顺序是1~N..然后有一个栈可以用..问能否得到所给的输出顺序...直接模拟栈的操作..从1开始做到N为止..每来一个数先放入栈顶..如果栈顶的数等于当前输出队列的指针位置的数(这个指针初始位置为1)..那么弹栈并且移动输出队列的指针(往后移一位,既++)直到输出队列指针位置的数与栈顶的数不相等~~1~N

2012-01-15 23:52:10 3305

原创 USACO Section 4.2 Job Processing - 贪心

首先看第一问...因为每个机器是独立工作的...那若要时间最小..每个机器在使用过程中是不会休息的..也就是做完了上一个马上做下一个..直到不用这个机器为止..那么显然最大时间就是使用时间最长的机器..为了得到这个结果..用一个数组记录当前每个机器使用到了哪个时间...从第1个工件开始做到第N个..做的时候贪心判断..这个工件放在哪个A机器做能使所有机器中的最大使用时间最小...找到了后就将工件放

2012-01-15 12:27:02 1272

原创 USACO Section 4.2 The Perfect Stall - 网络流求最大二分图匹配..

用网络流求二分图匹配的方法在算法导论上就看到过了..只是一直没去实现..确实用网络流来解二分图匹配有点大材小用了..一般的求最大匹配用匈牙利算法轻轻松松一分钟啊..但是网络流的解法虽然写起来多..但思想也是很简单的...对二分图左边加一个超级源点...超级源点对左边所有点做一条容量为1的边..右边给个超级汇点..右边所有点对超级汇点做一条容量为1的边..而左边所有点的点按照所给的关系对右边做边..

2012-01-13 21:58:14 1514

原创 USACO Section 4.2 Drainage Ditches - 复习网络流

回顾了下网络流~~本题就是赤果果的最大流~~~话说开始写裸的爆搜增广路超时了~~用了dinic才过的~~庆幸过了好几个月了还能马上把最大流写出来~~Program:/* ID: zzyzzy12 LANG: C++ TASK: ditch*/ #include #include #include #include

2012-01-13 17:53:48 753

原创 USACO Section 4.1 Fence Rails - 用DFSID解多维背包..

这题自己想了两天~~~各种超时...还是只能去拜读好些多大牛的文章..才搞定这题..这题真的很好很典型很经典阿..用到的主体思想是DFSID..为辅的是二分答案~~   所谓DFSID既是迭代加深搜索...名字挺玄乎~~实质上就是先确定一个搜索的层数..然后用DFS搜完整棵树..如果没找到解..那么层数再放深一些..再次DFS搜整棵树..直道搜出解为止..很类似BFS了..但是是用DFS来实现

2012-01-12 22:19:39 1074

原创 USACO Section 4.1 Cryptcowgraphy - BT的DFS剪枝..

开始做的时候就想到是搜索...写完了样例就跑过了..然后提交就超时..后来再一想..裸搜时间复杂度高得惊人阿..做了几个优化..还是N久跑不出结果...我以为搜索是搜不过的...就想用其他方法来解决..但纠结了很久也没有个明确方向..   写了一天..实在是没辙了..就去网上搜了下解题报告..发现其实是搜索~~关键还是在于剪枝~~~我原来的搜索剪枝真是弱爆了..          1.C.

2012-01-10 12:33:26 1069

原创 POJ - 1256 再次熟悉next_permutation

USACO持续进不去中..好久没去POJ了~~就去随便抓了一个水题...这道题主要是又回顾了下next_permutation..原来next_permutation里可以加自写的cmp~~~Program:#include#includeusing namespace std;int t,l;char s[20];bool cmp(char a,char b){

2012-01-10 12:24:27 960

原创 USACO Section 4.1 Fence Loops - 简单深搜~

就因为一个变量打错了~~~检查了一个多小时~~~囧..     这题很简单的说...数据范围很小...枚举每个点..从每个点开始DFS..回到自己了就比较一下路径长度和所记录的答案并选择较小的保存....     这题不好处理的地方就是确定点吧...我没有将点单独提出来..还是放在线段上...用0,1分别代表两端~~在DFS遍历时通过比较来确定这个点时到了那个线段的哪个端点~~

2012-01-08 13:52:12 827

原创 USACO Section 4.1 Beef McNuggets - 描述真吓人~

坑爹的描述说最大可能到2*10^9....我开始推的时候就推出最大只会到65535...还犹豫了好久~~结果用这个算法就过了~~最大的也就是65535...数据范围真心好吓人阿...     这道题很简单的说...首先看要输出0的情况...          1.没有得不到的数...那显然只有最小的盒子为1才行..特判就行了..          2.得不到的数是无穷的.恰恰是这个地方

2012-01-07 22:20:09 1033

原创 USACO Section 3.4 Closed Fences - 暴力枚举..

好恶心的题...断断续续作了三天才做出来...想吐了...试了N多方法..重写了N遍代码...终于让我给过了..     第一问很好做...只要判断下有没有两直线相交就行了..做两次差乘判断...     第二问我AC的思路是将每个线段给暴力离散化..离散为500个点..然后将每个点与视野点(x,y)做线段...若是有一个点做成的线段中间没有被其他线段所截断..那么就可判定所离散的线段是能

2012-01-07 17:20:35 754

原创 USACO Section 3.4 Raucous Rockers - 一道不错的DP

今天第二个1A的...~~~状态红上的说....这道题很典型的DP...而DP关键就是构造唯一的状态...我是用dp[i][j]表示用到了第i个唱片..并且第i个唱片用了j分钟...找到唯一状态..转移啥的就很简单了...我有个处理..就是用dp[i][0]表示用i-1个唱片最多能存下的歌曲数~~~Program:/* ID: zzyzzy12 LANG: C++ TA

2012-01-04 22:59:01 1176

原创 USACO Section 3.4 Electric Fence - Pick定理

以前写过类似的...用的是一个pick定理...           pick定理:                  A=b/2+i-1 -> i=(A*2-b+2)/2                 A : 面积                 b : 边上的点                  i : 内部的点                  其中一条边上的点:

2012-01-04 13:25:10 1102

原创 USACO Section 3.4 American Heritage - 知道前序遍历与中序遍历求后序遍历

这道题主要就是要抓住前序遍历和中序遍历的特点...前序便利是(自己,左孩子,右孩子)..中序便利是(左孩子,自己,右孩子)...而要求的后序遍历是(左孩子,右孩子,自己)..    若是在中序遍历从左到右的顺序中..先跳过中间的自己...后面某个位置再把自己计回来..那应该能得到后序遍历...而在前序遍历中一个点的孩子肯定在其右边...所以两者结合起来一起直接就推出后序遍历..     这

2012-01-04 12:35:53 898

原创 USACO Section 3.3 A Game - DP而已~

这道题算是USACO3.3里最水的一道了~~~1A啊~~思维也很简单~~从长度为1的一直推到长度为n的...   要更新长度为k的(l,r)的两人分数..首先看当前状态时谁来取..这里就和总个数做个差看下奇偶就可以了...具体更新到什么值就看(l+1,r)+data[l]与(l,r-1)+data[r]哪个更优~~   注意的是在更新时~~当前长度没更新的那个人的分数也要跟着传递~~P

2012-01-04 10:32:57 805

原创 USACO Section 3.3 Home on the Range - 优化的BFS..

USACO 的数据也有很弱的阿..开始我的程序有个地方完全错了居然过了3个点...   我的思维:    首先很容易想到如果我能知道(x,y)为左上角边长为 t 的正方形满足条件(全为1)....那么我只要再扫下最右边的t+1个和最下面的t+1个就能知道(x,y)为左上角边长为 t +1的正方形是否还是满足全是1的要求..如果我能知道(x,y)为左上角边长为 t 的的正方形不满足条件(不全

2012-01-03 22:34:09 674

dd_eng神牛谈SAP

dd_eng神牛谈SAP...感觉很精辟啊...适合初学者了解SAP算法...

2011-08-21

空空如也

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

TA关注的人

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