NOI2003 文字編輯器

2022-03-27 04:14:47 字數 1098 閱讀 1697

題目

發現這樣一句話就會導致\(t\)

ch[m][0]=++m;
並不是很知道為什麼,可能這是某種未定義行為在不同編譯器下會有不同後果?

至於這道題就很簡單了,幾個有關游標位置的操作就用乙個變數模擬就好了

插入的話把這個位置轉出來構造一棵完美\(splay\)插入就好了

刪除直接轉出區間斷開的父親的鏈結

輸出直接轉出區間中序遍歷

**

#include#include#include#include#define maxn 2100005

#define re register

char opt[15],s[maxn],val[maxn];

int n,root,pos,m,len;

int fa[maxn],ch[maxn][2],sz[maxn];

inline void update(int x)

inline void rotate(int x)

inline void splay(int x,int goal)

if(!goal) root=x;

}inline int kth(int x)

}void dfs(int x)

int build(int x,int y,int f)

int mid=x+y>>1,rt=++m;

val[rt]=s[mid];fa[rt]=f;

ch[rt][0]=build(x,mid-1,rt),ch[rt][1]=build(mid+1,y,rt);update(rt);

return rt;

}int main()

int aa=kth(pos),bb=kth(pos+1);

splay(aa,0),splay(bb,aa);

int t=ch[root][1],rt=build(1,len,t);

ch[t][0]=rt,update(t),splay(t,0);

} if(opt[0]=='d')

if(opt[0]=='g')

} return 0;

}

NOI2003 文字編輯器

很久很久以前,dos3.xdos3.xdos3.x 的程式設計師們開始對 edlinedlinedlin 感到厭倦。於是,人們開始紛紛改用自己寫的文字編輯器 多年之後,出於偶然的機會,小明找到了當時的乙個編輯軟體。進行了一些簡單的測試後,小明驚奇地發現 那個軟體每秒能夠進行上萬次編輯操作 當然,你不...

cogs 330 NOI2003 文字編輯器

輸入檔案 editor2003.in輸出檔案 editor2003.out簡單對比 時間限制 2 s 記憶體限制 128 mb 問題描述 很久很久以前,dos3.x的程式設計師們開始對edlin感到厭倦。於是,人們開始紛紛改用自己寫的文字編輯器 多年之後,出於偶然的機會,小明找到了當時的乙個編輯軟體...

題解 P4008 NOI2003 文字編輯器

link 在 insert 操作中可能存在換行符,你需要忽略掉它們,但是保證所有的字元的 ascii 碼在 32 126 內。保證 insert 操作插入的總長度不超過 2 個。保證游標不會移到非法位置,保證刪除,查詢的字元存在。發現有區間插入,區間刪除,考慮用 splay 維護。用乙個變數維護當前...