51nod 1562 玻璃切割
来源:互联网 发布:浏览器向后端提交数据 编辑:程序博客网 时间:2024/05/01 13:30
之前连续好几天没怎么睡,还好没得道成仙。。。ddl是第一生产力。。。
找了道水题做下。
倒序处理所有答案,再输出。
用可以用并查集进行合并区间操作(一开始想写伪链表的,发现好像不行)。不断更新横纵最大值即可。
#include<bits/stdc++.h>using namespace std;void read(int &a){ char ch;while(!((ch=getchar())>='0')&&(ch<='9')); a=ch-'0';while(((ch=getchar())>='0')&&(ch<='9'))a*=10,a+=ch-'0';}inline void prin_d(int x){ if (x > 9) { prin_d(x / 10); } putchar(x % 10 + '0'); return ;}const int MAXN=200200;char op[MAXN];int a[MAXN],hcut[MAXN],vcut[MAXN],hseg[MAXN],vseg[MAXN],hnode[MAXN],vnode[MAXN],vfa[MAXN],hfa[MAXN];long long ans[MAXN];int vfindfa(int x){if(vfa[x]==x)return x;return vfa[x]=vfindfa(vfa[x]);}int hfindfa(int x){if(hfa[x]==x)return x;return hfa[x]=hfindfa(hfa[x]);}int main(){int v,h,n,i,hmx,vmx,hcnt,vcnt,bef,index;while(~scanf("%d%d%d",&v,&h,&n)){memset(hcut,0,sizeof(hcut));memset(vcut,0,sizeof(vcut));hcut[h]=1;vcut[v]=1;for(i=0;i<n;i++){scanf(" %c %d",&op[i],&a[i]);if(op[i]=='H')hcut[a[i]]=1;elsevcut[a[i]]=1;}hmx=vmx=hcnt=vcnt=bef=0;for(i=1;i<=h;i++){if(hcut[i]){hseg[hcnt++]=i-bef;hmx=max(hmx,hseg[hcnt-1]);bef=i;hnode[i]=hcnt-1;}}bef=0;for(i=1;i<=v;i++){if(vcut[i]){vseg[vcnt++]=i-bef;vmx=max(vmx,vseg[vcnt-1]);bef=i;vnode[i]=vcnt-1;}}for(i=0;i<hcnt;i++)hfa[i]=i;for(i=0;i<vcnt;i++)vfa[i]=i;for(i=n-1;i>=0;i--){ans[i]=(long long)hmx*vmx;if(op[i]=='H'){index=hfindfa(hnode[a[i]]);hfa[hnode[a[i]]+1]=index;hseg[index]+=hseg[hnode[a[i]]+1];hmx=max(hmx,hseg[index]);}else{index=vfindfa(vnode[a[i]]);vfa[vnode[a[i]]+1]=index;vseg[index]+=vseg[vnode[a[i]]+1];vmx=max(vmx,vseg[index]);}}for(i=0;i<n;i++)printf("%lld\n",ans[i]);}}
0 0
- 51Nod-1562-玻璃切割
- 51Nod-1562-玻璃切割
- 51nod 1562 玻璃切割
- 51Nod 1562 玻璃切割 (set)
- 51nod 1562 玻璃切割 【线段树】
- 51nod-1562:玻璃切割(O(n)模拟)
- 51nod 1562 玻璃切割(线段树区间合并)
- 51nod 1562玻璃切割(降维,反向处理)
- 51nod 1562 玻璃切割 (set+离线处理)
- 51nod 1562 玻璃切割 (STL map+一点点的思考)
- 玻璃切割
- 51nod1562-模拟&好题&链表|线段树-玻璃切割
- 51Nod
- 51Nod
- 51nod
- 51Nod
- 51Nod
- 51Nod
- Linux网络配置
- 栈和队列的基本操作(分顺序和链式,5种基本操作有创建,判空,判满,入,出)
- 关于僵尸进程和孤儿进程
- iOS几种直播流协议的区别
- 设置App标题栏与手机状态栏背景颜色一致
- 51nod 1562 玻璃切割
- PHP使用JSON
- 类与类,类与接口,接口与接口的关系
- 占位符 %1$s %1$d
- servlet过滤器简化版
- LDAP网络用户创建账户及认证脚本
- GDOI2017总结
- (转)机器学习算法比较
- 分层与DAO