1 条题解

  • 1

    思路

    二分,枚举每个方向为1的小怪,当且仅当方向为0的小怪的位置满足以下条件可以和aia_i相遇:aixjai+2×ta_i \le x_j \le a_i+2 \times t 很显然,可以用排序+二分。

    code

    #include<bits/stdc++.h>
    using namespace std;
    vector<int>a,b;
    long long n,m;
    string t;
    long long tmp;
    long long ans;
    int main(){
    	cin>>n>>m>>t;
    	for(int i=0;i<n;i++){
    		cin>>tmp;
    		if(t[i]=='0')
    			b.push_back(tmp);
    		else
    			a.push_back(tmp);
    	}
    	sort(a.begin(),a.end());
    	sort(b.begin(),b.end());
    	for(int i=0;i<a.size();i++){
    		int x=upper_bound(b.begin(),b.end(),a[i])-b.begin();
    		int y=upper_bound(b.begin(),b.end(),a[i]+2*m)-b.begin();
    		ans+=y-x;
    	}
    	cout<<ans;
    	return 0;
    }
    

    进食后人

    本题不开long long见祖宗,还有数据点很善,暴力一分不给(考场上试过)。

    • 1

    信息

    ID
    902
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    (无)
    递交数
    6
    已通过
    1
    上传者