04 2012 档案

摘要:http://poj.org/problem?id=1159给定一字符串,问最少插入多少字符能使该字符串变成回文串。只要求出该字符串与其逆串的公共子序列,然后然后用n减去就得结果。这里卡内存,可以将f[5007][5007]定义成short int 型,计算后能险过,所以这里最好采用滚动数组。View Code #include <cstdio>#include <cstring>#include <iostream>#define maxn 5005using namespace std;char s[maxn];int f[2][maxn];int ma 阅读全文
posted @ 2012-04-30 15:17 E_star 阅读(132) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=1080discuss 里面的解释已经很经典很明白了。http://poj.org/showmessage?message_id=74842View Code #include <cstdio>#include <cstring>#include <iostream>#define maxn 107using namespace std;int f[5][5] ={ {5,-1,-2,-1,-3}, {-1,5,-3,-2,-4}, {-2,-3,5,-2,-2}, {-1,-2,-2,5,-1}, {-3 阅读全文
posted @ 2012-04-30 10:36 E_star 阅读(130) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=1836其实前不久校赛的题目就是这个题目的一个简化版本,http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2403这道题只要求出从左到右,从右到左,以及Ak1<Ak2<Ak3<...<Amid-1<Amid>Amid+1>...>Akm-2>Akm-1>Akm (k1,k2,k3....km均在1到n之间) 严格按照左边递增右边递减的序列长度去最大就好了。这里的题意和SDUT2403差 阅读全文
posted @ 2012-04-29 15:57 E_star 阅读(211) 评论(0) 推荐(0) 编辑
摘要:二分:返回第一个大于val的数51 3 5 6 96>>951 3 5 7 96>>7int bsearch(int val){ int l = 0, r = n; int mid = 0; while (l <= r){ mid = (l + r)>>1; if (a[mid] > val){ r = mid - 1; } else{ l = mid + 1; } } return a[l];}返回第一个大于等于val的值:int bsearch(i... 阅读全文
posted @ 2012-04-29 14:23 E_star 阅读(360) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=1260题意是:给定不同级别不同价值的珍珠,问如果购买所有的珍珠最少花费。每买一种价格的珍珠就要多付10个钱。其中低等的珍珠可以用高等的珍珠进行替代才开始自己想的是对于当前等级i的珍珠要么只买这一等级的珍珠,要么用这一等级的珍珠替换所有比他低级的珍珠以求得购当前(a[1]+a[2]+a[3] +....+a[i])数量珍珠的最少费用,样例过了可是WA后来想了想对于当前状态比他低级的不应定非要用它替换,我们只要最小就可以了,如果这要对于i后面的状态(情况特别多)就不好处理了。最后看了一下discuss有人证明了,只要枚举比i低级的连续的等级用i 阅读全文
posted @ 2012-04-29 13:26 E_star 阅读(221) 评论(0) 推荐(0) 编辑
摘要:今天的比赛做的很纠结,该反思一下自己为什么做的这么烂了,约瑟夫环的那个问题,反映出自己掌握知识不够全面,只要我们知道那个证明实现起来就很轻松了,可是如果不知道的话就会被卡了。Run Length Encoding这道题题意读的很是晕,迷迷糊糊就把代码完了,自己还出了好几组数据测试都过,一交还是wa,原来自己把题意理解错了,其实这道题的叙述真的很理解的。All Discs Considered这道题没读懂题意,自己猜的是拓扑排序,可是比赛时卡到那几个题了所以就没写,后来自己读了几遍题意,想了想还是不知道该怎么写,最后还是搜了一下解题报告才出来的。。。就看了这几道题。。。1:自己的知识面太狭隘;2 阅读全文
posted @ 2012-04-28 21:59 E_star 阅读(215) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=1276才开始自己写了一下转换成01背包的做法,直接tle。。计算一下就知道会tle了。然后写了一下二进制思想的方法,终于A了。。。背包好久没看了,自己还是不是很扎实啊View Code #include <iostream>#include <cstdio>#include <cstring>#define maxn 100007#define N 11using namespace std;int f[maxn];int c[N],b[N];int V,n,m;void zb(int c,int w,i 阅读全文
posted @ 2012-04-26 23:22 E_star 阅读(181) 评论(0) 推荐(0) 编辑
摘要:今天下午航电的比赛,我没注意,下午两点多才来实验室。只是做了几道水题。4229就是给定那个a,b,c,d四个非负整数数,分别用|a-b| |b-c| |c-d| |d-a| 来代替,计算直到 a= = b == c == d为止求出一共需要多少步,这题幸亏给出了It turns out that in all cases, the sequence converges very quickly. In fact, it can be shown that if all four integers are less than 2^n, then it will take no more than 阅读全文
posted @ 2012-04-25 20:47 E_star 阅读(315) 评论(0) 推荐(0) 编辑
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4109给定N个指令,其中有部分指令存在先后时间上的顺序,给定m个,x, y, z 即y必须在x执行完z秒后才执行,求 最少的时间。首先根据拓扑排序找出入度为0点,处理,而对于有限制的一些点来说,dp[i] = max(dp[i],dp[j] + w) j 是i的临接点,w是i与j 的时间差。边表不是很熟,同时也练习了一下边表。。View Code #include <cstdio>#include <cstring>#include <iostream>#include & 阅读全文
posted @ 2012-04-23 21:43 E_star 阅读(251) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=1463对于树形DP不大来感啊,才开始做的时候考虑成覆盖全部点了,致使我拓扑做了,WA了好几次。感觉是树形DP好像以前做过类似的题目可是就是想不出来怎么做了,看来还是不扎实。最后搜了一下解题报告,对于每一点只有放与不放两种状态,如果这一点放了士兵那么他的临接点可以放也可以不放,如果这一点没有放那么他的临接点一定放了。由此得出dp[i][0]+= dp[j][1] dp[i][1] = min(dp[j][0],dp[j][1])(j属于i的临接点) dp[i][0] 表示i点不放士兵 dp[i][1] 表示i 点放士兵。。随便由一点出发,.. 阅读全文
posted @ 2012-04-23 20:51 E_star 阅读(193) 评论(0) 推荐(0) 编辑
摘要:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2401话说GSB 出的这个题确实不大好想,给定题意不说了。才开始我们想的是从左到右,从上往下走一边,找相邻连点两重循环找最大面积,敲出来一交WA,郁闷,才开始我们都认为这个办法对,想了很长时间,到最后ZC出了各情况直接给否定了,主要是我们没有考虑上下界问题。同样只要考虑好上下界,还是按那个思路左右上下走一边,最后求出最大值即可。View Code #include <cstdio>#include <cstring>#i 阅读全文
posted @ 2012-04-23 20:28 E_star 阅读(424) 评论(0) 推荐(0) 编辑
摘要:rating继续跌。。。。。桑心啊!!http://codeforces.com/contest/181A:就是给一个矩阵,里面有四个点这四个点能够组成矩形,给定三个点求第四各点的位置。这里四点形成矩形的边与给定矩形的边平行。所以只要简单的模拟找出来就行。如果不平行的话就麻烦了。* ** ?不管怎样都是这样的形式。。View CodeB:给定N个点,求满足三点共线且中间一点位于其余两点的中点的所有三点组合的个数。ABC ,B位于AC的中点。才开始自己写了个((n*(n-1))/2)*(logn)的,就是两点组合后在二分查找是否存在,可是老是wa,郁闷了,于是就换了算法。同样首先排序,1... 阅读全文
posted @ 2012-04-21 10:31 E_star 阅读(267) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=1837题意:给你一个类似于天平的秤,秤有左右臂膀。左右臂有c个挂钩,给定g个重物,要求把所有重物都挂在钩子上,并且是天平平衡。求最多可能得到的数。左边力乘以力矩 = 右边力乘以力矩挂在左边的得到负数,挂在右边得到正数,只要我们的到的数为0就表明此时天平平衡。由于数组下表不能为负,所以我们要加上一个偏移量b = 20*15*25 = 7500 所有重物都挂到一端取最大重量则我们得到的结果dp[g][0] 就等于dp[g][7500] 了(加上偏移量)dp[i][k + val[i]*pos[j] + b] += dp[i - 1][k + b 阅读全文
posted @ 2012-04-20 21:21 E_star 阅读(387) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=2531就是和原来的奶牛翻碗问题,翻黑白棋问题,开门问题属于一类题目,对于每一点只有两种状态,要么属于A要么属于DFS枚举出所有的状态即可。。才开始自己按自己的习惯写的DFS1469ms最后看了看别人的优化到了375ms。。。就是在处理求和时的优化了。。我的代码:View Code #include <iostream>#include <cstring>#include <cstdio>#define maxn 23using namespace std;bool vt[maxn];int n,ans;i 阅读全文
posted @ 2012-04-19 20:29 E_star 阅读(175) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=3087刚看到题目的时候给我整蒙了,BFS怎么做啊?这不就是模拟一下洗牌的过程,如果遇到目标字符串就输出步数,如果回到原始串,就说明到不了目标串。View Code #include <iostream>#include <cstdio>#include <cstring>#include <queue>using namespace std;char aim[207];//目标串int n;struct node{ char s1[107]; char s2[107]; int len;};b 阅读全文
posted @ 2012-04-19 15:41 E_star 阅读(158) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=3126题意给定两个四位素数s,e,求出经过最少的步数由s得到e,每一步的要求是每次只能改变四位数中一位数,并且改变后的数要求也要是素数。首先求出1000到9999所有的素数,然后有s到e进行bfs,知道遇到e结束。刚开始自己写完代码之后,测试了一下数据,吓死我了,很慢。心想怎么优化呢。想了很长时间,感觉应该能过啊,不耐烦了还是提交了一下。结果1Y。。。囧啊!!不知道威慑呢么机器上运行的很慢。。看了一下300多秒。View Code #include <iostream>#include <cstdio>#includ 阅读全文
posted @ 2012-04-18 21:43 E_star 阅读(305) 评论(0) 推荐(0) 编辑
摘要:一:常用数据类型对应字节数 可用如sizeof(char),sizeof(char*)等得出 32位编译器: char :1个字节 char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器) short int : 2个字节 int: 4个字节 unsigned int : 4个字节 float: 4个字节 double: 8个字节 long: 4个字节 long long: 8个字节 uns... 阅读全文
posted @ 2012-04-17 21:17 E_star 阅读(678) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=1426首先补充一下基础知识:一:常用数据类型对应字节数 可用如sizeof(char),sizeof(char*)等得出 32位编译器: char :1个字节 char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器) short int : 2个字节 int:4个字节 unsigned int : 4个字节 float:4个字节 double:8个字节 long:4个字节 long long:8个字节 unsigned long:4个字节 64位编译器: char :1个字节 c 阅读全文
posted @ 2012-04-17 21:14 E_star 阅读(169) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=3278就是农场主在X轴上找牛,给定牛的坐标,扭不动,农场主可以 +1 -1 *2 的方式前进,求最少的步数使其找到牛。分三种情况走,直到遇到牛即可,同时为了避免不断的重复于某一点,记录到达该点的最短距离。View Code #include <iostream>#include <cstring>#include <cstdio>#include <queue>#define maxn 100007#define inf 9999999using namespace std;int ans,s 阅读全文
posted @ 2012-04-16 10:55 E_star 阅读(208) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=2251很简单的求最短路径的BFS题目,才开始自己写了各DFS直接性TLE。。。三维的,就是多加了两个方向罢了,再处理的时候就按i,j,k来;View Code #include <iostream>#include <cstring>#include <cstdio>#include <queue>#define maxn 33using namespace std;struct node{ int x,y,z; int len;}s;char map[maxn][maxn][maxn];bo 阅读全文
posted @ 2012-04-13 20:30 E_star 阅读(209) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=1321自己真是本了开始写了歌对于棋子有顺序的搜索,导致求出来是ans的阶乘种数了,因为k < n且不能在同一行同一列,只要按行搜索,记录列是否被访问过即可!View Code #include <iostream>#include <cstdio>#include <cstring>#define maxn 12using namespace std;char map[maxn][maxn];bool vt[maxn];int n,m,ans;void dfs(int x,int len){ int 阅读全文
posted @ 2012-04-13 10:42 E_star 阅读(217) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=3009注意两点:1:只有当冰壶的所有可能走的方向上有0可以移动时,他才能移动,这里就是这组数据的解释6 11 1 2 1 1 3 因为2左右都是1不能移动座椅不能走。2:但冰壶蹦到障碍物时,障碍物会破碎,此处就会变成可以走的路线了。View Code #include <cstdio>#include <cstring>#define maxn 24using namespace std;int sx,sy,ex,ey;bool flag;int ans,n,m,map[maxn][maxn];int dir[4][ 阅读全文
posted @ 2012-04-12 21:49 E_star 阅读(211) 评论(0) 推荐(0) 编辑
摘要:昨天晚上做了一下CF。本来心情很好,提交了三道题。比以前总是两道提高了一道题啊。。可是今天醒来发现,就对了一道。。伤心啊。。。ratingA:自己多考虑了一下,中间小小的卡了一下精度,提交时没考虑,去了自己多考虑的情况就对了,如果不去加上高精度也对。哎。还是不够缜密。n个瓶子,原来装有a[i]毫升Ber-Cola,大桶里中有b升Ber-Cola,要将b升分到n各瓶子里,是每个瓶子的容量相等,只要求出总的平均数,然后依次判断每个瓶子要装多少,如果出现大于平均数的就输出NOView Code #include <iostream>#include <cstdio>#incl 阅读全文
posted @ 2012-04-09 22:51 E_star 阅读(352) 评论(0) 推荐(0) 编辑
摘要:http://acm.hdu.edu.cn/webcontest/contest_show.php?cid=18871001:将一个数转化成-2进制的数,同样对这个数模-2倒取于,分清正数与负数,两种不同的情况;View Code1002:DFS;给的数据很小所以暴力就可以过,首先求出n个字符串的全排列,然后检查是否可以连接,求最后的长度,枚举出最小的值。在这里又犯了个不可原谅的小错误。。唉。细心。。View Code1003:字典树;每个点减去空格的ASSIC码,(应为空格的ASIIC吗最小),然后插入,查找。View Code1004:贪心;可以想象成上升沿与下降沿,求顶峰的值,中间的细节 阅读全文
posted @ 2012-04-09 22:01 E_star 阅读(199) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=2418字典数编号,统计每个单词出现的次数,然后计算频率:View Code #include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>#define maxn 10007using namespace std;struct node{ int flag; node *next[100];}*head,H[999999];int pos;int L;struct 阅读全文
posted @ 2012-04-06 21:56 E_star 阅读(205) 评论(0) 推荐(0) 编辑
摘要:http://acm.hdu.edu.cn/vcontest/vtl/problemlist/showproblemlist/vtlid/33671009 原来比赛做过的一个题目,由于最近写了几个字典树的题目,所以我对每个姓名编号的时候用字典树写的可是不知道哪里出了错误,老是wa弄得整个比赛的心情一团糟,最后我直接暴枚举力标号,已提交a了。。郁闷啊。。。思路:输入A找与A有公共朋友最多的B,如果和A有公共朋友最多且相等的话就按字典序输出。。注意:在找A的后继的后继B时,1:B不能是A本身:2:也不能是A的直接朋友。相当于一个模拟找的过程。。View Code #include <iost 阅读全文
posted @ 2012-04-05 21:14 E_star 阅读(202) 评论(0) 推荐(0) 编辑
摘要:http://acm.hdu.edu.cn/contests/contest_show.php?cid=392我们还是很水啊。。。。加油感觉今天的题都挺难的,我和von一起组队做的,就出了两道题。郁闷啊。。A:没看B:前5道是von负责的,由于前几天做过一道优先队列的bfs所以von很快就1Y了。orz..赛后自己也敲了一下1Y:代码:View Code #include <cstdio>#include <cstring>#include <iostream>#include <queue>#define maxn 507using names 阅读全文
posted @ 2012-04-03 20:33 E_star 阅读(206) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=2513才开始自己对欧拉路的理解成了汉密尔顿路;欧拉路:给定无孤立节点的图G,(连通图),若存在一条路,经过图中每边一次且仅一次,该条路是欧拉路;汉密尔顿路则是:给定无孤立节点的图G,(连通图),若存在一条路,经过图中每点一次且仅一次,该条路是汉密尔顿路;这样用字典树映射字符串的编号,并查集判断连通,欧拉路判断:1 :必须是连通图;2:有0个或2个奇数度数的节点View Code #include <cstdio>#include <cstring>#include <queue>#include < 阅读全文
posted @ 2012-04-02 22:12 E_star 阅读(229) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=1442看了好几遍才懂了题意:就是给你m个数(要进入box的),然后是n个数u[i .. n],每个u[i]表示询问:当前u[i]个数进入box之后,求第i小的数。。用两个优先队列分别建立大顶堆,小顶堆:小顶堆存放新加进来的数,大顶堆存放前边出现的数。。。小顶堆存放新加进来的数并且维持着小顶堆里面的最小值,一定大于大顶堆里面的所有值。大顶堆记录的是当前所有出现的数的最小的几个(个数是上一次出现的序列的个数)例如u[2] = 2-->u[3] = 6q2 : 3,1q1: -4=>q2: 1,-4q1: 3;=>q2: 1,- 阅读全文
posted @ 2012-04-02 19:44 E_star 阅读(208) 评论(0) 推荐(0) 编辑
摘要:http://poj.org/problem?id=2442题意很简单,思路就是任意的两个含有m个元素的序列求和,用o(nlgn)的堆来维护n个最小元素,最终得到的丢里面的元素就是所要求的。。。stl中堆得应用:STL里面的堆操作一般用到的只有4个:make_heap();、pop_heap();、push_heap();、sort_heap();他们的头文件函数是#include 首先是make_heap();他的函数原型是:void make_heap(first_pointer,end_pointer,compare_function);一个参数是数组或向量的头指针,第二个向量是尾指针。 阅读全文
posted @ 2012-04-01 19:50 E_star 阅读(209) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示