标签:class c++ com ret min def with cin 去掉
[http://codeforces.com/contest/1075/problem/C]
有个1e9*1e9的棋盘(1,1)位置在左下角也就是车这枚棋子的位置,然后有n个在某一列后面划一列,m个从x1到x2在第y行划线,然后这个棋子不能穿过画的线
问你最少需要去掉多少线条是棋子能移动到第1e9行
其实这个问题只需要统计m个操作中有多少是x1==1开始的,以及终点为x2==1e9的
因为不是从1开始的总可以绕过,说的不清楚,看代码自己领悟吧
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int shu[N],k1[N];
int main(){
int n,m,i,j;
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
//freopen("in.txt","r",stdin);
while(cin>>n>>m){
int ans=0;
for(i=0;i<n;i++)
cin>>shu[i];
sort(shu,shu+n);
int t=0;
for(i=0;i<m;i++){
int x1,x2,y;
cin>>x1>>x2>>y;
if(x1==1)
k1[t++]=x2;
if(x2==1000000000) ans++;
}
sort(k1,k1+t);
ans+=n;
i=0,j=0;
int cnt=t;
while(i<n){
while(j<t&&k1[j]<shu[i]){
--cnt;
++j;
}
ans=min(ans,cnt+i);
if(ans==0) break;
++i;
}
cout<<ans<<endl;
}
return 0;
}
标签:class c++ com ret min def with cin 去掉
原文地址:https://www.cnblogs.com/mch5201314/p/9939783.html