手動模擬。。
#include #include #include #include #include #include #include #include using namespace std; #define N 10100 #define inf 1000000010 mapx,y; struct X{ int x,y; bool operator<(const X&a)const{ if(a.x==x)return a.y>y; return a.x>x; } X(int a=0,int b=0):x(a),y(b){} }tmpx; struct Y{ int x,y; bool operator<(const Y&a)const{ if(a.y==y)return a.x>x; return a.y>y; } Y(int a=0,int b=0):x(a),y(b){} }tmpy; multisetsety; multiset::iterator py, ty; multisetsetx; multiset::iterator px, tx; int main(){ int n, m, u, v; while(scanf("%d %d",&n,&m),n+m){ x.clear(); y.clear(); setx.clear(); sety.clear(); while(n--){ scanf("%d %d",&u,&v); x[u]++; y[v]++; setx.insert(X(u,v)); sety.insert(Y(u,v)); } while(m--){ scanf("%d %d",&u,&v); if(u==0){ if(x.find(v)==x.end()){puts("0");continue;} printf("%d\n",x.find(v)->second); x.erase(v); for(px=setx.lower_bound(X(v,-inf));px!=setx.end();) { tmpx = *px; if(tmpx.x!=v)break; py = sety.lower_bound(Y(tmpx.x,tmpx.y)); sety.erase(py); y[tmpx.y]--; tx = px; px++; setx.erase(tx); } } else { if(y.find(v)==y.end()){puts("0");continue;} printf("%d\n",y.find(v)->second); y.erase(v); for(py=sety.lower_bound(Y(-inf,v));py!=sety.end();) { tmpy = *py; if(tmpy.y!=v)break; px = setx.lower_bound(X(tmpy.x,tmpy.y)); setx.erase(px); x[tmpy.x]--; ty = py; py++; sety.erase(ty); } } } puts(""); } return 0; }
The ``Hanoi Towers puzzle
了解程度 :目前為止還只是找到了可以添加邏輯代碼的地方
基本數據結構:鏈表(list),數據結構list基本數據結構
//specialcontainer.cpp [cpp
CoreText 學習筆記 一、Coretext 與
希爾排序 (摘自wiki) 一個更好理解的希爾排序實現