CCF-202009-2风险人群筛查

-博主很菜,实在话,代码很丑,记录一下,勿喷

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我的白菜代码:

#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;
}

总结:

  1. break和continue又双叒叕不记得,我太菜啦,记性还不好
    break是跳出最近的for,while
    continue是跳出这一次的循环(比如i=3,遇到continue,就跳到i=4,不管i=3时候的所有运算了
  2. 查bug太慢了,因为使用break一直没搞懂哪里有问题,鹅鹅鹅,下次一定要记住,这种情况不能用break啊啊啊啊
  3. 暂时无
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值