废话少说,直接上代码!(不理解的话,欢迎评论区提问)#include<bits/stdc++.h>
using namespace std;
struct person
{
int d, u, r;
};
int n;
map<int, vector<person> >all;
map<int,map<int,int> >riskd;//每个地点处于危险期则vector【日期】为1
void risk(int tem, int day)
{
for (int k = day; k <= day + 6; k++)
{
riskd[tem][k] = 1;//表示tem地区k天变成风险状态
}
}
map<int, set<int> >ans;//存储结果,每一天的风险名单
int main()
{
cin >> n;
for (int i = 0; i < n; i++)
{
int r, m;
cin >> r >> m;
for (int j = 0; j < r; j++)
{
int tem;//地点标号
cin >> tem;
risk(tem, i);
}
for (int l= 0; l < m; l++)
{
person p;
cin >> p.d >> p.u >> p.r;
all[i].push_back(p);
}
//从此开始,检查当前all列表
for (int j = i - 6; j <= i; j++)
{//到查七天的人员列表
for (vector<person>::iterator it = all[j].begin(); it != all[j].end(); it++)
{
//遍历当天的每一个人
//先检查其日期是否是自当天起处于危险期
if (it->d >= i - 6 && it->d <= i)
{
bool flag = 1;
for (int t = it->d; t <= i; t++)
{
if (!riskd[it->r][t])
{
flag = 0;
break;
}
}
if (flag)
{
ans[i].insert(it->u);
}
}
}
}
}
for (int i = 0; i < n; i++)
{
cout << i << " ";
for (set<int>::iterator it = ans[i].begin(); it != ans[i].end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
}
csp 2022.9.3 第三题 防疫大数据(满分) 详细解析,附带注释
最新推荐文章于 2024-09-27 14:28:55 发布