インナと目覚まし時計CodeForces - 390A

彼女は目を覚ますために、合計でn個の目覚まし時計を必要とするので、イナは、非常に眠っ大好き。さんがイナの部屋は、ポイント(0、0)の左下隅とし、ポイントでの右上(100、100)と100×100の正方形であると仮定しましょう。次に、アラームクロックは、この正方形の整数座標を有する点です。

朝が来ました。イナの部屋のすべてのn個の目覚まし時計が鳴っているので、インナは、それらをオフにしたいと考えています。イナは面白いゲームを打ち出していることを示します。

まずインナは、彼女がゲーム中に使用するセグメントの種類を選択します。セグメントは、垂直または水平のいずれかであり得ます。
そして、インナは、複数の移動になります。単一の動きで、インナは、平面上の任意の長さのセグメントを描くことができ、彼女は(垂直または水平のいずれか)、ゲームの開始時に、そのタイプを選択し、次にオフこのセグメントのスイッチ上にあるすべての目覚まし時計。すべての目覚まし時計がオフされたときにゲームが終了します。
彼女はできるだけ早く目覚まし時計を介して取得したいので、インナは、非常に眠いです。彼女はすべてのアラームクロックをオフにする必要があるとゲーム内の動きの最小数を見つけ、彼女を助けて!

入力
アラームクロック数-入力の最初の行は、整数N(1≤N≤105)を含みます。次のn行は、クロックを記述する:i番目ラインは、二つの整数XI、YI含ま- i番目のアラームクロック(0≤XI、YI≤100)の座標。

部屋内の単一の点が部屋を表し、正方形の辺に位置することができる目覚まし時計と目覚まし時計の任意の数を含むことができることに留意されたいです。

出力
イナは彼女が最適に作用すると描画する必要がありますセグメントの最小数-シングルラインでは、単一の整数を印刷します。


インプット
4
0 0
0 1
0 2
1 0
を出力
2
入力
4
0 0
0 1
1 0
1 1
出力
2
入力
4
1 1
1 2
2 3
3 3
出力
3
注意
最初のサンプルでは、インナ最初の選択は、「垂直セグメントを入力します」、その後、彼女はで末端を有するセグメントを行う:(0、0)、(0、2); そして、例えば、(1、0)、(1、1)。彼女は水平線分を描画した場合、彼女は少なくとも3つのセグメントが必要になります。

第三のサンプルで、ために重要であるイナは彼女がゲームを終了する3水平または3垂直セグメントが必要になります理由ですゲーム中のセグメントの種類を変更する権利を持っていないことに注意してください。..
タイトル効果:いくつかを与えますポイントは、表現ライトは毎回その時点での行または垂直方向の光をオフにすることができ、シャット数回に最低必要性を言って尋ねました。
問題解決のアイデア:水の問題は、水平線の数を最小限に、計算され、垂直ライン数れます。

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int main()
{
    int n;
    int a[105][105];
    while(cin>>n&&n!=EOF)
    {
        memset(a,0,sizeof(a));
        for(int i=0;i<n;i++)
        {
            int x,y;
            cin>>x>>y;
            a[x][y]=1;
        }
        int n1=0,n2=0;
        for(int i=0;i<=100;i++)
        {
            for(int j=0;j<=100;j++)
            {
                if(a[i][j]==1)
                {
                    n1++;
                    break;
                }
            }
        }
        for(int i=0;i<=100;i++)
        {
            for(int j=0;j<=100;j++)
            {
                if(a[j][i]==1)
                {
                    n2++;
                    break;
                }
            }
        }
        int s=min(n1,n2);
        cout<<s<<endl;
    }
    return 0;
}
公開された81元の記事 ウォンの賞賛3 ビュー2751

おすすめ

転載: blog.csdn.net/weixin_44641254/article/details/104739746