zoukankan      html  css  js  c++  java
  • Rikka with Competition

    Rikka with Competition

    给出一个大小为n的集合({a_i}),每次从集合中随机挑出一对数(a_i,a_j),如果(|a_i-a_j|>K),那么从集合中删掉较小的那个数字,否则随机删掉一个数字,显然会有一个数字保留到最后,现在询问能够有可能保留到最后一个数字的数字个数,(nleq 10^5)

    序列无序,不妨排个序构成一个序列,显然序列最后一个元素必然有机会留到最后,此时考虑倒数第二个元素,如果它和最后一个元素的差的绝对值不超过K那么也有机会保留到最后。

    于是我们得到一个做法,从最后一个元素往前扫描,如果它与后一个元素的差超过了K就break掉,那么这个元素后的所有元素都有机会保留到最后。

    参考代码:

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #define il inline
    #define ri register
    #define Size 105000
    using namespace std;
    int a[Size];
    il void read(int&);
    int main(){
    	int lsy,n,k;read(lsy);
    	while(lsy--){
    		read(n),read(k);
    		for(int i(1);i<=n;++i)
    			read(a[i]);
    		sort(a+1,a+n+1);
    		int ans(1);
    		for(int i(n-1);i;--i)
    			if(a[i+1]-a[i]<=k)
    				++ans;else break;
    		printf("%d
    ",ans);
    	}
    	return 0;
    }
    il void read(int &x){
    	x^=x;ri char c;while(c=getchar(),c<'0'||c>'9');
    	while(c>='0'&&c<='9')x=(x<<1)+(x<<3)+(c^48),c=getchar();
    }
    
  • 相关阅读:
    Spring 事务管理
    016 sleep,wait,yield,join区别
    013 GC机制
    011 CountDownLatch,CyclicBarrier和Semaphore
    012 public等关键字可见性
    010 JVM类加载
    009 JVM内存结构以及GC机制
    008 BlockingQueue理解
    python3 正则表达式
    python django
  • 原文地址:https://www.cnblogs.com/a1b3c7d9/p/11408483.html
Copyright © 2011-2022 走看看