codeforces 1327B Princesses and Princes 水
程序员文章站
2022-06-02 12:16:55
...
题目大意:给出个公主的心仪对象,对象的编号按照升序给出,现在国王从第个公主开始依次配对,每次都会在公主的心仪对象中选择序号最小的且之前从未被选择过的那个,如果找不到就跳过继续为下个公主配对。现在你有一次机会,可以在某位公主的心仪对象列表中再添加个,问能否使得配对总数增加,如果可以输出这位公主的编号以及添加的编号。
思路:阅读理解题?感觉很水。依次处理就好了,最后判断一下配对总数是不是,如果的话随便找一个没有配对的公主,塞一个没有被选择过的王子给她就行了。
#include<bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll;
const int maxn=1e5+5;
int main()
{
int t,n,k,v;
scanf("%d",&t);
while(t--)
{
bool vis[maxn]={0};
scanf("%d",&n);
int tmp=0,idx=0;
for(int i=1;i<=n;i++)
{
tmp=0;
scanf("%d",&k);
while(k--)
{
scanf("%d",&v);
if(!vis[v]&&!tmp)
tmp=v;
}
if(tmp)
vis[tmp]=1;
else
idx=i;
}
if(!idx)
printf("OPTIMAL\n");
else
{
printf("IMPROVE\n");
int ans;
for(int i=1;i<=n;i++)
{
if(!vis[i])
{
ans=i;
break;
}
}
printf("%d %d\n",idx,ans);
}
}
return 0;
}
上一篇: 详解 MySQL 的常见锁机制
下一篇: Mysql数据库的优化方法 ?