- 博客(34)
- 资源 (1)
- 收藏
- 关注
原创 USACO Section 2.3 Controlling Companies - 题意要理解清楚..
开始我对于第三条的理解是可以传递更新的..比如说A掌控B..B掌控C..而这时发现C可以掌控D..那么D的股权要加给A,B,C...但一个是不好写...再一个是时间效率差..交上去还WA了..还好USACO提供了数据...根据出错的数据..才发现题目的这个传递没有这种关系..就向前面的例子..只有C要加上D的股权... 这样就好写了..并且可以用队列来提高效率..因为只有更新过某点的值~
2011-11-30 19:57:53 1859
原创 USACO Section 2.3 Cow Pedigrees - DP状态还是很好找的.
这道题一看就是DP...状态的话用dp[n][k]表示n个点k层且符合题目描述的二叉树个数...那么在更新出dp[n][k]值时就枚举下两边的点数和层数情况..每次两边都是种数相乘..最后之和为dp[n][k]的值..这里能取个巧..就是存在大量的左右换一下是同种情况的数..那么可以枚举一边的个数~~再乘2...但这样也要注意在两边同为k-1层时会多计数..所以当两边都为k-1层的情况不能乘2..
2011-11-29 13:24:56 811
原创 USACO Section 2.3 Money Systems - 矮油.有Trick阿...
差不多是赤果果的多重背包~~将方案数跟着传递~结果我WA了3,4次才过!!!原因是 1. 虽然说N 2.尼玛最后的结果会可能>2^32阿!!!用long long !!Program:/* ID: zzyzzy12 LANG: C++ TASK: money*/ #include #include #include #i
2011-11-28 14:37:51 1132
原创 USACO Section 2.3 The Longest Prefix - 一点点DP思想
题目的意思是给出好一些单词...再给一个长串(多行的接成一行)..问由这些单词一个一个接着一个(可重复)最长能组成所给字符串的前缀... 有点01背包的思想...用一个bool数组来记录字符串的某个位置能否被拓展到..并且在更新拓展位置时同样也是以前面已经拓展的点来看后面(枚举所有的单词,看能拓展到后面那哪些点)..因为所给的单词最长也就10..所以总的来看这种方法效率还是可以接受了.
2011-11-28 13:55:49 1310
原创 USACO Section 2.3 Cow Pedigrees - 又是一个转化进制的枚举
数据量很小..最多N=9..那么最多就是填8个符号 ( + , - , 空格 )..状态总数最多为3^8=6561..表示可以接受...那么就枚举所有的符号位..为了方便枚举就用一个十进制数..每输入一个N就从3^N这个十进制数开始~~每次展开成N位的3进制数~~每一位九对应着式子的每个符号位... 对于“空格"这种情况...为了方便处理我开了一个双向链表,类似Dancing Link的思
2011-11-27 20:31:05 715
原创 NOIP2008 提高组 C - 传纸条
上周的队内练习学弟选了这题来做~~当时纠结了很久也没搞出来...一个纸条传下去很好做~~但是两个纸条我当时就是没想通如何来避免后效性.. 这道题的DP思想关键就是找到能表示出来的唯一状态...用一个三维数组就行了...因为纸条只能沿着斜线方向来传递..那么用dp [ k ] [ i ] [ j ] 表示从(1,1)出发的两个线路除起点没有公共点到达了第k号斜线的i与j能取得的最大值...只
2011-11-25 21:25:23 3494
原创 USACO Section 2.2 Preface Numbering - 题目只是自始自终没太懂..
题目真心没看懂...后来是看了翻译都没懂....最后看了别人的分析..说每位单独的看再组合就ok了...但我也没懂..但真的很乱了...好吧..我就按那个思路做了一次码农...Program:/* ID: zzyzzy12 LANG: C++ TASK: preface*/ #include #include #include #inc
2011-11-24 21:40:07 988
原创 USACO Section 2.2 Runaround Numbers - 又一个枚举的思想
题目说的这种数长度最多为9,每位都不重复..并且没有0..所以如果事先枚举所有这些数再判断的话需要枚举的个数是9!=362880...才30多W~~果断先枚举出可能的所有情况~~就按题目要求的判断下~~枚举的同时就能保证是有序的~~所以后来的查找输出就从1开始找到第一个大于输入的数就ok了...Program:/* ID: zzyzzy12 LANG: C++ TASK:
2011-11-23 22:24:38 698
原创 USACO Section 2.2 Party Lamps - 看清本质就简单!
这题乍一看吓一跳...范围挺大的...想了也有一个小时才想通...看清本质!! 总共就4个按钮...如果我1,2,3,4都按过一次了..再按一下1 or 2 or 3 or 4灯的情况不和只按了2,3,4 or 1,3,4 or 1,2,4 or 1,2,3一样吗?因为一个按钮按两次就相当于没按..那么实际上能出现的最多情况也就是C(1,4)+C(2,4)+C(3,4)+C(4,4)=
2011-11-21 22:44:47 1079
原创 USACO Section 2.2 Subset Sums - 01背包的思想
题目要求是给一个N..让你求把1..N分成两堆~~并且两堆和相等的方案数.. 如果1..N的和sum是奇数显然无论怎么分成两堆两堆都不可能相等..如果1..N的和sum是偶数..那么就可能存在分成两堆sum/2的情况出现... 对1..N做01背包..由于N最大就39..所以背包的空间最大也就是700多~~我是做到800...每次的转移就是s[i]+=s[i-k]..s[k]
2011-11-20 21:38:44 1043
原创 USACO Section 2.1 Hamming Codes - 题意相当坑爹..很无聊..
就算AC了我也弄不明白输入里的B到底是要干啥~~我的程序除了输入就没用上过~~还有题意里局的那个例子更是误导人...直接举个十进制的不好非要搞奇怪的数字表示方法..题目中又根本没关系... 回到题目中..其实意思就是说要找N个10进制数..使两两之间的二进制相异位数不小于D(如0与7分别用二进制是000..111 相差的是3)..并且使得这个N个数从第一数开始比较是最小的..(如找到0
2011-11-20 21:09:56 1179
原创 USACO Section 2.1 - Healthy Holsteins 二进制枚举
这道题写了很久~用了好多方法~~最开始想要先按长度再按从小到大输出~~就用BFS了~~结果给爆空间了~~后来想用多维背包~~结果不会搞~~最后才想到了其实数据量很小~~用BFS时我也不是超时而是爆空间~~其实每个物品就是选与不选两种状态~~分别用1,0表示再按顺序排成一个数就是一个二进制数!!并且这个二进制最多也就15位!!才几万!! 所以就从1开始枚举过去~~每次转化成二进制然后判断是
2011-11-18 18:02:41 1090
原创 POJ1164 + USACO Section 2.1 The Castle - 简单的DFS...
两个题是一个题~~只不过POJ的更弱些,只要找到房间数以及最大房间的面积就ok了... 首先是构造墙~~我是用个4位的bool数组来记录每个点的墙的情况...读入时就%2.再/2...就可以构造出来~~ 找房间数和最大房间直接DFS就可以了~~边遍历边标记~~每个点标记成所在的区域~~在递归的过程中很好实现~ 而找去掉一面墙以及去掉一面墙最大面积~~就按所要求的优先顺
2011-11-17 17:53:16 2928
原创 HDOJ 1005 - 上周新队员做的题~我也来水水~矩阵乘法的说..
其实这道题开始那个谁选的时候是用的找循环节的方法~~~反正是mod 7嘛~~并且每一项只与前两项有关~~所以最多最多7*7=49次就会进行循环了~~所以找到循环节再mod一下循环节长度对应找到就可以了~ 而我是用矩阵乘法来解决的~~反正这是一类问题~~用矩阵乘法解递推数列~~递推关系都给出来了~~那么就可以构造矩阵~~ 0 1 B A 当n2时~~
2011-11-17 12:40:06 1150
原创 USACO Section 2.1 Sorting A Three_Valued Sequence - 应该有更好的方法
题目的意思是有一列数只由1,2,3组成~~~需要咱们将1放在一起排在最前面~~~2放在一起排在中间~~~3放在一起放后面~~问对于这个数列最少要进行多少次交换... 我的方法是先统计1,2,3的个数~~那么就可以知道1,2,3分辨该放在哪个区域~~ 首先将1都放到该放的位置~~其所需步数就是找2~3的区域中1的个数~~然后再看1这个区域里有多少个2可以直接和2区域的交换~~有多
2011-11-16 10:56:27 879
原创 USACO Section 2.1 Ordered Fractions - 用GCD判合法的简单搜索
这道题的意思是输入一个N..求出用小于等于N的做分母...真分数能有那些..分子分母必须约分完全...并且按从小到大输出... 数据范围不大...直接搜就可以了~~搜的时候判断下GCD,,为1才表示是合法的..并且先都存起来~~最后排个序再输出就好了...Program:/* ID: zzyzzy12 LANG: C++ TASK: frac1*/ #incl
2011-11-15 18:49:38 760
原创 USACO Section 1.5 Checker Challenge - 普普通通的皇后问题~~
用三个bool数组分别记录每个纵向有无皇后~~以及左右两个45度的斜方向分别有无皇后~~两个斜的一个是x+y来确定唯一~~一个是x-y来确定唯一~~但x-y会小于0...就x-y+n.. 然后就直接搜罗~~只有f1[],f2[],f3[]都是false也就是对应的都没有皇后时才能放.... 很奇怪的问题是...开始我交上去WA了...但本地测错误的这组数据没有问题..和要求的一
2011-11-14 22:48:15 592
原创 USACO Section 1.5 Superprime Rib - 构造数列
这题直接来枚举再判断显然是效率很低的...我是采取构造的方法...首先将2,3,5,7入队列..然后每次从队头取出一个数..枚举再他后面加1~9后还是不是质数..是的话入队... 当然从队头每次取出一个数后...判断下其位数~~若是等于要求的长度就直接输出了..并且因为构造的时候就保证了其顺序...所以输出顺序也会是满足要求的...Program:/* ID: zzyzz
2011-11-14 22:12:02 678
原创 USACO Section 1.5 Prime Palindromes - 换个搜索顺序效率会提高不少
这题是要求a..b范围内既是回文数又是质数的数~~~开始我是先找用筛选法筛素数再来判断范围内的素数是否是回文~~在本题跑大数据就很慢~~10S左右~~交上去试试结果直接是爆空间...后来想了一下~~明显的在一个确定范围内素数的数量比回文数的数量多很多...并且回文数可以直接构造..如有一个数 [ 可以直接就构造一个[ ] 或者 [ ? ] ...就给的b最大到10的八次方..但构造回文时因为每次
2011-11-14 21:50:24 589
原创 USACO Section 1.5 Number Triangles - 最最简单最最经典的DP..
DP最最经典的入门题~~~好吧~~我只是在往后面刷而已~~这章开头是介绍的二进制的说~~不知咋地第一道题居然是个毫无关系的DP....Program:/* ID: zzyzzy12 LANG: C++ TASK: numtri*/ #include #include #include #include #include
2011-11-14 20:49:12 739
原创 USACO Section 1.4 Mother's Milk - 输出错了好几次..
就是不断搜索倒牛奶的过程..用一个三维数组来判重就可以了.... 恶心的输入或者是我不适应~~末尾多了空格报错...每个文件只有一组数据...输出一行后还必须打个\n....呃...Program:/* ID: zzyzzy12 LANG: C++ TASK: milk3 */ #include #include #include
2011-11-14 20:30:12 656
原创 USACO Section 1.4 ariprog - 需要加点点优化搜索题
题目的意思开始看了好久~~~其实看懂了还好写....先将bisquares数打个表出来...这里为了方便搜索..我是打了两个表...一个是打出1~200000中每个数是不是bisquares,是的话组成这个数的最大p会是多少...另一个表是依次存着在其最大p值不大于M的bisquares..... 搜索的时候先遍历打出的bisquares表枚举队首... 然后再遍历bisqua
2011-11-13 22:51:16 1101
原创 队内赛我出的一道题附标程、数据与解题报告
ZZY的宠物Time Limit: 1000MSDescription ZZY领养了一对刚刚出生的不知名小宠物..巨萌巨可爱!!...小宠物的生命为5个单位时间并且不会在中间出意外翘辫子(如:从0出生能活到5但活不到6)..小宠物经过2个单位时间成熟..刚刚成熟的一对小宠物能立即生育6只新的小宠物(如:从0出生的一对在2时成熟并进行第一次生育)...小宠物是很忠诚的..不会在中途
2011-11-13 04:07:44 3070
原创 USACO Section 1.4 clocks - 好恶心的搜索题
或许是我的处理问题...这题代码给敲了这么多...就是一个裸的BFS+Hash判重...判重就是把矩阵看成一个9位的四进制数... 开始我还想写A*...自以为是的用每个点的值到12的差之和来构造g(x)....结果就是搜不对..后来仔细一想...这题的g函数反正我是一下想不出....直接用BFS给水了..速度不太给力的说...应该能用A*的感觉~~Program:/* ID
2011-11-13 03:47:16 908
原创 USACO Section 1.4 packrec - 不是太好写的搜索水题
我也是开始题目看错了..以为是要着4个方块任意放置放出最小的矩阵...后来才发现也就6种情况...题目所给的那6个...输出也有点恶心..先输出最小面积..然后输出每个矩形的长宽..每个矩形输出的话先输出短边再输出长边...所有矩阵的顺序是先输出短边最短的..短边相等的输出长边较短的...依次..不重复输出矩阵... 我的方法是先枚举好4个矩阵(那个以90度或者原样对应着哪一个)...
2011-11-11 19:13:35 1057
原创 USACO Section 1.3 Calf Flac - 简单的字符串处理
继续切...这题就是求最长的回文串(忽略奇怪符号..只保留字母,并且不考虑大小写)...枚举中间点..以奇数和偶数的两种情况来搜就可以了...恶心的是有多行..并且多行之间也可以是回文...那就在读的时候将他们都存在一个字符串里..但是' \n ' 也要跟着一起存~~Program:/* ID: zzyzzy12 LANG: C++ TASK: calfflac*/ #incl
2011-11-10 22:34:50 1008
原创 HDOJ - 3560 并查集
JX大大刚接触并查集(想起当年向总当年的那口音..beng查集)...纠结了这道题....我在无聊水USACO的时候也来瞅了瞅这题... 去年多校联合武汉大学出的...题意是说给一个无向图...有哪些连通分量...并且有那些连通分量是环(这道题的环是指这个连通分量首尾相连没有多余的边)... 既然是无向图...那么能通过边直接或间接到达的就是一个连通分量..其实也就是并查
2011-11-10 21:32:26 953
原创 USACO Section 1.3 Barn Repair - 卡了一年的DP...
看DLX看的蛋都粉了....就去USACO切题了..话说我USACO一年多都没动了~~动一动也挺好的...就是因为这道题~~当年就没继续做下去了...囧..一直弱菜~~不过现在看这题着实很简单...我是用的DP...DP[200][50]...每个点扫他的前面一个点和栅栏数..求的每个栅栏数状态下相连与不相连的情况并选择较优的来更新...从第一个更新到最后一个...就得到答案了.../*
2011-11-10 20:36:40 1005 1
原创 POJ 3255 - 求两点间的第二短路
注意这里求的不是两点间的第二短长度...就是说如果两点间距离有两条路径都是最短路径~~那最第二短路径长度还是这个最短路径.. 做了POJ2449的两点间K短路后这道题就是它的缩小版...唯一要留意的就是边是无向边....Program:#include#include#define MAXN 200001using namespace std;struct no
2011-11-10 14:45:21 1952
原创 POJ 2449 - A*初步+ K短路
原以为A*会很难懂~~~结果狐狸大大一口气就给我讲懂了A*和K短路的求法..... 所谓A*就是启发是搜索..说白了就是给BFS搜索一个顺序使得搜索更加合理减少无谓的搜索..如何来确定搜索的顺序?..也就是用一个值来表示这个值为f[x]..每次搜索取f[x]最小的拓展...那么这个f[x]=h[x]+g[x]其中这个h[x]就是当前搜索时的代价..如求K段路这个就是前一个点的h[...
2011-11-09 21:47:32 7114 9
原创 POJ3544 - 题看错了..结果WA了很久...
上周去衡阳八中找虐做的题~~也很简单了~~~当时就是10个点都过了...结果到POJ上交就狂WA..更郁闷的是我到网上搜了好几份别人的解题报告也是WA..我都怀疑题目改数据了...还好狐狸大大指出了题目最后要求的不是按照城市顺序输出对应的猪而是按猪的顺序输出对应的城市~~好吧...AC... 这道题乍一看一一对应啊~~又要是最多啊~~~很容易想到KM...其实也没必要贪心就可以了~~~
2011-11-09 12:51:28 1208
原创 POJ3926 - 很少人做的单调队列优化DP..
首先日西一下...Van_Persie是我的小号..zzyzzy12是我的大号..囧...上面是按空间排序..下面是按时间排序...时间排第七...空间居然是第一..好吧!!晒得果断! 回到正题..这道题是上个周末在衡阳八中跟他们一起训练做的...当时只过了6个点...回来再POJ上A发现更多问题...题意我就不再说明了..注意的是这里的长度不会影响上下..也就是说整个可
2011-11-08 22:23:59 1995 1
原创 POJ2778 - AC自动机+非递归的矩阵乘法
回想还是半个月前...跟着Matrix67的那文章做矩阵乘法....做到这题就卡住了...决心突破..这两周从Trie入门开始..到今天终于把这题给AC了...虽然这半个月做题量相比以前大大减少....但真正能初步掌握一种算法还是值得的... 首先这道题我是参考了几个解题报告的: http://www.matrix67.com/blog/archives/276/
2011-11-04 15:47:49 3164
原创 POJ3691 - AC自动机的第一道DP
第一道AC自动机...从上周日就开始写了..搞得我都要抓狂了...今天也是看了在网上搜了些解题报告才搞定...发现和我自己整得差别较大...瞎忙活了3天... .题意是说给了N个带病毒的DNA串( DNA串只有AGCT几种单元组成)...再给一长串DNA..问这长串DNA最少改动几个(就是改..不是删除或者添加..)能保证没有包含病毒字串..输出这个最小改动的次数..若怎么修改都带病毒子串
2011-11-02 19:38:44 2668
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人