hdu 4194#模拟
发布时间
阅读量:
阅读量
比赛的时候一直WA,原来题意就完全领会。
一些条件,第i个人发表第i篇文章,将这些文章给n个人审查
规定:第一条,“每篇文章需被K位读者评论(其中K代表每篇论文将收到的评论数量),诚然这条规则尚不完全明了。”
禁止任何人查看与其本人或本学院教师及同学所写的文章内容,并要求所有人都不得多次阅读任何一篇文章。
附:解题报告
The ith paper will be incorrectly evaluated if it is assessed...
#include <stdio.h>
#include <iostream>
#include <string>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;
const int N = 1000;
int vio,pos[N];
vector<int> paper[N];
map<string,int> p;
int main()
{
int k,n,i,j,a;
string str;
while(cin >> k >> n && n)
{
for(i = 0; i < n; ++i)
{
cin >> str;
if(p.find(str) == p.end())
p[str] = p.size();
pos[i] = p[str];///第i个人的学院位置
for(j = 0; j < k; ++j)
{
cin >> a;
--a;
paper[a].push_back(i);
}
}
vio = 0;
for(i = 0; i < n; ++i)
{
if(paper[i].size() != k)
++vio;
else
{
sort(paper[i].begin(),paper[i].end());
for(j = 0; j < k; ++j)
if(pos[i] == pos[paper[i][j]] || (j > 0 && paper[i][j] == paper[i][j-1]))
{
++vio;
break;
}
}
paper[i].clear();
}
switch(vio)
{
case 0:
printf("NO PROBLEMS FOUND\n");
break;
case 1:
printf("1 PROBLEM FOUND\n");
break;
default:
printf("%d PROBLEMS FOUND\n",vio);
}
p.clear();
}
return 0;
}
代码解读
全部评论 (0)
还没有任何评论哟~
