博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[hdu5200]离线+标记
阅读量:4617 次
发布时间:2019-06-09

本文共 2840 字,大约阅读时间需要 9 分钟。

思路:按顺序处理,新建一堆然后向左右合并,不过巧妙地用了标记数组来记录和统计答案。

1 #pragma comment(linker, "/STACK:10240000,10240000")  2   3 #include 
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 #include
11 #include
12 #include
13 #include
14 #include
15 #include
16 17 using namespace std; 18 19 #define mem0(a) memset(a, 0, sizeof(a)) 20 #define lson l, m, rt << 1 21 #define rson m + 1, r, rt << 1 | 1 22 #define define_m int m = (l + r) >> 1 23 #define rep(a, b) for(int a = 0; a < b; a++) 24 #define all(a) (a).begin(), (a).end() 25 #define lowbit(x) ((x) & (-(x))) 26 #define constructInt4(name, a, b, c, d) name(int a = 0, int b = 0, int c = 0, int d = 0): a(a), b(b), c(c), d(d) {} 27 #define constructInt3(name, a, b, c) name(int a = 0, int b = 0, int c = 0): a(a), b(b), c(c) {} 28 #define constructInt2(name, a, b) name(int a = 0, int b = 0): a(a), b(b) {} 29 #define pc(a) putchar(a) 30 #define ps(a) puts(a) 31 32 typedef double db; 33 typedef long long LL; 34 typedef pair
pii; 35 typedef multiset
msi; 36 typedef multiset
::iterator msii; 37 typedef set
si; 38 typedef set
::iterator sii; 39 typedef vector
vi; 40 41 const int dx[8] = { 1, 0, -1, 0, 1, 1, -1, -1}; 42 const int dy[8] = { 0, -1, 0, 1, -1, 1, 1, -1}; 43 const int maxn = 1e6 + 7; 44 const int maxm = 1e5 + 7; 45 const int maxv = 1e7 + 7; 46 const int max_val = 1e6 + 7; 47 const int MD = 1e9 +7; 48 const int INF = 1e9 + 7; 49 const double PI = acos(-1.0); 50 const double eps = 1e-10; 51 52 inline int ReadInt() { 53 char c = getchar(); 54 while(!isdigit(c)) c = getchar(); 55 56 int x = 0; 57 while(isdigit(c)) { 58 x = x * 10 + c - '0'; 59 c = getchar(); 60 } 61 return x; 62 } 63 64 inline void WriteInt(int i) { 65 int p = 0; 66 static int buf[10]; 67 if(i == 0) buf[p++] = 0; 68 else while(i) { 69 buf[p++] = i % 10; 70 i /= 10; 71 } 72 for(int j = p - 1; j >= 0; j--) putchar('0' + buf[j]); 73 } 74 75 76 bool cmp(const pii &a, const pii &b) { 77 return a.first > b.first; 78 } 79 80 int main() { 81 //freopen("in.txt", "r", stdin); 82 int n, q; 83 while (cin >> n >> q) { 84 vector
a(n), b(q); 85 vector
out(q); 86 rep(i, n) { 87 a[i].first = ReadInt(); 88 a[i].second = i; 89 } 90 rep(i, q) { 91 b[i].first = ReadInt(); 92 b[i].second = i; 93 } 94 sort(all(a), cmp); 95 sort(all(b), cmp); 96 vector
vis(n); 97 int now = 0, ans = 0; 98 rep(i, q) { 99 while (now < n && a[now].first > b[i].first) {100 int pos = a[now].second;101 vis[pos] = true;102 ans++;103 if (pos && vis[pos - 1]) ans--;104 if (pos < n - 1 && vis[pos + 1]) ans--;105 now++;106 }107 out[b[i].second] = ans;108 }109 rep(i, q) {110 WriteInt(out[i]);111 pc('\n');112 }113 }114 return 0;115 }
View Code

 

转载于:https://www.cnblogs.com/jklongint/p/4418987.html

你可能感兴趣的文章
【转】【Python】Python中的__init__.py与模块导入(from import 找不到模块的问题)
查看>>
学习wavenet_vocoder之环境配置
查看>>
常用Maven命令
查看>>
Docker启动mysql的坑2
查看>>
j2ee爬坑行之二 servlet
查看>>
JAVA基础入门(JDK、eclipse下载安装)
查看>>
最基础的applet运用--在applet上画线
查看>>
并不对劲的hdu4777
查看>>
linux使用rz、sz快速上传、下载文件
查看>>
判断数字的正则表达式
查看>>
DOC常用命令(转)
查看>>
php写一个判断是否有cookie的脚本
查看>>
Mac配置Fiddler抓包工具
查看>>
转:Java并发集合
查看>>
Word截图PNG,并压缩图片大小
查看>>
Python项目对接CAS方案
查看>>
mysql产生随机数
查看>>
编程风格
查看>>
熟悉常用的Linux命令
查看>>
易之 - 我是个大师(2014年3月6日)
查看>>