• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
 






tim11

 
 

Powered by 博客园
博客园 | 首页 | 新随笔 | 联系 | 订阅 订阅 | 管理
上一页 1 2 3 4 5 6 7 下一页

2012年8月26日

浙大月赛C题(2012/8)Cinema in Akiba(线段树)
摘要: http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=4791(1)第一次写浙大的题目,这题让我十分意外,基本的线段树类型(求第x个空位)。(2)电影院里,一次插入一个人,让他坐在第x个空位shang(每个x均给定)。求最终的位置安排(制定一些人,求他们各自的座号)。具体代码:View Code #include<stdio.h>#define lson l, m, rt<<1#define rson m+1, r, rt<<1|1const int maxn=51000;int 阅读全文
posted @ 2012-08-26 15:08 tim11 阅读(160) 评论(0) 推荐(0)
 
hdu 1698 Just a Hook (线段树,延迟操作)
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1698(1)简单的延迟操作。具体代码:View Code #include<stdio.h>#define lson l, m, rt<<1#define rson m+1, r, rt<<1|1const int maxn=101000;int t, n, m;int mark[maxn<<2], sum[maxn<<2];void pushdown(int rt, int n){ if(mark[rt]) { mark[rt<<1]= 阅读全文
posted @ 2012-08-26 14:28 tim11 阅读(156) 评论(0) 推荐(0)
 
hdu 2852 KiKi's K-Number (线段树,求大于x的第k小数)
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=2852(1)求比x大的第k个最小值。问题可以分解为两个子问题: 1)求不大于x 的数的个数t。(本质为求和) 2)求树里头的第t+y个数的值。(本质为定位)(2)考虑过直接计算出结果:search(y, x, n, 1); 即在区间(x, n)中寻找第y个数。 这种思想是可行的,但不适合已经构建的这棵树。因为已有的线段树只能从区间(1, 某数)开始查询,区间(x, n)与sum[]数组的描述方式对不上号。 (原有的sum[]数组中可能不含描述区间(x, n)的sum[i],并且一般情况下就是不包含对... 阅读全文
posted @ 2012-08-26 13:07 tim11 阅读(209) 评论(0) 推荐(0)
 
hdu 2711 Lost Cows(线段树,反序更新)
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=2711(1)又是一道从后往前更新的题目,该算法确实经典。(2)新亮点:用到了变量pos求ans[i];另外,用search()函数单独处理ans[1]。具体代码:View Code #include<stdio.h>#define lson l, m, rt<<1#define rson m+1, r, rt<<1|1const int maxn=81000;int n;int data[maxn], sum[maxn<<2];int ans[maxn];voi 阅读全文
posted @ 2012-08-26 10:27 tim11 阅读(170) 评论(0) 推荐(0)
 
hdu 1556 Color the ball (线段树,延迟更新)
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1556(1)延迟更新:pushdown()函数,记得在所有的查询、更新函数中都要使用到。这里用到懒惰标记mark[]数组。(2)很基础的题,1A。具体代码:View Code #include<stdio.h>#define lson l, m, rt<<1#define rson m+1, r, rt<<1|1const int maxn=101000;int n;int mark[maxn<<2], sum[maxn<<2];void pushd 阅读全文
posted @ 2012-08-26 10:02 tim11 阅读(182) 评论(0) 推荐(0)
 

2012年8月25日

hdu 3564 Another LIS (线段树sum+二分查找)
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=3564(1)和今天刚做过的一道题十分相似(夜间插队问题hdu2828),从后面起算,因为最后面的数的位置是固定的,而其他数的位置被其后面的树影响着。(2)一个易错点,在insert()函数中:if(p<=sum[rt<<1]) insert(p, val, lson);else insert(p-sum[rt<<1], val, rson); 注意每个字段的含义(sum[]数组是空位的个数,p是需要预留的空位数),很多时候不加思考,就写错成了: if(p<=m) inser 阅读全文
posted @ 2012-08-25 20:49 tim11 阅读(301) 评论(0) 推荐(0)
 
poj 2923 (Relocation)(状态压缩dp)
摘要: http://poj.org/problem?id=2923(1)2辆车搬运n件家具,求最少的搬运次数。背包问题的一般思路是,把物品顺次装入背包,不过背包有且仅有一个。然而,这里的“背包”,不仅有两个, (2辆车),而且“背包”还可以重复使用。。。这种情况下,就不能简单地讲车看做背包,而应该另辟新径。(2)用到状态压缩(将每种状态用一个整数 x 的二进制形式来表示),先确定所有的状态下哪些情况能够一次运完,做好标记。在初始化dp数组为无穷大后 (dp[0]=0),遍历每种一次可以运完的情况,看看是否可以用它来更新其他状况的dp:if(!(j&re[i])) dp[j|re[i]]=.. 阅读全文
posted @ 2012-08-25 18:27 tim11 阅读(242) 评论(0) 推荐(0)
 
poj 2486 Apple Tree(树形dp+背包+dfs)(*****)
摘要: http://poj.org/problem?id=2486(1)本题属于只是交叉的题目,核心思想在于递归(状态转移方程的写出),假如要求得 p 点的信息,则可以通过其所有的相邻的点 now 的信息来更新。 而 now 的信息可以由未访问且与它相邻的点的信息来更新。(2)由于是树状结构,访问时可能会折回某一个点,然后去另一条支路上,所以走 K 步有返回起点和不返回起点两种形式。(3)最核心的算法本质:dp[0][g][i+j+2]=max(dp[0][g][i+j+2], dp[0][g][i]+dp[0][now][j]);dp[1][g][i+j+1]=max(dp[1][g][i+j+1 阅读全文
posted @ 2012-08-25 16:00 tim11 阅读(170) 评论(0) 推荐(0)
 
poj 2828 Buy Tickets (线段树sum)
摘要: http://poj.org/problem?id=2828(1)注意到,最后插队的人的位置是一定的,前一个人的位置的最终稳定取决于后面的所有人。为了避免插入一个新数时要挪出位置的尴尬,更为效率考虑, 可以从后往前插入树中(注意谁决定谁的关系的使用)。(2)小细节: 1) 0~n-1 而不是 1~n; 2)先输入,再更新(分开来); 3)希望今后的小错误可以尽快找出,线段树的写法虽然懂,但小错误最伤不起(很幼稚的类型,却很长时间才发现); 4)几乎所有的线段树都是求和、最值,但是各种包装下没能看清本质,还要多练手(题库里还有大约40题)。(3)对于每个插队的人(倒着数)... 阅读全文
posted @ 2012-08-25 11:38 tim11 阅读(133) 评论(0) 推荐(0)
 
hdu 4027 Can you answer these queries? (线段树+__int64)
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=4027又是纯粹的线段树的基本操作。(1)数组data[]是纯是浪费,不用开。数组sum[]在 build() 函数下应保证初始化成功(尤其是指先赋值为0,在读入数据)。(2)if(b>c) {int x=b;b=c;c=x;} 这关乎AC与否的问题。(3)稍微注意__int64 。(4)本题不需要成段更新(也没办法成段更新),更新时肯定会比较耗时。这里有个优化,当所考虑的区间里德只全为1(sum==r-l+1),就不需要更新了。if(sum[rt]==r-l+1) return ;具体代码:View C 阅读全文
posted @ 2012-08-25 09:54 tim11 阅读(110) 评论(0) 推荐(0)
 
上一页 1 2 3 4 5 6 7 下一页