-博主很菜,实在话,代码很丑,记录一下,勿喷
我的白菜代码:
#include <iostream>
using namespace std;
int main()
{
int n,k,t,xl,yd,xr,yu;
cin>>n>>k>>t>>xl>>yd>>xr>>yu;
//总人数,大于等于k判定为逗留,此人路径点总数目,左下点,右上点
int px,py,douliunum=0,passnum=0;
for(int i=0;i<n;i++)
{
int pass=0;
int flag=0;
for(int j=0;j<t;j++)
{
cin>>px>>py;
if(flag>=0)//这里花费了很多时间
{
if(px>=xl && px<=xr && py>=yd && py<=yu )
{
pass++;
flag++;
if(flag>=k)
{
douliunum++;
// cout<<"j is "<<j<<endl<<"douliunum is "<<douliunum<<endl;
flag=-1;
//这里不能用break,我查这个bug查了很久呜呜呜
//如第一个样例,j=1时,douliunum=1,再break,跳出了里层的第一次for循环
//但第一个人的数据还在输入!!
//然后第一个人的j=2的路径点就变成了第二个人的第一个路径点了
}
}
else
flag=0;
}
}
if(pass)
{
passnum++;
//cout<<"i is"<<i<<endl<<"passnum is "<<passnum<<endl;
}
}
cout<<passnum<<endl<<douliunum;
return 0;
}
总结:
- break和continue又双叒叕不记得,我太菜啦,记性还不好
break是跳出最近的for,while
continue是跳出这一次的循环(比如i=3,遇到continue,就跳到i=4,不管i=3时候的所有运算了 - 查bug太慢了,因为使用break一直没搞懂哪里有问题,鹅鹅鹅,下次一定要记住,这种情况不能用break啊啊啊啊
- 暂时无