wtclwtcl!!!
t3卡了乙個半小時寫不出來,結果聽評講是個逆序對(???)
t1 nkoj4866 和諧數
題目大意:乙個長度為n的序列,對於第i個數字,設左邊比它大的有x個,右邊比它大的有y個,若max(x, y) > 2 * min(x, y),則這個數不和諧。求數列中不和諧數字的總數。
解法:正序一遍樹狀陣列,倒序一遍樹狀陣列即可。
#include usingnamespace
std;
int a[100005], b[100005], c[100005], ans1[100005], ans2[100005
], n;
void modify(int x, int
p)int query(int
x)int
main()
sort(b + 1, b + n + 1
);
int tot = unique(b + 1, b + n + 1) - b - 1
;
for (int i = 1; i <= n; i++)
for (int i = 1; i <= n; i++)
memset(c,
0, sizeof
(c));
for (int i = n; i; i--)
int sum = 0
;
for (int i = 1; i <= n; i++)
printf("%d
", sum);
}
t2 nkoj4224 矩陣計數
題解:裸的二維樹狀陣列。
#include usingnamespace
std;
int a[305][305], c[305][305][105
], n, m;
void modify(int x, int y, int k, int
p) }
}int query(int x, int y, int
k) }
return
sum;
}int
main()
}int q; scanf("
%d", &q);
for (int i = 1, type, k; i <= q; i++)
else
}}
t3(訂正) nkoj4223 彩色方塊
題面:何老闆最近在玩一款叫「彩色方塊」的小遊戲,遊戲雖然簡單,但何老闆仍舊樂此不疲。
遊戲中有n個彩色方塊成一排,方塊的顏色用字母表示,給出目標排列,只要把它們排成跟目標一樣的排列,就算過關。每次操作只能交換相鄰兩個方塊。
給出一關遊戲,何老闆想知道,最少操作幾次就能過關,請你幫他計算最少所需的操作步數。
解法:用26個佇列給字母編號,然後求逆序對即可。
#include usingnamespace
std;
#define ll long long
const ll maxn = 1000005
; queue
q[120
];ll a[maxn], b[maxn], c[maxn], d[maxn], mark[maxn], nxt[maxn], head[maxn], n, ans;
#define lowbit(i) i & (-i)
void
modify(ll x, ll k)
ll querysum(ll x)
ll read()
main()
for (ll i = 1; i <= n; i++)
printf(
"%lld
", ans);
return0;
}
t4:nkoj4875 字首字首和
題目大意:單點修改,求字首和的字首和。
題解:就類似樹狀陣列區間修改,區間查詢的方式維護即可。
#include usingnamespace
std;
#define ll long longll a[
100005], c[100005], n, m, d1[100005], d2[100005
];#define lowbit(i) i & (-i)
void
modify(ll x, ll k)
ll querysum(ll x)
return sum1 -sum2;
}main()
string
ch;
while (m--)
else
}}
樹狀陣列總結
樹狀陣列的基本知識已經被各種大牛和菜鳥講到爛了,我就不多說了,下面給出基本操作的 假定原陣列為a 1.n 樹狀陣列b 1.n 考慮靈活性的需要,使用int a傳陣列。define lowbit x x x int sum int a,int x void update int a,int x,int...
樹狀陣列總結
樹狀陣列是對乙個陣列改變某個元素和求和比較實用的資料結構。兩中操作都是o logn 在解題過程中,我們有時需要維護乙個陣列的字首和s i a 1 a 2 a i 但是不難發現,如果我們修改了任意乙個a i s i s i 1 s n 都會發生變化。可以說,每次修改a i 後,調整字首和s在最壞情況下...
樹狀陣列總結
今天學習了一下樹狀陣列,做乙個簡單總結。樹狀陣列可分為兩種操作,1 修改單個點,統計區間和 一般為 向上修改 update1 向下統計 sum1 2 修改區間,統計單個點 一般為向下修改 update2 向上統計 sum2 主要模板如下 int c n int lowbit int x 用於確定區間...