zoukankan      html  css  js  c++  java
  • 【CF1119D】Frets On Fire

    题目大意:给定一个长度为 n 的序列,给定一个恒定的 w,求解 $$sumlimits_{i=1}^{n}min{d[i],w}$$

    题解:学会了对最小值和式的快速处理。
    若在下标的角度考虑,显然每次询问都要 (O(n)),复杂度爆炸。由于每次都是与一个常数比较,从值域角度考虑,等价于对小于 w 的数求和再加上大于 w 的数的个数乘以 w。小于 w 的数的个数可以通过排序后二分快速得出,再利用前缀和预处理,即可在 (O(logn)) 时间内求得问题的答案。

    代码如下

    #include <bits/stdc++.h>
    #define fi first
    #define se second
    #define pb push_back
    #define mp make_pair
    #define all(x) x.begin(),x.end()
    #define cls(a,b) memset(a,b,sizeof(a))
    using namespace std;
    typedef long long ll;
    typedef pair<int,int> P;
    const int dx[]={0,1,0,-1};
    const int dy[]={1,0,-1,0};
    const int mod=1e9+7;
    const int inf=0x3f3f3f3f;
    const int maxn=1e5+10;
    const double eps=1e-6;
    inline ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
    inline ll sqr(ll x){return x*x;}
    inline ll fpow(ll a,ll b,ll c){ll ret=1%c;for(;b;b>>=1,a=a*a%c)if(b&1)ret=ret*a%c;return ret;}
    inline ll read(){
    	ll x=0,f=1;char ch;
    	do{ch=getchar();if(ch=='-')f=-1;}while(!isdigit(ch));
    	do{x=x*10+ch-'0';ch=getchar();}while(isdigit(ch));
    	return f*x;
    }
    /*------------------------------------------------------------*/
    
    int n,q;
    ll a[maxn],d[maxn],s[maxn];
    
    void read_and_parse(){
    	n=read();
    	for(int i=1;i<=n;i++)a[i]=read();
    	sort(a+1,a+n+1);
    	for(int i=1;i<n;i++)d[i]=a[i+1]-a[i];
    	d[n]=2e18,sort(d+1,d+n);
    	for(int i=1;i<=n;i++)s[i]=s[i-1]+d[i];
    }
    void solve(){
    	q=read();
    	while(q--){
    		ll l=read(),r=read(),len=r-l+1;
    		int i=lower_bound(d+1,d+n+1,len)-d-1;
    		printf("%lld%c",s[i]+(n-i)*len,!q?'
    ':' ');
    	}
    }
    int main(){
    	read_and_parse();
    	solve();
    	return 0;
    }
    
  • 相关阅读:
    [HDU 2553] N皇后问题
    [ZOJ 3063] Draw Something Cheat
    [ZOJ 3609] Modular Inverse
    [ZOJ 3610] Yet Another Story of Rock-paper-scissors
    [ZOJ 3607] Lazier Salesgirl
    [ZOJ 3710] Friends
    [ZOJ 3076] Break Standard Weight
    智慧树自动刷课代码
    Attention
    sizeof总结
  • 原文地址:https://www.cnblogs.com/wzj-xhjbk/p/10664150.html
Copyright © 2011-2022 走看看