乙個只含數字的字串,q次操作,每次操作將第i位數字改為x,每次操作後,統計長度在[l, r]之間且首數字大於尾數字的子串的個數。
第一行乙個只含數字的字串;第二行3個整數q, l, r;
接下來q行,每行兩個整數i, x。
輸出q行,每行乙個整數,表示長度在[l, r]之間且首數字大於尾數字的子串的個數。示例1
5856052 2 4
1 64 2
78
設字串長度為n則:1 <= n <= 100000;
1 <= q <= 100000; 1 <= l <= r <= n; 1 <= i <= n; 0 <= x
<= 9;
題解:相當於求間隔距離在[l, r]之間的逆序對數。
因為所有數在[0,9]之間,所以可用 10 個樹狀陣列維護數字每種的字首和。
初始化求第一遍 ans 的時候,對於每個數考慮前面與該點的距離在[l,r]之間的所有點。
每次修改,減去當前位置的數對答案的影響,再加上更新後的數對答案的影響。
考慮前面和後面與該點的距離在[l,r]之間的所有點,更新 ans 即可。
時間複雜度:n*logn
樹狀陣列
#includeusing namespace std;
typedef long long ll;
const int maxn = 1e5+10;
char str[maxn];
int l,r,len;
struct bit
void init()
void update(int x,int pos,int val)
}bit;
int ask_left(int x,int pos) /// 統計在[pos-r+1,pos-l+1] 中有多少大於x的
int ask_right(int x,int pos,int len) /// 統計在[pos+l-1,pos+r-1] 中有多少個小於x的
int main()
// printf("%d\n",ans);
int pos,x;
while(q--)
}return 0;
}
線段樹
#includeusing namespace std;
typedef long long ll;
const int maxn = 1e5+10;
ll arr[maxn];
char str[maxn];
int l,r,len;
struct segtree
void push_up(int rt)
void build(ll arr,int l,int r,int rt)
int mid = (l + r) >> 1;
build(arr,l,mid,rt<<1);
build(arr,mid+1,r,rt<<1|1);
push_up(rt);
}void activate(int pos,ll val,int l,int r,int rt)
int mid = (l + r) >> 1;
if(pos <= mid) activate(pos,val,l,mid,rt<<1);
else activate(pos,val,mid+1,r,rt<<1|1);
push_up(rt);
}void update(int pos,ll val,int l,int r,int rt)
int mid = (l + r) >> 1;
if(pos <= mid) update(pos,val,l,mid,rt<<1);
else update(pos,val,mid+1,r,rt<<1|1);
push_up(rt);
}ll query(int ql,int qr,int l,int r,int rt)
}seg[10];
ll ask_left(int num,int pos)
res += temp;
}return res;
}ll ask_right(int num,int pos)
res += temp;
}return res;
}int main()
//printf("%lld\n",ans);
int pos,x;
while(q--)
}return 0;
}
Wannafly挑戰賽15 D 數字串 線段樹
乙個只含數字的字串,q次操作,每次操作將第i位數字改為x,每次操作後,統計長度在 l,r 之間且首數字大於尾數字的子串的個數。第一行乙個只含數字的字串 第二行3個整數q,l,r 接下來q行,每行兩個整數i,x。輸出q行,每行乙個整數,表示長度在 l,r 之間且首數字大於尾數字的子串的個數。題解 更改...
wannafly 挑戰賽9 D(卡特蘭數)
題目描述 wyf正試圖用乙個棧來構造一棵樹,現在他已經構造了n個元素作為樹的節點,只要將這n個元素依次入棧出棧就可以形成一棵樹了。當然,這個問題與樹並沒有關係,所以它叫做wyf的棧。每次你可以入棧乙個新元素或者當棧非空時出棧乙個元素,n個元素必須依次入棧,而wyf希望其中第m個元素入棧之後,棧中恰好...
Wannafly挑戰賽6 D 鎖
時間限制 c c 1秒,其他語言2秒 空間限制 c c 131072k,其他語言262144k 64bit io format lld 題目描述 106號房間共有n名居民,他們每人有乙個重要度。房間的門上可以裝若干把鎖。假設共有k把鎖,命名為1到k。每把鎖有一種對應的鑰匙,也用1到k表示。鑰匙可以複...