hdu 1754
2016-05-01 15:12
246 查看
注意时间,时间!
咳咳
这道题,非常好,中文题!
题目:戳
用了两种方法(吗?) ,woc wa了nnnnnn次,中午还和哀家拍程序。真是感叹测试数据的水啊!!【【人生以如此艰难
Ps:对拍请慎重!
常规&好用的线段树:
把上一篇的区间求和改成区间最大值
第二种非常不好用,也不推荐用的 树状数组【【真的不推荐
写求和用树状数组比较好,max还是线段树大人吧。。
好久没有写签名档了
吾等大义毫无阴霾!
咳咳
这道题,非常好,中文题!
题目:戳
用了两种方法(吗?) ,woc wa了nnnnnn次,中午还和哀家拍程序。真是感叹测试数据的水啊!!【【人生以如此艰难
Ps:对拍请慎重!
常规&好用的线段树:
把上一篇的区间求和改成区间最大值
#include<cstdio> #include<algorithm> #include<cstring> //by mars_ch using namespace std; int in[1000001] ; void modify(int a, int b, int l, int r, int num) { int m = (l+r)/2 ; if (l == r) { in[num] = b; return; } if (a <= m) modify(a, b, l, m, num*2); else modify(a, b, m+1, r, num*2+1); in[num] = max(in[num*2], in[num*2+1]); } int q(int a, int b, int l, int r, int num) { int m = (l + r) / 2, a1=0, a2=0; if (a <=l && b>= r) return in[num]; if(a<=m) a1=q(a,b,l,m,num*2); /*关于这里,朕认为朕写的是对的,但是哀家用铁一般的事实告诉朕不用取max-> ->(really?) 辣就是,你取max也没问题。就像这样:a1=max(a1,q(a,b,l,m,num*2));*/ if(b>m) a2=q(a,b,m+1,r,num*2+1); return max(a1,a2); } int main () { int n,m,x,y,temp; char op,jy; while (scanf("%d%d",&n,&m)!=EOF) { for (int i=1;i<=n;i++) scanf("%d",&temp),modify(i,temp,1,n,1); while(m--) { scanf("%c%c%d%d",&jy,&op,&x,&y); if (op == 'U') modify(x,y,1,n,1); else printf("%d\n",q(x,y,1,n,1)); } } return 0; }
第二种非常不好用,也不推荐用的 树状数组【【真的不推荐
#include<cstdio> #include<algorithm> #include<cstring> using namespace std; int n,m,num[200010], tr[200010]; //num 数组是原数 int lowbit(int x){return x & -x;} void u(int a, int b){ int i, j; num[a] = b; for (i = a; i <= n; i+=lowbit(i)) { tr[i] = num[i]; for (j = 1; j < lowbit(i);j*=2) tr[i] = max(tr[i], tr[i-j]); } } int q(int a, int b){ int ans = num[b]; while (b>= a){ if (b-lowbit(b)+1>=a) ans=max(ans,tr[b]), b-= lowbit(b); else ans = max(ans,num[b]),b--; } return ans; } int main () { int a,b; char op,jy; while (scanf ("%d%d",&n,&m) != EOF) { memset(tr,0,sizeof(tr)); for (int i = 1; i <= n; i++) scanf ("%d",&a), u(i,a); while (m--) { scanf ("%c%c%d%d",&jy,&op,&a, &b); if (op == 'U') u(a, b); else printf ("%d\n",q(a,b)) ; } } }
写求和用树状数组比较好,max还是线段树大人吧。。
好久没有写签名档了
吾等大义毫无阴霾!
相关文章推荐
- 【HDU 5366】The mook jong 详解
- 【HDU 2136】Largest prime factor 详细图解
- 【HDU 1568】Fibonacci 数学公式 详解
- HDU 1568
- HDU1290
- HDU1568(Fobonacci公式)
- HDU ACM Step 2.2.2 Joseph(约瑟夫环问题)
- HDU 1405
- HDU 1297
- hdu 1205
- hdu 2087
- hdu 1016
- HDU 4898 The Revenge of the Princess’ Knight ( 2014 Multi-University Training Contest 4 )
- HDU 5592 ZYB's Premutation 线段树(查找动态区间第K大)
- HDU 5240 Exam (好水的题)
- HDU5237 Base64 大模拟
- HDU 1000
- HDU 1001
- HDU 1016 Prime Ring Problem
- HDU 1017 A Mathematical Curiosity