hdu1556 分块水题
来源:互联网 发布:淘宝网严重违规b48 编辑:程序博客网 时间:2024/05/12 18:30
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1556
中文题面就不说意思了,很明显用树状数组或者线段树都可以解决,现在使用分块做
判断一下a和b是不是在同一个块里就行了
#include <iostream>#include <string.h>#include <stdlib.h>#include <stdio.h>#include <algorithm>#include <cstdio>#include <time.h>#include <queue>#include <set>#include <map>#include <stack>#include <math.h>//#include <bits/stdc++.h>#define ll long long#define int64 long long#define mem(x,y) memset(x,y,sizeof(x))#define ull unsigned long long#define pb push_back#define INF 0x3f3f3f3f#define lson l, mid, rt<<1#define rson mid+1, r, rt<<1|1#define pi 3.141592653589793238462#define stdio std::ios::sync_with_stdio(false)using namespace std;inline bool nextDouble(double &num) { char in; double Dec = 0.1; bool IsN = false, IsD = false; in = getchar(); if (in == EOF) return false; while (in != '-' && in != '.' && (in < '0' || in > '9')) in = getchar(); if (in == '-') { IsN = true; num = 0; } else if (in == '.') { IsD = true; num = 0; } else num = in - '0'; if (!IsD) { while (in = getchar(), in >= '0' && in <= '9') { num *= 10; num += in - '0'; } } if (in != '.') { if (IsN) num = -num; return true; } else { while (in = getchar(), in >= '0' && in <= '9') { num += Dec * (in - '0'); Dec *= 0.1; } } if (IsN) num = -num; return true;}inline bool nextInt(int &num) { char in; bool IsN = false; in = getchar(); if (in == EOF) return false; while (in != '-' && (in < '0' || in > '9')) in = getchar(); if (in == '-') { IsN = true; num = 0; } else num = in - '0'; while (in = getchar(), in >= '0' && in <= '9') { num *= 10, num += in - '0'; } if (IsN) num = -num; return true;}inline bool nextLong(ll &num) { char in; bool IsN = false; in = getchar(); if (in == EOF) return false; while (in != '-' && (in < '0' || in > '9')) in = getchar(); if (in == '-') { IsN = true; num = 0; } else num = in - '0'; while (in = getchar(), in >= '0' && in <= '9') { num *= 10, num += in - '0'; } if (IsN) num = -num; return true;}const int maxn = 1e5 + 5;const int maxm = 1e3 + 5;const int mod = 1e9 + 7;const int seed = 10007;const double eps = 1e-6;int n, m;int a[maxn], lazy[maxm];int main() { stdio; while (cin >> n && n != 0) { int x, y; int block = static_cast<int>(sqrt(n) + eps); for (int i = 0; i < n; i++) a[i] = 0; for (int i = 0; i < n / block + 1; i++) lazy[i] = 0; for (int i = 0; i < n; i++) { cin >> x >> y; x--; y--; int xb = x / block; int yb = y / block; if (xb == yb) { for (int i = x; i <= y; i++) { a[i]++; } } else { for (int i = x; i < (x / block + 1)*block; i++) { a[i]++; } for (int i = x / block + 1; i < y / block; i++) { lazy[i]++; } for (int i = y / block * block; i <= y; i++) { a[i]++; } } } for (int i = 0; i < n; i++) { cout << a[i] + lazy[i / block]; if (i == n - 1) cout << endl; else cout << " "; } } return 0;}
阅读全文
0 0
- hdu1556 分块水题
- 分块の基础,(例题)HDU1556
- Hdu1556 Color the ball [分块][树状数组]
- hdu1556
- hdu1556
- hdu1556
- HDU1556
- hdu1556
- hdu1556
- hdu1556
- HDU1556
- hdu1556
- HDU1556
- hdu1556
- HDU1556
- hdu1556 Color the ball 线段树,成段更新水题
- hdu1556——树状数组水题练习(区间更新单点求和)
- 【BZOJ2957】楼房重建 分块水题
- java开发_""和null的区别
- springAop
- Hbase 基础 (待完善)
- HTML <a> 标签的 target 属性
- ConcurrentHashMap总结
- hdu1556 分块水题
- Android自定义权限
- 嵌入式系统学习——S3C2451之linux驱动led
- 分享一个自己写的使用dubbo泛化机制+接口编程的消费客户端jar包
- 查看oracle版本
- leetcode654: Maximum Binary Tree
- python 实现网络传输
- linux 笔记(一)(虚拟机安装、磁盘分区、linux安装)
- Android中模拟点击软件的实现原理探究