12.19

还有不到两周就跨年了?😱😱😱

快考试了,还有八天,最近要把时间多放在whk上了。

今天学了 Tarjan (其实是网课,问谁没学就去,我去划水了),但是怎么这么卡啊???

我草,说一句话卡三秒,然后先讲了个DFS序,合着您倒着学是吧😨😨😨

没怎么听,水。

然后借着一机房有谷交了几道谷题。

然后润回来了。

还在调前几天的题啊,是降雨量

谁能教教

Update 21:23

终于完了

Code
#include<bits/stdc++.h>
using namespace std;
#define ls p<<1
#define rs p<<1|1
#define mid ((l+r)>>1)
const int N=6*1e5;
const int INF=1000000007;
int a[N],b[N];
int n,m,lb,fb,hb,x,y,maxn;
inline int read()
{
    int f=1,x=0;char ch;
    while(ch<'0'||ch>'9'){ch=getchar();if(ch=='-')f=-1;};
    while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();};
    return f*x;
}
struct tree
{
	int l,r;
	int sum;
    int vis;
}t[4*N+2];
int vis[N];
void bulid(int p,int l,int r)
{
	t[p].l=l,t[p].r=r;
	if(l==r)
	{
		t[p].sum=b[l];
		t[p].vis=vis[l];
		return;
	}
	bulid(ls,l,mid);
	bulid(rs,mid+1,r);
    t[p].sum=max(t[ls].sum,t[rs].sum);
	t[p].vis=t[ls].vis | t[rs].vis;
}
int find_sum(int p,int x,int y)
{
    int l=t[p].l,r=t[p].r;
	if(x<=l && y>=r)
    {
        hb=hb | t[p].vis;
        return t[p].sum;
    }
    int ans=0;
	if(x<=mid) ans=max(find_sum(ls,x,y),ans);
    if(y>mid) ans=max(find_sum(rs,x,y),ans);
	return ans;
}
void f()
{
    cout<<"false"<<'\n';
}
void may()
{
    cout<<"maybe"<<'\n';
}
void tr()
{
    cout<<"true"<<'\n';
    memset()
}
signed main()
{
	cin>>n;
	for(int i=1;i<=n;++i)
		{
            a[i]=read(),b[i]=read();
            if(a[i]-a[i-1]!=1 && i!=1) vis[i]=1;
        }
	bulid(1,1,n);
	cin>>m;
    for(int i=1;i<=m;++i)
    {
        fb=lb=hb=0;
        x=read(),y=read();
        if(x>=y) {f();continue;}
        if(y<=a[1] || x>=a[n]) {may();continue;}
        int px=lower_bound(a+1,a+n+1,x)-a;
        int py=lower_bound(a+1,a+n+1,y)-a;
        if(a[px]!=x) fb=1;
        if(a[py]!=y) lb=1;
        if(fb && lb) {may();continue;}
        if(!fb && a[px+1]-a[px]!=1) hb=1;
        if(!lb && a[py]-a[py-1]!=1) hb=1;
        if(fb && lb) maxn=find_sum(1,px,py-1);
        else if(!fb && lb) maxn=find_sum(1,px+1,py-1);
        else if(fb && !lb) maxn=find_sum(1,px,py-1);
        else if(!fb && !lb) maxn=find_sum(1,px+1,py-1);
        if(!fb && !lb && !hb && b[px]>=b[py] && maxn<b[py]) {tr();continue;}
        if(!fb && !lb && hb && b[px]>=b[py] && maxn<b[py]) {may();continue;}
        if(!fb && lb && maxn<b[px]) {may();continue;}
        if(fb && !lb && maxn<b[py]) {may();continue;}
        f();
    }
}

什么屎山

近期不想写线段树了555

posted @ 2023-12-19 20:08  HS_xh  阅读(36)  评论(3)    收藏  举报
init();