codevs 3625
1 #include 2codeusing
namespace
std;
3int x[11111], y[11111];4
intmain()
5
codeforces round #512 (div. 2, based on technocup 2019 elimination round 1) f. putting boxes together
題解真的又寫的非常清楚了……
自己在想的時候,確實想到肯定有乙個塊不動,其他的動,我們只需要去移那些貢獻小的,我猜是最重的那個,但自己寫了組樣例就推翻了。
題解講,用$s(l,r)$表示將索引$(l,r)$物品移動一步的花費,不動的那塊應該滿足$s(l,k-1)≤ \frac$,$s(l,k)> \frac$。q神說是熟知的帶權中位數問題。
求$k$的過程,可以用二分+樹狀陣列解決。
求得$k$後,因為$k$是固定不動的,如果$ik$類似。
真的是慎用除法,不然都不知道怎麼死的……
#include usingcodenamespace
std;
typedef
long
long
ll;const ll mod = 1e9 + 7
;const
int maxn = 2e5 + 50
;ll a[maxn], w[maxn];
ll c[maxn];
intn, q;
void add1(int
x, ll v)
}ll query1(
intx)
return
res;
}ll calc(
int l, int
r)ll d[maxn];
void add2(int
x, ll v)
}ll query2(
intx)
return
res;
}ll calc2(
int l, int
r)int
main()
else
if(calc(l, mid - 1) * 2ll > s && calc(l, mid) * 2ll >s)
else
}///得到k後,開始計算花費
ll ans = (calc(l, k - 1) % mod * a[k] % mod - calc2(l, k - 1) + mod) %mod;
ans = (ans + (calc2(k + 1, r) - calc(k + 1, r) % mod * a[k] % mod + mod) % mod) %mod;
printf(
"%lld\n
", ans);
}else
}int ccc = 0
;
return0;
}
sgu 114
poj 1723 soldiers
poj 1160
zoj 1196
中位數及帶權中位數問題
資訊學競賽總是時不時與數學產生微妙的關係,中位數及帶權中位數問題有時常常成為解題的關鍵,今日有時間,所以梳理一下。先從一到簡單的題看起 士兵站隊問題 在乙個劃分成網格的操場上,n個士兵散亂地站在網格點上。網格點由整數座標 x,y 表示。士兵們可以沿網格邊上 下 左 右移動一步,但在同一時刻任一網格點...
帶權中位數
話說在3085年,外星人打算來入侵地球,這個訊息被我國的情報部門秘密截獲,於是便打算聯絡世界各個國家,一 起研究商量對策。由於每個國家所需派的技術員人數不同,所以目前無法決定到底要在哪個國家設定個研究所進行 研究,幸運的是所有國家都在一條直線上,現在知道每個國家與我國的距離和該國的研究員人數。請你為...
中位數的中位數
參照王曉東的演算法設計 中位數的中位數,即將一串數分成n段,求其排好序了的中間那個數,再把這些所有中位數再求一次中位數。for int i 0 i r p 4 5 i 找中位數的中位數,r p 4即上面所說的n 5 int x lineselect a,p,p r p 4 5,r p 4 10 線性...