难?我都切掉了……
各大教材有些好不好
by __OccDreamer__ @ 2019-08-08 16:01:30
```cpp
#include<bits/stdc++.h> //相当于万能头文件~( ̄▽ ̄)~
using namespace std;
struct xyq{
int t,v,s;
};
xyq a[1005],b[1005];
bool first[2005]={0};
int la=1,lb=1; //这里把i和j命名为la和lb。
int main(){
int n,m,nowt,nowa,nowb,sum=0,i;
bool can;
cin>>n>>m;
a[0].s=0;
for(i=1;i<=n;i++){
cin>>a[i].v>>a[i].t;
a[i].s=a[i-1].s+a[i].v*a[i].t;
a[i].t+=a[i-1].t;
}
b[0].s=0;
for(i=1;i<=m;i++){
cin>>b[i].v>>b[i].t;
b[i].s=b[i-1].s+b[i].v*b[i].t;
b[i].t+=b[i-1].t;
}
for(i=1;i<=n+m;i++){ //在这里为了方便,把计算和处理一起写了。
if(a[la].t<b[lb].t&&la<=n||lb>m){
nowt=a[la].t-b[lb-1].t; //温馨提示:记得-1,毕竟已经走的路程是上一个,但其他的不用减,因为是目前的速度和时间。
nowa=a[la].s;
nowb=b[lb-1].s+b[lb].v*nowt;
la++;
}else{
nowt=b[lb].t-a[la-1].t;
nowa=a[la-1].s+a[la].v*nowt;
nowb=b[lb].s;
lb++;
}
if(nowa==nowb){
first[i]=first[i-1];
continue;
}
first[i]=(nowa>nowb); //nowa>nowb是一个判断语句,如果判断成功,就是1,反正是0。这只是为了方便。
if(first[i]!=first[i-1]&&i!=1){ //如果是1就不要判断。
sum++;
}
}
cout<<sum;
return 0;
}
```
by xh39 @ 2019-08-08 16:07:16
我发的题解
by xh39 @ 2019-08-08 16:07:24
我已经切了QWQ
by stone_juice石汁 @ 2019-08-08 16:08:45