赵乐ACM

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  103 随笔 :: 0 文章 :: 41 评论 :: 96617 阅读

02 2012 档案

摘要:1.典型的宽度优先搜索;2.典型的队列使用问题;3.刚开始一直WA,原来是边界弄错了,切记,越界就是wa以下是代码:#include #include #include #include using namespace std; int step[100010], flag[100010]; queue q; void bfs(int n, int k) { q.push(n); flag[n] = 1; while(q.size()) { int x = q.front(); q.pop(); i... 阅读全文
posted @ 2012-02-28 17:30 赵乐ACM 阅读(201) 评论(0) 推荐(0) 编辑

摘要:1.迄今为止做过的最费劲的一道题,到现在思路还不是很清楚;2.主要考察并查集,并查集的概念(http://www.nocow.cn/index.php/%E5%B9%B6%E6%9F%A5%E9%9B%86)。到目前为止这种思想还没有。3.并查集的主要操作,找父节点,合并,路径压缩;4.刚开始WA,把100000改成100010后AC了就以下是代码:#include #include using namespace std; int fath[100010], rank[100010], visit[100010]; void initial() { for(int i = ... 阅读全文
posted @ 2012-02-28 15:16 赵乐ACM 阅读(100) 评论(0) 推荐(0) 编辑

摘要:1.解体思路,寻找先序中序后序中顶点的位置,用递归计算。以下是解体思路:(摘自http://www.cnblogs.com/allensun/archive/2010/11/05/1870214.html)preorder的第一个节点D就是这棵树的根节点,即为postorder中的最后一个元素然后在inorder中找到该节点D,其左边为ABC为该根节点左子树的inorder,右边EFG为右子树inorder对应的preorder中BAC为该根节点左子树的perorder,EGF为右子树preorder再递归对左右子树应用同样的方法2.体会递归函数的写法。确定使用递归函数之后,对第一次递归时的计 阅读全文
posted @ 2012-02-27 17:07 赵乐ACM 阅读(128) 评论(0) 推荐(0) 编辑

摘要:1.栈的使用2.一种做题方式,在草纸上人工做,想清楚先后顺序,然后让机器做#include #include #include using namespace std; int num[1000]; int main() { int a, i, j; while(scanf("%d", &a) != EOF) { if ( a == 0 ) break; while(scanf("%d", &num[0])) { if(num[0] == 0) ... 阅读全文
posted @ 2012-02-27 15:08 赵乐ACM 阅读(144) 评论(0) 推荐(0) 编辑

摘要:1. 从小数找规律,验证规律。这个题,当n前边的数最后为1的方案可以拆分为两个,即最后两步分两步走还是一步走完,而最后为1的方案数等于n-1的方案数。这样就说明out【n】=out[n-1]+out[n-2]2.想清楚这些,代码一气呵成。以下是代码:#include int count[47]; int main() { int i,m,num; scanf("%d", &m ); count[0] = 1; count[1] = 1; for ( i = 2; i <= 46; i++ ) { count[i] = cou... 阅读全文
posted @ 2012-02-20 11:45 赵乐ACM 阅读(149) 评论(0) 推荐(0) 编辑

摘要:1.由于名字要和选票数一一对应,因此需要用到结构体。在用到结构体的过程中,需要对结构体重用于记录选票数的变量进行初始化,解决方法是利用循环输入时顺便解决初始化的问题。更好的方法,或者利用一个函数就能解决的方法还没有找到;2.第一次用到do…while这样的循环语句,体会和while循环语句的不同;3.如何用指针指向结构体数组的某一个元素,这个问题始终没有解决。如果解决的话,就可以直接用sort()了,但是会增加时间复杂度。4.最近几个题中一次提交就成功,哈哈以下是代码:#include #include #include using namespace std; int tex[10... 阅读全文
posted @ 2012-02-20 10:38 赵乐ACM 阅读(166) 评论(0) 推荐(0) 编辑

摘要:1.做成之后,检查了三个小时,逐步完善,到最后发现自己把电脑要考虑的工作给做了,需要把所有情况都给列出来,果断放弃。2.最短时间比较好想,左半部分蚂蚁向左走,右半部分蚂蚁向右走,没有碰撞发生。为所有最短时间中的最长的。最长时间可能涉及碰撞。碰撞其实相当于穿透,-->AB 相当于因此碰撞可以不考虑。最长时间就是离一端最远的蚂蚁所用时间。3.正常的思路应该是先求每个位置到两个端点的距离中的较大的那一个,然后再从这些值里边选取最大最小值。4.当系统显示accepted的时候,快哭了。。。这题做的太痛苦了,还没有一点算法的思想,思路不清晰以下是代码#include #include #inclu 阅读全文
posted @ 2012-02-19 20:28 赵乐ACM 阅读(312) 评论(0) 推荐(0) 编辑

摘要:1.素数筛选。利用了每个合数必有一个最小素因子:a.把2~n所有数依次存储在一个数组当中b.从2开始判断一个数是否为素数,紧接着删除这个素数的所有倍数,那么剩下的数里边,最小的数就是素数。c.在程序中有一点最为关键,以下是从一个blog中贴过来的:if(i%pr[j]==0)break; //pr数组中的素数是递增的,当i能整除pr[j],那么i*pr[j+1]这个合数肯定被pr[j]乘以某个数筛掉。 //因为i中含有pr[j],pr[j]比pr[j+1]小。接下去的素数同理。所以不用筛下去了。 //在满足i%pr[j]==0这个条件之前以及第一次满足改条件时,pr[j]必定是pr[j]*i的 阅读全文
posted @ 2012-02-19 15:50 赵乐ACM 阅读(142) 评论(0) 推荐(0) 编辑

摘要:1.首次使用cin,cout。使用cin时不能再继续直接在字符串中添加字符,需要用到insert(),而且只能添加字符串;2.判断边界的函数,解决了数组下标越界的问题;3.cin、cout总结“http://www.newsmth.net/pc/pccon.php?id=10002714&nid=359771”4.自己写测试数据,用自己的测试数据调试程序。以下是源代码#include #include #include #include using namespace std; int n,i,j,k,l,m;//循环变量 int num1[8]= {-1,-1,-1,0,0,1,.. 阅读全文
posted @ 2012-02-19 14:23 赵乐ACM 阅读(169) 评论(0) 推荐(0) 编辑

摘要:1.动态规划解体方法;2.前几次下标错误。复制代码时一定要检查下标;3.第一次将伪代码转换成代码。以下是代码#include #include //using namespace std; int main() { int i,j,m,n; char x[1010],y[1010]; while( scanf("%s%s",x,y) != EOF ) { m = strlen(x); n = strlen(y); int c[m+1][n+1]; memset( c, 0, sizeof... 阅读全文
posted @ 2012-02-19 14:22 赵乐ACM 阅读(198) 评论(0) 推荐(0) 编辑

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