zoukankan      html  css  js  c++  java
  • [luoguP1110] [ZJOI2007]报表统计(set暴力)

    传送门

    两个multiset

    一个记录相邻元素的差,一个放所有的元素

    2个数组

    val[i]记录第i个的值,last[i]记录第i个最后插入的数的值

    然后乱搞

    #include <set>
    #include <cstdio>
    #include <iostream>
    #define N 1001000
    #define abs(x) ((x) < 0 ? -(x) : (x))
    #define min(x, y) ((x) < (y) ? (x) : (y))
    #define max(x, y) ((x) > (y) ? (x) : (y))
    
    using namespace std;
    
    int n, m, ans = 1e9;
    int val[N], last[N];
    multiset <int> s, ss;
    multiset <int> :: iterator it;
    
    inline int read()
    {
    	int x = 0, f = 1;
    	char ch = getchar();
    	for(; !isdigit(ch); ch = getchar()) if(ch == '-') f = -1;
    	for(; isdigit(ch); ch = getchar()) x = (x << 1) + (x << 3) + ch - '0';
    	return x * f;
    }
    
    inline void set_insert(int x)
    {
    	s.insert(x);
    	it = s.lower_bound(x);
    	if(it != s.begin())
    		it--, ans = min(ans, abs(*it - x)), it++;
    	if((++it) != s.end()) ans = min(ans, abs(*it - x));
    }
    
    inline void insert(int x, int y)
    {
    	if(x != n)
    		ss.erase(ss.lower_bound(abs(last[x] - val[x + 1])));
    	ss.insert(abs(last[x] - y));
    	if(x != n) ss.insert(abs(val[x + 1] - y));
    	last[x] = y;
    	set_insert(y);
    }
    
    int main()
    {
    	int i, x, y;
    	char s[21];
    	n = read();
    	m = read();
    	for(i = 1; i <= n; i++)
    	{
    		last[i] = val[i] = read();
    		set_insert(val[i]);
    		if(i > 1) ss.insert(abs(val[i] - val[i - 1]));
    	}
    	for(i = 1; i <= m; i++)
    	{
    		scanf("%s", s);
    		if(s[4] == 'R')
    		{
    			x = read();
    			y = read();
    			insert(x, y);
    		}
    		if(s[4] == 'G') printf("%d
    ", *ss.begin());
    		if(s[4] == 'S') printf("%d
    ", ans);
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    利用三层交换机实现VLAN间路由
    利用单臂路由实现VLAN间路由
    理解Hybrid接口的应用
    配置NAT
    OSPF 与ACL综合实验
    OSPF单区域配置
    RSTP基础配置
    配置基于全局地址池的DHCP
    静态路由及默认路由配置
    利用三层交换机实现VLAN间路由
  • 原文地址:https://www.cnblogs.com/zhenghaotian/p/8298582.html
Copyright © 2011-2022 走看看