http://www.lydsy.com/JudgeOnline/problem.php?id=1062

思路:找到平行四边形以后,变换坐标:y->y-kx,k为斜率,这样变成了矩形,然后只要二维树状数组就行了、

注意可能因为取余的原因,把一个平行四边形拆成两半

 1 #include<algorithm>
 2 #include<cstdio>
 3 #include<cmath>
 4 #include<cstring>
 5 #include<iostream>
 6 int len2,len,len4,n;
 7 int tr[2][2005][4005];
 8 int x[4000005],y[4000005];
 9 int lowbit(int X){
10     return (X)&(-X);
11 }
12 int read(){
13     int t=0,f=1;char ch=getchar();
14     while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
15     while ('0'<=ch&&ch<='9'){t=t*10+ch-'0';ch=getchar();}
16     return t*f;
17 }
18 void add(int k,int x,int y,int c){
19     x++;y++;
20     for (int i=x;i<=len2;i+=lowbit(i))
21      for (int j=y;j<=len4;j+=lowbit(j))
22       tr[k][i][j]+=c;
23 }
24 int sum(int k,int x,int y){
25     if (x<0||y<0) return 0;
26     x++;y++;
27     int ans=0;
28     if (x>len2) x=len2+1;
29     if (y>len4) y=len4+1;
30     for (int i=x;i;i-=lowbit(i))
31      for (int j=y;j;j-=lowbit(j))
32       ans+=tr[k][i][j];
33     return ans;
34 }
35 int sum(int k,int x1,int y1,int x2,int y2){
36     return sum(k,x2,y2)+sum(k,x1-1,y1-1)-sum(k,x2,y1-1)-sum(k,x1-1,y2);
37 }
38 int main(){
39     n=read();len=read();len2=len<<1;len4=len2<<1;
40     while (n--){
41         int opt=read();
42         if (opt==1){
43             int t=read(),c=read(),l=read(),r=read(),d=read();
44             x[c]=(t-d*l+len2)%len2;
45             y[c]=r-l;
46             add(0,x[c],y[c]+x[c],1);
47             add(1,x[c],y[c]-x[c]+len2,1);
48         }else
49         if (opt==2)
50         {
51             int t=read(),l=read(),r=read();
52             t%=len2;
53             int k=(r==len);
54             int ans=sum(0,t,l+t,r+t,len4)+sum(0,0,l+t-len2,r+t-len2-k,len4)
55             +sum(1,t-r+len2+k,l-t,len2,len4)+sum(1,t-r,l-t+len2,t-1,len4);
56             printf("%d\n",ans);
57         }else{
58             int t=read(),c=read();
59             add(0,x[c],y[c]+x[c],-1);
60             add(1,x[c],y[c]-x[c]+len2,-1);
61         }
62     }
63
64 }

转载于:https://www.cnblogs.com/qzqzgfy/p/5601555.html

BZOJ 1062 糖果雨相关推荐

  1. 【BZOJ 1062】 1062: [NOI2008]糖果雨 (二维树状数组)**

    1062: [NOI2008]糖果雨 Description 有一个美丽的童话:在天空的尽头有一个" 糖果国" ,这里大到摩天大厦,小到小花小草都是用糖果建造而成 的.更加神奇的是 ...

  2. 【BZOJ1062】糖果雨(NOI2008)-数形结合+二维树状数组

    测试地址:糖果雨 做法:本题需要用到数形结合+二维树状数组. 这题看上去非常没有思路,因此我们来一步一步整理一下思路. 首先,我们要发现线段的颜色互不相同,并且移动的速度相等,这就说明它们的运动是周期 ...

  3. 【NOI2008】 糖果雨

    题目描述 糖果雨 [问题描述] 有一个美丽的童话:在天空的尽头有一个"糖果国",这里大到摩天大厦,小 到小花小草都是用糖果建造而成的.更加神奇的是,天空中飘满了五颜六色的糖 果云, ...

  4. [NOI2008]糖果雨

    bzoj1062[Noi2008]糖果雨 首先给出的颜色没有用. 估计要用数据结构.而线段难以维护. 考虑把线段变成点 T是单增的. 所以询问的时候,存在的线段都可能贡献答案. 那些线段的位置如果可以 ...

  5. ★【树状数组】【NOI2008】糖果雨

    [问题描述] 有一个美丽的童话:在天空的尽头有一个"糖果国",这里大到摩天大厦,小到小花小草都是用糖果建造而成的.更加神奇的是,天空中飘满了五颜六色的糖果云,很快糖果雨密密麻麻从天 ...

  6. 1062: [NOI2008]糖果雨 - BZOJ

    题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1062 神题一个,直接讲思路了(全都是看别人的) 首先我们把一个云用一个平面上的点( ...

  7. bzoj 1062: [NOI2008]糖果雨

    高手 /**************************************************************Problem: 1062User: lxy8584099Langu ...

  8. BZOJ 1062: [NOI2008]糖果雨(二维树状数组)

    首先嘛,这道题是非同一般的恶心= = 然后首先膜拜一下CDQ大神ORZ在考场上A了这道题ORZ 这道题看到的话,我是先想把云朵化成在0s时的位置,但很容易发现这样只能单点查询而不能查询整段 结果只能膜 ...

  9. bzoj1062: [NOI2008]糖果雨

    又是一道神题 题解传送门:http://blog.sina.com.cn/s/blog_86942b1401015yln.html 代码完全抄袭某神,请无视掉 const int N = 1010, ...

最新文章

  1. 用Microsoft DirectX光线跟踪改善渲染质量
  2. Python培训之就业面试题分享
  3. MySQL 5.6--------SSL连接最佳实战
  4. linux——管理系统设备之磁盘的加密、加密磁盘的挂载及磁盘阵列、配额
  5. drill apache_使用Apache Drill深入研究当今的大数据
  6. Unity-基本函数用法
  7. 面试问题:Spring实现AOP的方式
  8. 201612-2 工资计算
  9. eclipse Maven搭建SSH框架
  10. Linux下更换jdk和配置环境变量
  11. 360换机 v2.12.5.9 官方安卓版
  12. yosemite java 6_Mac OS X Yosemite 安装Java6
  13. python调用百度云文字识别
  14. hadoop进阶---hadoop性能优化(一)---hdfs空间不足的管理优化
  15. STM32---c语言指针1
  16. 百万级PV高可用网站架构设计
  17. 咩小饬的造轮子之路(彩票篇)
  18. 计算机组成原理4小时速成:五大组成部分:运算器,控制器,存储器,输入设备输出设备
  19. 智能机器人-(一)常用传感器及其原理
  20. 技术体系构建_构建出色的技术简历的简单指南

热门文章

  1. Java软件开发中,常用的工具有哪些?
  2. 开课吧Java课堂:多线程如何同步?消息如何传递?
  3. VLOOKUP函数返回查询值左侧的数据
  4. Java网络编程从入门到精通 (9):使用isXxx方法判断地址类型
  5. Docker入门命令:开发人员版
  6. Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value:
  7. Python基础学习2--字符串
  8. python3.x的改进
  9. Swift - 19 - 字典的初始化
  10. Part I 1.介绍Lustre文件系统