hdu 4883
来源:互联网 发布:义隆单片机c语言 编辑:程序博客网 时间:2024/06/05 10:43
#include <iostream>#include <cstdio>using namespace std;const int MAX=100010;struct Line { int left; int right; int cnt; //延迟标记}a[MAX];int n,m,l,r; //n长度,m线段数int sum;//函数中的num是节点编号//构建void Build(int l, int r, int num) { a[num].left = l; a[num].right = r; a[num].cnt = 0; if(l==r) return ; int mid = (a[num].left + a[num].right)/2; Build(l, mid, num*2); Build(mid+1, r, num*2+1);}//查询void Query(int l, int r, int num) { if(a[num].cnt!=0) { sum += a[num].cnt*(r-l+1); } if(a[num].left == a[num].right) return ; int mid = (a[num].left + a[num].right)/2; if(r<=mid) Query(l, r, num*2); else if(l>mid) Query(l, r, num*2+1); else { Query(l, mid, num*2); Query(mid+1, r, num*2+1); }}//更新void Change(int l, int r, int num, int add) { if(l==a[num].left && r==a[num].right) { a[num].cnt+=add; return ; } if(a[num].left == a[num].right) return ; int mid = (a[num].left + a[num].right)/2; if(r<=mid) Change(l, r, num*2, add); else if(l>mid) Change(l, r, num*2+1, add); else { Change(l, mid, num*2, add); Change(mid+1, r, num*2+1, add); }}int main(){ // freopen("in","r",stdin); // freopen("out","w",stdout); int ans,n,m,t,i,x,y,add,a1,a2,a3,a4; scanf("%d",&t); while( t-- ) { Build(0,1440,1); scanf("%d",&m); while( m-- ){ scanf("%d %d:%d %d:%d",&add,&a1,&a2,&a3,&a4); a1=60*a1+a2; a2=60*a3+a4; Change(a1,a2-1,1,add); } ans=0; for(i=0;i<=1440;i++){ sum=0; Query(i,i,1); ans=(ans>sum?ans:sum); } printf("%d\n",ans); } return 0;}
0 0
- hdu 4883
- hdu 4883
- hdu 4883
- hdu 4883
- hdu 4883 区间选点
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- hdu
- HDU
- Hdu
- hdu
- HDU - 1757 A Simple Math Problem (构造矩阵)
- KVO的概述与使用方法
- 基于Andoird 4.2.2的Account同步框架源代码学习——同步发起端
- C++ Set常用用法
- 基于直方图的特征-----经典的SIFT特征
- hdu 4883
- 图像处理与计算机视觉 基础、经典以及最近发展
- Android中RelativeLayout各个属性的含义
- long long 格式化
- easyUI表单校验扩展
- 代码创建布局约束
- 23个设计模式的简明教程(CSDN)
- Android中去掉或更改标题栏TitleBar,theme的更改
- your project contains error(s) please fix them before running your application的处理方法