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






tim11

 
 

Powered by 博客园
博客园 | 首页 | 新随笔 | 联系 | 订阅 订阅 | 管理

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)