标签:text ace font content panel mit hoc bsp ons
hihocoder-1852-数值的F值
我们定义一个数组A = [A1, A2, ... AN]的F值F(A)是:
将A从小到大排序得到数组B = [B1, B2, ... BN],F(A) = (B2 - B1)2 + (B3 - B2)2 + ... + (BN - BN-1)2
现在给定一个长度为N的数组A,然后依次对A进行M项操作。每项操作是以下2种之一:
INS X:插入一个值为X的元素
DEL X:删除所有值为X的元素
请你计算每次操作之后的F(A)
第一行包含两个整数N和M。
第二行包含N个整数A1, A2, ... AN。
以下M行每行一个操作。
对于50%的数据,1 ≤ N, M ≤ 1000
对于100%的数据,1 ≤ N, M ≤ 100000 1 ≤ X, Ai ≤ 100000
对于每一项操作输出操作之后的F(A),每个一行。
5 3 1 2 4 5 6 INS 3 INS 4 DEL 4
5 5 7
题解:
利用 set 来装载数据,因为 set 内部的实现是 binary search tree,
针对插入的元素,可以找前一个值和后一个值进行操作。
#include <cstdio> #include <iostream> #include <set> using namespace std; const int MAXN = 100000 + 10; int n,m, num[MAXN], val_map[MAXN]; int cmp(const void *a, const void *b) { return (*(int *)a - *(int *)b); } int main(){ scanf("%d %d", &n, &m); set<int> t; for(int i=0; i<n; ++i) { scanf("%d", &num[i]); t.insert(num[i]); } qsort(num, n, sizeof(int), cmp); long long sum = 0; for(int i=1; i<n; ++i) { sum += 1LL * (num[i] - num[i-1])*(num[i] - num[i-1]); } int x; char ch[5]; for(int i=0; i<m; ++i) { scanf("%s %d", ch, &x); if(ch[0] == ‘I‘) { if(t.find(x) == t.end()){ t.insert(x); set<int>::iterator x_id = t.find(x); set<int>::iterator xe_id = x_id; xe_id++; set<int>::iterator xb_id = x_id; xb_id--; if(x_id == t.begin() && xe_id != t.end()) { sum += 1LL * ((*xe_id) - (*x_id)) * ((*xe_id) - (*x_id)); }else if(x_id != t.begin()){ sum += 1LL * ((*x_id) - (*xb_id))*((*x_id) - (*xb_id)); if(xe_id != t.end()) { sum += 1LL * ((*xe_id) - (*x_id)) * ((*xe_id) - (*x_id)); sum -= 1LL * ((*xb_id) - (*xe_id))*((*xb_id) - (*xe_id)); } } } }else{ if(t.find(x) != t.end()){ set<int>::iterator x_id = t.find(x); set<int>::iterator xe_id = x_id; xe_id++; set<int>::iterator xb_id = x_id; xb_id--; if(x_id != t.begin()){ sum -= ((*x_id) - (*xb_id))*((*x_id) - (*xb_id)); } if(xe_id != t.end()) { sum -= ((*x_id) - (*xe_id))*((*x_id) - (*xe_id)); } if(x_id != t.begin() && xe_id != t.end()) { sum += ((*xb_id) - (*xe_id))*((*xb_id) - (*xe_id)); } t.erase(x); } } printf("%lld\n", sum ); } return 0; }
标签:text ace font content panel mit hoc bsp ons
原文地址:https://www.cnblogs.com/zhang-yd/p/9821765.html