給定一維座標下的n個點,以及每個點的權值,有m次查詢,每次將查詢的x點上的權值修改為離x最近的k個點權值的平均和,有相同取序號小的。最後輸出修改值的總和。
先離線處理出每個x點對應的所有最近的k個點,然後模擬即可
#include #include #include #include #include #include #include #include #include using namespace std;
#define rd(x) scanf("%d",&x)
#define rd2(x,y) scanf("%d%d",&x,&y)
#define rd3(x,y,z) scanf("%d%d%d",&x,&y,&z)
#define clr0(x) memset(x,0,sizeof(x))
typedef long long ll;
const int maxn = 100005;
int n,m,k;
int g[maxn][11];
double v[maxn];
struct nodep[maxn];
bool cmp(node a,node b)
bool lorr(int x,int l,int r)
void getk(int x)
void init ()
sort(p , p + n, cmp);
for (int i = 0; i < n; i++)
getk(i);
}int main()
printf("%.6lf\n",ans);
}return 0;
}
hdu 4288 線段樹 離線處理
hdu 4288 題意 給你類似乙個公升序的set結構 add就是加入乙個數 del就是刪除乙個數 sum就是把所有 5 3的位置的數求和 這題我們怎麼入手呢?以前做過一道類似的樹狀陣列開55個的題 這個題其實大同小異 就是對sum陣列表示 5的值我們開個sum 5 那麼你既然是公升序的 我每次ad...
HDU 3333 線段樹 離線處理
hdu 3333 線段樹 離線處理 問你給定區間內的不重複的數字的和,如1 1 1 3 4 區間1到2就是1,區間1到5就是8。這種線段樹只能離線來寫,離線的方法是按照查詢區間的右端點來排序,然後這道題目的資料範圍較大需要離散化簡單處理一下,然後對於輸入的每個點來說,順序走下去。然後如果當前點之前出...
hdu5441 離線處理 並查集
題意 給你n個城市m個邊,每條邊有一權值,表示路費 如果給出一筆錢,錢大於路費則表示該條路可以通過 通過這條路 則代表 點 a,b 和 b,a 是合法的點,合法的對數為2 k次查詢,每次查詢給出一筆錢,求該筆錢能走過的所有點的合法對數 對輸入的邊按權值排序,對輸入的錢數按權值排序 對第一筆錢,把權值...