終於過了這道樹狀陣列的題,雖然最後不得不看一下題解,fighting!!!
題意說,兩牛交流所需的音量為|xi-xj|*max(vi,vj),求所有牛兩兩交流所需音量的總和
總的來說,就是計算對於每一頭加入的牛,算出vi*(xi*比xi小的牛數量-比xi小的牛的x座標值的和+比xi大的牛的x座標值的和-xi*比xi大的牛數量),然後加入到音量總和中
首先,把牛按耳背程度從小到大排序;
其次,依次加入每一頭牛,對於每一頭牛,算出vi*(xi*比xi小的牛數量-比xi小的牛的x座標值的和+比xi大的牛的x座標值的和-xi*比xi大的牛數量)(因為該牛比前面的牛的v要大)
#include#include#include#includeusing namespace std;
struct cow
;cow cow[20010];
long long count_cow[20010]; //第乙個樹狀陣列,記錄牛的數量和;
long long distance_cow[20010]; //第二個樹狀陣列,記錄牛的距離和;
int n;
bool cmp(cow a,cow b)
return s;
}void add(long long *bit,int i,long long x)
}int main()
{ //freopen("1990.txt","r",stdin);
while(scanf("%d",&n)!=eof)
{memset(count_cow,0,sizeof(count_cow));
memset(distance_cow,0,sizeof(distance_cow));
long long sum_volume=0;
for(int i=0;i
POJ 3349 第一道雜湊
題目在 其實在面試中雜湊表是經常被問到的乙個題目,不過實戰程式設計中運用的卻很少,因為很少有效率瓶頸。這個題目就一道典型的可以用雜湊表可以加速的題目。題目大意 每片雪花有 6 個角長度的值,對於不同的雪花而言,這些值可能被反轉,並且開頭的長度未必是一致的 例如 1 2 3 4 5 6和 4 3 2 ...
我學python的第一道題目
這是一道非常簡單但卻十分有意義的題目,它是我學python的開端。當時我正在圖書館奮力學習 偷偷打遊戲 突然電腦qq頭像跳動,是乙個女生問我一道python題目,沒錯就是這道題目。可是我雖然是學計算機的,但我沒學過python,只學了計算機導論 就是一本介紹計算機發展史和一些理論的教材 然後我花了乙...
演算法 我的第一道演算法題
第一次刷leetcode 的演算法題.超時了,要換方法.題目 兩數之和 注意題目要求 返回 0,1 這種形式的。暴力法求解兩數之和 當陣列內的元素過多時,該演算法執行超時。給定乙個整數陣列和乙個目標值,找出陣列中和為目標值的兩個數。deftwosum nums,target l len nums f...