zoukankan      html  css  js  c++  java
  • Educational Codeforces Round 84 (Rated for Div. 2) B. Princesses and Princes(模拟)

    The King of Berland Polycarp LXXXIV has nn daughters. To establish his power to the neighbouring kingdoms he wants to marry his daughters to the princes of these kingdoms. As a lucky coincidence there are nn other kingdoms as well.

    So Polycarp LXXXIV has enumerated his daughters from 11 to nn and the kingdoms from 11 to nn . For each daughter he has compiled a list of kingdoms princes of which she wanted to marry.

    Polycarp LXXXIV is very busy, so he finds a couple for his daughters greedily one after another.

    For the first daughter he takes the kingdom with the lowest number from her list and marries the daughter to their prince. For the second daughter he takes the kingdom with the lowest number from her list, prince of which hasn't been taken already. If there are no free princes in the list then the daughter marries nobody and Polycarp LXXXIV proceeds to the next daughter. The process ends after the nn -th daughter.

    For example, let there be 44 daughters and kingdoms, the lists daughters have are [2,3][2,3] , [1,2][1,2] , [3,4][3,4] , [3][3] , respectively.

    In that case daughter 11 marries the prince of kingdom 22 , daughter 22 marries the prince of kingdom 11 , daughter 33 marries the prince of kingdom 33 , leaving daughter 44 nobody to marry to.

    Actually, before starting the marriage process Polycarp LXXXIV has the time to convince one of his daughters that some prince is also worth marrying to. Effectively, that means that he can add exactly one kingdom to exactly one of his daughter's list. Note that this kingdom should not be present in the daughter's list.

    Polycarp LXXXIV wants to increase the number of married couples.

    Unfortunately, what he doesn't have the time for is determining what entry to add. If there is no way to increase the total number of married couples then output that the marriages are already optimal. Otherwise, find such an entry that the total number of married couples increases if Polycarp LXXXIV adds it.

    If there are multiple ways to add an entry so that the total number of married couples increases then print any of them.

    For your and our convenience you are asked to answer tt independent test cases.

    Input

    The first line contains a single integer tt (1t1051≤t≤105 ) — the number of test cases.

    Then tt test cases follow.

    The first line of each test case contains a single integer nn (1n1051≤n≤105 ) — the number of daughters and the number of kingdoms.

    Each of the next nn lines contains the description of each daughter's list. The first integer kk (0kn0≤k≤n ) is the number of entries in the ii -th daughter's list. After that kk distinct integers follow gi[1],gi[2],,gi[k]gi[1],gi[2],…,gi[k] (1gi[j]n1≤gi[j]≤n ) — the indices of the kingdoms in the list in the increasing order (gi[1]<gi[2]<<gi[k]gi[1]<gi[2]<⋯<gi[k] ).

    It's guaranteed that the total number of daughters over all test cases does not exceed 105105 .

    It's also guaranteed that the total number of kingdoms in lists over all test cases does not exceed 105105 .

    Output

    For each test case print the answer to it.

    Print "IMPROVE" in the first line if Polycarp LXXXIV can add some kingdom to some of his daughter's list so that the total number of married couples increases. The second line then should contain two integers — the index of the daughter and the index of the kingdom Polycarp LXXXIV should add to that daughter's list.

    If there are multiple ways to add an entry so that the total number of married couples increases then print any of them.

    Otherwise the only line should contain one word "OPTIMAL".

    Example
    Input
    Copy
    5
    4
    2 2 3
    2 1 2
    2 3 4
    1 3
    2
    0
    0
    3
    3 1 2 3
    3 1 2 3
    3 1 2 3
    1
    1 1
    4
    1 1
    1 2
    1 3
    1 4
    
    Output
    Copy
    IMPROVE
    4 4
    IMPROVE
    1 1
    OPTIMAL
    OPTIMAL
    OPTIMAL

    这算啥算法题?真就暴力模拟...代码写的比较烂。
    #include <bits/stdc++.h>
    using namespace std;
    int vis[100005];
    int n;
    int main()
    {
        int t;
        cin>>t;
        while(t--)
        {
            cin>>n;
            memset(vis,0,sizeof(vis));
            int i,j;
            int cnt=0,num1=0,num2=0;
            for(i=1;i<=n;i++)//公主 
            {
                int k;
                scanf("%d",&k);
                bool flag=0; 
                if(k==0)
                {
                    cnt++;
                    num1=i;
                    continue;
                }
                for(j=1;j<=k;j++)//列表 
                {
                    int temp;
                    scanf("%d",&temp);
                    int p;
                    if(!vis[temp])
                    {
                        vis[temp]=1;
                        flag=1;
                        for(p=j+1;p<=k;p++)
                        {
                            int useless;
                            scanf("%d",&useless);//吸收 
                        }
                        break;
                    }
                    else continue;
                }
                if(!flag)cnt++,num1=i;
            }
            if(cnt==0) cout<<"OPTIMAL"<<endl;
            else
            {
                for(j=1;j<=n;j++)
                {
                    if(!vis[j])
                    {
                        num2=j;
                        break;
                    }
                }
                cout<<"IMPROVE"<<endl;
                cout<<num1<<' '<<num2<<endl;
            }
        }
        return 0;
    }
  • 相关阅读:
    perl中的反勾号(``),system和exec
    经典的JavaScript效果
    关于Asp.net ajax下的异常处理
    史上最酷的IIS一键安装,你想要吗? 博客园全球首发
    下载最新的AjaxControlToolkit控件包
    Asp.net开发中不可靠的编码习惯
    用Ajax保持会话
    对ViewState的一点思考
    对微软Asp.net Ajax 1.0的AutoComplete控件的几处修正和增强
    还为安装IIS发愁吗?全系列IIS自动安装程序倾囊奉送!--技术原理介绍及成品下载
  • 原文地址:https://www.cnblogs.com/lipoicyclic/p/12561347.html
Copyright © 2011-2022 走看看