题目 :7.信号覆盖 - 蓝桥云课 (lanqiao.cn)
时间:2024/2/13
模拟算法我的理解就是将贪心那些算法触及不到的生活问题抽象成为数学问题之后通过计算机的代码去实现。个人感觉题目变化比较大,需要灵活的思维(也有可能是我比较笨的原因吧)
像这个题目就是将题目抽象为这个点是不是在圆里面。然后去统计点的数目。其中卡我一会的就是题目他要用到一个圆的公式,就是(x-a)*(y-b)=r*r当小于等于时就在圆里面了
也还好难度不是太大。(我好笨,这都想不到QWQ)
上代码
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main()
{
int w,h,n,r,num=0;
cin>> w >> h >> n >> r;
int a[n][2];
for(int i = 0; i < n; i ++)
for(int j = 0; j < 2; j ++)
cin >> a[i][j];
for(int i = 0; i <= w; i ++)
for(int j = 0; j <= h; j ++)
for(int k = 0; k < n; k++)
{
if((a[k][0]-i)*(a[k][0]-i)+(a[k][1]-j)*(a[k][1]-j) <= r*r)
{num++;
break;}
}
cout << num;
return 0;
}