一个坑-卡常

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<vector>
#include<iostream>
#include<ctime>
#define ls t[x].son[0]
#define rs t[x].son[1]
#define maxn 500010
#define inf 2000021225
using namespace std;
inline int read() {
    char ch = getchar(); int x = 0, f = 1;
    while(ch < '0' || ch > '9') {
        if(ch == '-') f = -1;
        ch = getchar();
    } while('0' <= ch && ch <= '9') {
        x = x * 10 + ch - '0';
        ch = getchar();
    } return x * f;
}
inline void write(int x)
{
     if(x<0) putchar('-'),x=-x;
     if(x>9) write(x/10);
     putchar(x%10+'0');
}
struct node{int val,son[2],fa;};
struct tree
{
    node t[maxn<<2];int rt,cnt,mn;//bool in[maxn<<2];
    //inline void pushup(int x){t[x].sz=t[rs].sz+t[ls].sz+1;}
    inline void rotate(int x)
    {
        register int f=t[x].fa,gf=t[f].fa;
        register int k=(t[f].son[1]==x),p=1^k;
        t[gf].son[t[gf].son[1]==f]=x;t[x].fa=gf;
        if(t[x].son[p])	t[t[x].son[p]].fa=f;t[f].son[k]=t[x].son[p];
        t[x].son[p]=f;t[f].fa=x;//pushup(f);pushup(x);
    }
    inline void splay(int x,int goal)
    {
    	if(!x)	return;
        while(t[x].fa!=goal)
        {
            int f=t[x].fa,gf=t[f].fa;
            if(gf!=goal)
                (t[gf].son[1]==f)^(t[f].son[1]==x)?rotate(x):rotate(f);
            rotate(x);
        }
        if(!goal)	rt=x;
    }
    int lower(int val)
    {
        register int x=rt,ans=-inf;
        while(x){if(t[x].val==val)	return val;if(t[x].val<val)	ans=max(ans,t[x].val),x=rs;else	x=ls;}
        return ans;
    }
    int upper(int val)
    {
        register int x=rt,ans=inf;
        while(x){if(t[x].val==val)	return val;if(t[x].val>val)	ans=min(ans,t[x].val),x=ls;else	x=rs;}
        return ans;
    }
    inline void insert(int val)
    {
        register int x=rt,lt=x;
        if(!rt){x=++cnt;t[x].val=val;rt=x;return;}
        if(val!=inf&&val!=-inf)
		{
			int lw=lower(val),up=upper(val);
			mn=min(mn,(val-lw<0)?lw-val:val-lw),mn=min(mn,(up-val<0)?val-up:up-val);
		}
        while(x){lt=x;x=t[x].son[t[x].val<=val];}
        x=lt;int k=(t[x].val<=val);t[x].son[k]=++cnt;lt=cnt;
        t[lt].val=val;t[lt].fa=x;splay(lt,0);//in[lt]=1;
    }
    int find(int val)
    {
        int x=rt;
        while(x)
        {
            if(t[x].val==val)	return x;
            x=t[x].son[t[x].val<val];
        }
        splay(x,0);
        return x;
    }
    inline void del(int val)
    {
        register int x=find(val);splay(x,0);
        if(!ls&&!rs){rt=0;return;}
        if(!ls||!rs){int k=!ls;x=t[x].son[k];t[rt].son[k]=t[x].fa=0;rt=x;return;}
        x=ls;while(rs)	x=rs;splay(x,rt);//in[rt]=0;
        rs=t[rt].son[1];t[t[rt].son[1]].fa=x;t[rt].son[0]=t[rt].son[1]=0;rt=x;t[x].fa=0;
    }
    int querymin(){int x=rt;while(ls)	x=ls;splay(x,0);return t[x].val;}
    //void dfs(int x){if(!x)	return;dfs(ls);write(t[x].val);dfs(rs);}
    //inline void cnm(){int x=rand()%cnt;if(in[x])	splay(x,0);}
}spaly,splay;// spaly -> original splay -> minus
vector<int> v[maxn];
int main()
{
    register int n,i,q,x,p,val,bf;char ch[20];//srand(time(0));
    //freopen("8.in","r",stdin);
    //freopen("qaq.out","w",stdout);
    n=read();q=read();
    spaly.insert(-inf);spaly.insert(inf);spaly.mn=inf;
    for(i=1;i<=n;++i)
    {
        x=read();
        v[i].push_back(x);spaly.insert(x);
        if(i>1)	splay.insert(abs(v[i][0]-v[i-1][0]));
    }
    while(q--)
    {
        scanf("%s",ch);
        //if(!rand()%100)	splay.cnm(),spaly.cnm();
        if(ch[0]=='I')
        {
            p=read();val=read();
            bf=v[p][v[p].end()-v[p].begin()-1];
            if(p<n)	splay.del((v[p+1][0]-bf<0)?bf-v[p+1][0]:v[p+1][0]-bf),splay.insert((v[p+1][0]-val<0)?val-v[p+1][0]:v[p+1][0]-val);
            splay.insert((val-bf<0)?bf-val:val-bf);spaly.insert(val);v[p].push_back(val);
        }
        else if(ch[4]=='S')		write(spaly.mn),printf("\n");
        else	write(splay.querymin()),printf("\n");
    }
    return 0;
}
/**
3 5
5 3 1
INSERT 2 9
MIN_SORT_GAP
INSERT 2 6
MIN_GAP
MIN_SORT_GAP
*/

以上代码来自bzoj1058

-luogu+O2通过

-luogu TLE 从T2个卡到T1个

-bzoj TLE

-bzoj+手动开O2 TLE

卡了一晚上常...

(玄学cnm优化也没用...

等你卡常技术够优秀了滚回来搞这玩意吧...

转载于:https://www.cnblogs.com/hanyuweining/p/10321979.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,wkhtmltopdf可能会遇到卡住的情况。具体来说,安装wkhtmltopdf时可能需要使用apt-get install或yum install命令进行安装。在使用过程中,由于各种需求以及人员变动,可能会遇到各种bug,并需要解决。另外,可以使用命令"wkhtmltopdf http://www.baidu.com/ d:1.pdf"来进行测试。如果wkhtmltopdf卡住,可能是因为各种原因,比如网络问题、软件配置问题等。为了解决这个问题,可以尝试以下几种方法: 1. 检查网络连接:确保网络连接正常,可以尝试使用其他网页进行测试,以确定是否是网络问题导致的卡住。 2. 检查软件配置:确认wkhtmltopdf的安装是否正确并且配置正确。可以检查相关的依赖库是否都已安装,并尝试重新安装或更新wkhtmltopdf。 3. 查看日志文件:查看wkhtmltopdf的日志文件,通常位于/var/log/wkhtmltopdf目录下。日志文件中可能包含有关卡住原因的详细信息。 4. 使用参数调整:尝试使用不同的参数进行操作,例如增加超时时间或者调整页面加载方式,以减少卡住的可能性。 5. 寻求帮助:如果以上方法无法解决问题,可以寻求wkhtmltopdf的官方支持或者在相关的技术社区中提问,以获取更多的帮助和解决方案。 请注意,以上方法只是一些常见的解决问题的方法,具体的解决方案可能因个人环境和问题而异。建议根据具体情况选择合适的方法来解决wkhtmltopdf卡住的问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [使用wkhtmltopdf将html转为pdf](https://blog.csdn.net/u010588262/article/details/54617450)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [记一次wkhtmltopdf填经历](https://blog.csdn.net/qq_20867249/article/details/84643252)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值