HDU5200 Trees (離線處理)
題目連結:
http://acm.hdu.edu.cn/showproblem.php?pid=5200
題意:
每次去掉高度小於q的樹,每次輸出剩下的塊數。
分析:
我們對高度從高到低進行排序,對要去掉的高度從低到高進行排序。
因此前面去掉的在後面一定會去掉,因可以離線處理,節省時間,
然後需要開一個輔助空間,記錄這棵樹去沒有去掉。
程式碼如下:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <set>
#include <map>
using namespace std;
const int maxn = 50010;
int vis[maxn],ans[maxn];
struct tree{
int h,id;
bool operator <(const struct tree &tmp) const{
return h > tmp.h;
}
}p[maxn];
struct query{
int h,id;
bool operator <(const struct query &tmp) const{
return h<tmp.h;
}
}q[maxn];
inline int S(){
int ret=0,ok=0;
char c;
while((c=getchar()))
{
if(c>='0'&&c<='9')
ret=ret*10+c-'0',ok=1;
else if(ok)
return ret;
}
return ret;
}
int main(){
int n,m;
while(~scanf("%d%d",&n,&m)){
for(int i=0;i<n;i++){
p[i].h=S();
p[i].id=i+1;
}
sort(p,p+n);
for(int i=0;i<m;i++){
q[i].h=S();
q[i].id=i+1;
}
sort(q,q+m);
int tot = 0;
memset(vis,0,sizeof(vis));
for(int i = 0,j = m-1;j>=0;j--){
for(;i<n;i++){
if(p[i].h<=q[j].h)
break;
vis[p[i].id]=1;
if(!vis[p[i].id-1]&&!vis[p[i].id+1]) tot++;
else if(vis[p[i].id-1]&&vis[p[i].id+1]) tot--;
}
ans[q[j].id]=tot;
}
for(int i=0;i<m;i++)
printf("%d\n",ans[i+1]);
}
return 0;
}
相關文章
- 印表機離線如何處理 印表機離線的方法
- hdu4288 離線處理線段樹
- 離線資料處理-DataSet物件物件
- Spark SQL:實現日誌離線批處理SparkSQL
- HDU5139 Formula (找規律+離線處理)ORM
- 通過Python處理AndroidAPIDoc離線訪問PythonAndroidAPI
- win10印表機離線怎麼處理 win10取消印表機離線狀態怎麼操作Win10
- 【大資料】離線批處理計算MapReduce | 複習筆記大資料筆記
- win10共享印表機顯示離線怎麼處理_win10印表機老是離線如何修復Win10
- Blazor WebAssembly 漸進式 Web 應用程式 (PWA) 離線處理資料BlazorWeb
- oracle高水位線處理Oracle
- netty系列之:分離websocket處理器NettyWeb
- Trees and Segments
- win10 net3.5離線安裝失敗怎麼處理_win10 net3.5離線安裝失敗如何操作Win10
- bzoj3626: [LNOI2014]LCA(離線處理+樹鏈剖分)
- 處理方塊之間的連線線
- MySQL的事務處理及隔離級別MySql
- postgresql連線失敗如何處理SQL
- windows 處理bat連線本地mysqlWindowsBATMySql
- 行連線的處理方式指引
- 前後端分離下前端許可權處理後端前端
- 【scikit-learn基礎】--『預處理』之 離散化
- 高通處理器CPU效能路線圖
- MIPS 架構流水線處理器架構
- sql server連線排序衝突處理SQLServer排序
- Oracle delete 高水位線處理問題Oracledelete
- SSH 連線緩慢問題處理
- asp連線Mysql及編碼處理MySql
- 多表連線SQL優化如何處理SQL優化
- linux如何處理多連線請求?Linux
- JDBC連線批量處理資料入庫JDBC
- 資料庫連線異常處理思路資料庫
- 無線網路技巧:WiFi故障處理心得WiFi
- 如何用SWING處理劃線,大學題
- 印表機離線了怎麼連線 印表機離線的連線方法
- 無線路由器經常掉線的處理辦法路由器
- [DB2]離線備份與離線還原DB2
- 離子膜電解法處理染料廢水的實驗方案