- 博客(38)
- 收藏
- 关注
原创 poj1053
此题的难点有以下几个: 1.可能想不到暴力搜索即可,执着于找什么规律 2.要么是以为是划分集合的题目,要么没读懂题目 3.如何处理输入的每一组数据。 该问题实际是列出所有可能结果集合,集合用暴力搜索。对于数据,用getchar,可以方便处理eof,并且设置两个int “指针” 辅助输入。 还要特别小心i、j、k在使用过程中不混淆 #include int
2015-05-10 23:47:16 324
原创 hdu 1016 prime ring 简单dfs输出
少见的一次性写对的代码 不过注意的一点是对于dfs中visited一定要记得第一次调用dfs的时候就要设置为1 还有就是险些错误的就是dfs的终止条件的判断,虽然n代表环的节点总数但是序列数组是从0开始的! #include #include #include using namespace std; int n,k; int visited[20]; int
2015-05-09 12:31:22 280
原创 hdu1501 zipper dfs+记忆话搜索
1.这道题让我意识到了dp与dfs+记忆话搜索其实没有太大区别,只不过dfs的范围更广,dp只适用于最优子结构,也就是结果只取决于当前的状态不取决于前面问题的解答。 2.还有这题犯下的低级错误就是len2顺手写成strlen(s1); 所以必须要小心下标和标记具体是什么含义。 3.dfs终止条件不可忘记。 我的代码: #include #include #include usin
2015-05-09 11:52:08 284
转载 ac自动机模板
ac自动机的大概思路就是 1.先输入字符串,构造出trie树 2.构造失败指针,由于只有当父节点的失败指针构造完毕才能构造子节点的,所以进行bfs对每一个节点进行构造失败指针 这里的模板采用的是数组模拟指针的方式 输入n个字符串构造trie树 然后输入一个文本 ,查找文本中出现的最多次数的模式字符串和其次数 #include #i
2015-05-08 17:43:33 270
原创 poj1063
难点:1.题目中描述的翻转模式貌似很复杂,其实两种根本一样,而且在总球数为奇数和偶数的情况下可以化简成很见到的模式。 怕就怕想到复杂的算法去了。 2.有两个分类,一个是总球数的奇偶,一个是在总球数为偶数时奇数位和偶数位上的黑球数目 错误:1.在总球数为奇数时我把continue错写成break,而且忘记换行 2.每一次
2015-05-06 17:27:22 360
原创 Bellman-ford算法
//bellman算法:思路:进行n定点数-1次的松弛化操作,每次对所有边进行松弛化,所以不必开一个edgehead数组,因为不需要搜索遍历??适用有向图??#include #include #include #include #include #define inf 0x7f7f7f7f using namespace std; struct edge{ int u,v,w; }edge[1
2015-05-05 01:28:33 247
原创 迪杰斯特拉算法入门
//dijistra模板注意:终点必然是n点,源点的修改通过对于队列初始的push值和s的传参来改变#include #include#include#include#include#define inf 0x7f7f7f7fusing namespace std;const int N=1000;const int M=1000;int n,m;int d[N];struct edge {int
2015-05-05 00:27:51 289
转载 mark hdu1501
已经不知道多少次符合sample的wa了 不过值得学习的是最优子结构的独立性和dp的从1开始性和i、j分清和dp的除了-1部分的初始化要想清楚 我的: #include #include int n,d[200][200]; char a[2000],b[2000],c[2000]; int dp(int i,int j) { if(d[i][j]>=0) return d[i
2015-04-29 20:08:45 255
转载 mark hdu 1227
仍然找不到错误在哪里 : 我的: #include #include #include int n,k; int d[205][205]; int dis[205]; int s[205][205]; int min(int x,int y) { return x } int dp(int x,int y)//代表到第x个商店 一共有y个depot { if(
2015-04-29 19:12:18 237
转载 hdu3008 (mark)
这道题显示出来一个dp很重要的东西,就是如何确定要几维dp 我以为要三维,英雄血,英雄魔,boss血,然后被困死在如何确定失败上,实际上二维就已经足够算出三维的信息。 我的(仍未修改): #include #include #include #include using namespace std; int n,t,q; int skill1[100
2015-04-29 01:14:56 324
原创 hdu 1502 字符串dp与高精度运算(mark)
难得的dp思路都是对的,但是没想到高精度 我的: #include #include int n,d[65][65][65]; int dp(int i,int j,int k) { if(i==0&&j==0&&k==0) return 0; if(d[i][j][k]) return d[i][j][k]; if(i>j&&
2015-04-29 00:34:34 284
转载 python与函数
1.pass占位符 2.python可以返回多个数据 3.存在默认参数 默认参数可以简化函数的调用。设置默认参数时,有几点要注意: 一是必选参数在前,默认参数在后,否则Python的解释器会报错(思考一下为什么默认参数不能放在必选参数前面); 二是如何设置默认参数。 当函数有多个参数时,把变化大的参数放前面,变化小的参数放后面。变化小的参数就可以作为默认参数。
2015-04-28 09:25:22 298
原创 python基础
1.print语句必须加括号。print语句可以传入分隔符变量sep;如果不传入变量end默认为结尾换行 2.bool运算符号 not and or 3.raw_input得到的永远是字符串,要变成int就要类型转换 list与tuple 1.list是可变的数组,且类型无限制。tuple是不可变的list,更安全 2.tuple可以嵌套可变的list 3.tuple若只有一个数字元素
2015-04-28 08:57:10 228
原创 LCS的加强输出 hdu1503
首先明确LCS: 模板: #include #include using namespace std; int v[1000][1000]; short dir[1000][1000]; char A[1000],B[1000]; int r,c; int LCS() { for(int i=1;i for(in
2015-04-27 15:06:53 260
转载 hdu2059 龟兔赛跑 (还没做)
看了一些博客,这句话印象最深刻: DP题。理解DP不是一种固定的算法,而是一种思路,是一种用空间换时间的思维方式。开数组记录每一步的最优解,每次比较更新,最后得出的就是整体最优解。 这题每个步骤有个决策,就是在充电站时选择充或不充,每个决策有影响后面的决策。然后就是怎样让每一步达到最优,这时就要用数组记录然后更新,用一个数组记录每一步的最优解,然后再根据决策的不同,将所有可能的情况列出得这一步
2015-04-20 12:46:21 239
原创 hdu 1114 piggy bank
http://acm.hdu.edu.cn/showproblem.php?pid=1114 还是没有彻底理解自底向上的动态规划,其实自底向上就像自动状态机一样,借用子问题独立,先把子问题填表填上(这里存在多填,所以才有贪心的余地),然后转移状态到父问题上. 本题我以为要二维状态,第一维度用于记录现在判断到第几个bank,但实际转换为一维背包。 还有就是我一开始不小心把最初重量减满重量,结果
2015-04-20 12:21:36 378
原创 Adventure Time 贪心加元素不同选择方案
最终也没能明白错哪里了; http://acm.timus.ru/problem.aspx?space=1&num=2024 #include #include #include #include using namespace std; int b[26];//a记录各个颜色的数目 int a[26]; int main() { int i=0;
2015-04-19 21:43:05 405
原创 hdu2571 命运 简单dp
不知道又为什么RE 我的: #include #include int T,n,m,map[50][2000],dp[50][2000]; int main() { scanf("%d",&T); while(T-->0) { scanf("%d %d",&n,&m); int i,j;
2015-04-19 01:14:46 1390
原创 点名系统第一弹
1.首先要建立一个welcomeview 2.线程不可调用ondraw 3.即使是一个含有渐渐降低透明度的图片的view,也应该setcontentview 4.alph越大看的越清楚 5.如果只有welcomeview的话alph=0也会显示图片?
2015-04-18 20:27:04 269
原创 1422 hdu 世界杯 另类dp
http://acm.hdu.edu.cn/showproblem.php?pid=1422 1.这里的循环数组还可以通过把n数组复制一倍数实现 2.关键在于要想到不回溯这部分的代码, 每次sum不够时,不是从头开始,而是左端往右收缩。我当时以为收缩的后得到的新结果未必能 够保证未收缩的中间部分能够到达。但是仔细想,如果收缩的部分整体必然是拖累的部分,去掉这部分,中间部分只会更好。
2015-04-18 19:27:31 235
原创 hdu 机器人路径 dp+记忆化搜索
http://blog.csdn.net/acm_davidcn/article/details/5976783
2015-04-18 18:42:07 271
转载 hdu 1789 任务调度 贪心或dp
又是喜闻乐见的符合sample但是wa http://acm.hdu.edu.cn/showproblem.php?pid=1789 我的: 1.话说看看这个cmp要记住,本来cmp没改连sample都不对 2.如果cb不能debug,重新安装完全版 3.cb debug可能会进入algorithm头文件中 4.我觉得错误也许在于随意的交换可能浪费了某些资源 这道题貌似可以dp
2015-04-18 11:51:59 349
转载 hdu 1505 二维木板
http://acm.hdu.edu.cn/showproblem.php?pid=1505 我的不知道为什么错: #include #include #include using namespace std; int k,m,n; int a[1003][1003]; int L[1003][1003]; int R[1003][1003]; int main()
2015-04-18 01:20:02 225
转载 hdu1506一维木板动归
http://acm.hdu.edu.cn/showproblem.php?pid=1506 一道比较神奇的动归题目,没有严格的状态方程,只是提前用一种类似链表的方式预处理。 没能找出自己的错误: 自己的: #include #include #include #include using namespace std; #define LL long lon
2015-04-18 00:31:11 169
原创 hdu 1231最长子序列和
http://acm.hdu.edu.cn/showproblem.php?pid=1231 。。。。以前一直以为有点理解动态规划,没想到比自己想想的还要弱逼伤自尊。 不过总算写出来了。 这道题首先注意,最后要求输出的是,最大和,最大和所对应的最左元素和最右元素而不是最左序号和最右序号。 既然还要输出最左、右元素只要往右动归一次往左动归一次就好了,不过必须在往左动归之前把数据重新清0.
2015-04-17 22:32:04 292
转载 UVA 1160 - X-Plosives 并查集判断是否存在环
http://blog.csdn.net/hnust_xiehonghao/article/details/9176909
2015-04-16 00:09:37 280
转载 别样的动态规划 Codeforces Round #154 (Div. 2)——B
http://blog.csdn.net/z690933166/article/details/8332976
2015-04-16 00:06:24 224
原创 uva 1160 x plosives
http://blog.csdn.net/hnust_xiehonghao/article/details/9176909 将问题巧妙地转化为并查集的环 而并查集的环又巧妙地只需要在每次决定加入联通分量的情况下检查
2015-04-15 23:44:19 219
转载 并查集 codeforces party
http://cs1003.blog.163.com/blog/static/204096236201258471380/ 这题较为特殊,并没有完全利用并查集的全联通性,而是直接用打擂的方法求出最长的树边,只利用了父子的连通性。 结合之前的开num数组统计并查树的秩,已有两种处理
2015-04-15 00:48:26 256
原创 POJ 1611 The Suspects(并查集)
http://poj.org/problem?id=1611 #include #include #include #define maxn 30090 int n,m; int fa[maxn]; int num[maxn]; int find(int x) { int f=fa[x]; while(f!=fa[i])// 一开始写成 if(f!=fa[f
2015-04-15 00:03:23 245
原创 ZOJ Problem Set - 3261
题目的链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3563 首先学了怎么debug: 设置断点,按debug中的go,执行到断点以后不断按step into 如果发现按钮变灰色说明要输入数据了(发现两个坑爹的地方:1.next line不要用(不知道为什么)2.循环读取数据不要把断点设置在scanf
2015-04-14 21:04:51 280
转载 City Game
http://blog.csdn.net/acm_ted/article/details/7848019 和1506非常相似 不过这里是二维的,相当于把每一列当做一个柱
2015-04-09 15:07:24 217
转载 POJ 2559 Largest Rectangle in a Histogram -- 动态规划
Largest Rectangle http://acm.hdu.edu.cn/showproblem.php?pid=1506 ** 对 于每一块木板,Area=height[i]*(j-k+1) 其中,j=height[i];找j,k成为关键,一般方法肯定超时,利用动态规划,如果它左边高 度大于等于它本身,那么它左边的左边界一定满足这个性质,再从这个边界的左边迭代下去 for(i=1;i
2015-04-09 14:33:05 233
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人