其实吧,这题,和UVA105一毛一样,可是这道题图好看了一点,啃啃,就提高+蓝了,可怜了我们的UVA105才普及黄;
来个链接呵呵
好吧进入正题QWQ
下面是贴代码时间。。
#include<bits/stdc++.h>
using namespace std;
int ans[10001],ls=0x7f7f7f,rs=-0x7f7f7f;
int main() {
std::ios::sync_with_stdio(false);
int l,r,h;
memset(ans,0,sizeof(ans));
while(cin>>l>>h>>r) {
ls=min(l,ls); rs=max(r,rs);
for(int i=l; i<r; i++) {
if(ans[i]<h) ans[i]=h;}}
for(int i=ls; i<rs; i++) {
if(ans[i]!=ans[i-1]) {
if(ans[i]==0) cout<<i<<" "<<0<<" ";
else cout<<i<<" "<<ans[i]<<" ";} }
cout<<rs<<" "<<0<<endl;
}
当然了既然思维难度和编程复杂度那么低。。时间也是大的可怜,,
14ms,达到了倒数,,,,
思路就是和hash表差不多,一下把10000拉开来,每有一个建筑就进行修改最大值(因为轮廓只看最大值)
分析一下后,神奇的发现,又不爆空间,更不炸时间,,
QAQQAQAQAQ
可怜我是冲着线段树点进来的,差点写了个nlogn的修改,,拜拜放着n的修改不看。。。我这是太弱了