我是靠谱客的博主 舒服钥匙,最近开发中收集的这篇文章主要介绍HDU - 6681,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目链接: HDU - 6681


显然这是一个平面图,我们可以根据欧拉公式:V - E + F = 2

假设射线之间交点个数为x,有n条线段。

那么V = 4 + x + 2*n , E = 4 + 2*x + 2*n

所以:F = 2 + E - V = x + 1

所以我们维护交点个数即可。

AC代码:

#pragma GCC optimize("-Ofast","-funroll-all-loops")
#include<bits/stdc++.h>
//#define int long long
using namespace std;
const int N=1e5+10,M=N*200;
int n,m,k,lc[M],rc[M],lazy[M],cnt,rt; char op[5]; long long res;
struct node{int x,y; char ch;}t[N];
inline void push_down(int p){lazy[lc[p]]+=lazy[p],lazy[rc[p]]+=lazy[p],lazy[p]=0;}
#define mid (l+r>>1)
void change(int &p,int l,int r,int ql,int qr){
    if(l==ql&&r==qr){lazy[p]++; return ;}
    if(!lc[p])    lc[p]=++cnt;    if(!rc[p])    rc[p]=++cnt;
    push_down(p);
    if(qr<=mid)    change(lc[p],l,mid,ql,qr);
    else if(ql>mid)    change(rc[p],mid+1,r,ql,qr);
    else change(lc[p],l,mid,ql,mid),change(rc[p],mid+1,r,mid+1,qr);
}
int ask(int p,int l,int r,int x){
    if(l==r)    return lazy[p];
    if(!lc[p])    lc[p]=++cnt;    if(!rc[p])    rc[p]=++cnt;
    push_down(p);
    if(x<=mid)    return ask(lc[p],l,mid,x);
    else    return ask(rc[p],mid+1,r,x);
}
#undef mid
inline void init(){for(int i=1;i<=cnt;i++) lc[i]=rc[i]=lazy[i]=0; rt=cnt=1;}
inline void calc(){
	init();	sort(t+1,t+1+k,[](node a,node b){return a.y<b.y;});
	for(int i=1;i<=k;i++){
		if(t[i].ch=='L')	change(rt,1,n,1,t[i].x);
		else if(t[i].ch=='R')	change(rt,1,n,t[i].x,n);
		else if(t[i].ch=='D')	res+=ask(rt,1,n,t[i].x);
	}
	init();
	for(int i=k;i>=1;i--){
		if(t[i].ch=='L')	change(rt,1,n,1,t[i].x);
		else if(t[i].ch=='R')	change(rt,1,n,t[i].x,n);
		else if(t[i].ch=='U')	res+=ask(rt,1,n,t[i].x);
	}
	printf("%lldn",res+1);
}
inline void solve(){
    scanf("%d %d %d",&n,&m,&k); res=0; 
    for(int i=1,x,y;i<=k;i++)    scanf("%d %d %s",&x,&y,op),t[i]={x,y,op[0]};
    calc();
}
signed main(){
    int T; cin>>T; while(T--) solve();
    return 0;
}

最后

以上就是舒服钥匙为你收集整理的HDU - 6681的全部内容,希望文章能够帮你解决HDU - 6681所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(87)

评论列表共有 0 条评论

立即
投稿
返回
顶部