3192 JLOI2013 刪除物品

2021-08-08 09:58:06 字數 1028 閱讀 4745

箱子再分配問題需要解決如下問題:

(1)一共有n個物品,堆成m堆。

(2)所有物品都是一樣的,但是它們有不同的優先順序。

(3)你只能夠移動某堆中位於頂端的物品。

(4)你可以把任意一堆中位於頂端的物品移動到其它某堆的頂端。若此物品是當前所有物品中優先順序最高的,可以直接將之刪除而不用移動。

(5)求出將所有物品刪除所需的最小步數。刪除操作不計入步數之中。

(6)只是乙個比較難解決的問題,這裡你只需要解決乙個比較簡單的版本:

不會有兩個物品有著相同的優先順序,且m=2

題解:神奇的題。

將第乙個串反過來和第二個串相連,例如樣例就是541273,這樣的話,如果要刪除乙個點就是求出這個點和上乙個刪除的點之間的距離,注意一開始是求第乙個串的開頭和最大點之間的距離。例如樣例一開始是求541273(1到7)

開乙個陣列pos[i]表示第i大的位置,然後用樹狀陣列求出字首和,每刪乙個點就是把這個點的權值變成0;

注意要開longlong。

#include#include#include#include#include#includeusing namespace std;

const int n=100005;

int n,m;

int a[n],b[n],tot=0;

int l,r,mid;

int pos[n*2];

struct nodes[n*2];

bool cmp(node x,node y)

int sum[n*2];

int getsum(int x)

return ans;

}long long ans=0;

void init(int x,int y)

}int main()

for(int i=1;i<=n+m;i++)

init(i,1);

for(int i=1;i<=n+m;i++)

printf("%lld",ans);

}

3192 JLOI2013 刪除物品

time limit 10 sec memory limit 128 mb submit 977 solved 558 submit status discuss 箱子再分配問題需要解決如下問題 1 一共有n個物品,堆成m堆。2 所有物品都是一樣的,但是它們有不同的優先順序。3 你只能夠移動某堆中位...

3192 JLOI2013 刪除物品

time limit 10 sec memory limit 128 mb submit 1366 solved 794 submit status discuss 箱子再分配問題需要解決如下問題 1 一共有n個物品,堆成m堆。2 所有物品都是一樣的,但是它們有不同的優先順序。3 你只能夠移動某堆中...

BZOJ3192 JLOI2013 刪除物品

原題位址 自己想的奇葩做法 對於乙個優先順序為x的物品,考察該物品下方優先順序大於x物品的優先順序被分成了多少個連續段 舉個例子,如x 4,該物品下方物品的優先順序有5,6,7,9,10,13,14,19,則段數為4 則該物品需要被移動的次數k 段數 2 優先順序為x 1的物品在該物品下方?1 0 ...