ホームページ >ウェブフロントエンド >htmlチュートリアル >Topcoder SRM 638 DIV 2 (強さは奇跡を生む)_html/css_WEB-ITnose

Topcoder SRM 638 DIV 2 (強さは奇跡を生む)_html/css_WEB-ITnose

WBOY
WBOYオリジナル
2016-06-24 11:54:561115ブラウズ

問題提起 サイズ定義制約 -size- の各要素は 1 から 1,000 までの範囲になります。- は 1 から 1,000 までの範囲になります。 例 0)りー

狭い通路があります。通路の中にオオカミが数匹います。ベクトル が与えられます。 には、左から右にオオカミのサイズが含まれています。
通路が非常に狭いため、一部のオオカミのペアはすれ違えません。より正確には、隣接する 2 匹のオオカミは、そのサイズの合計が
maxSizeSum
以下である場合に限り、位置を交換できます。オオカミが通路から出ないと仮定すると、通路内のオオカミの異なる順列の数は何になりますか? 2 つのオオカミは、サイズが同じであっても異なるものとみなされます。
オオカミのペアを 0 回以上交換することによって、最初の順序から取得できるオオカミの順列の数を計算して返します。

クラス:メソッド:パラメータ:戻り値:メソッド署名:(メソッドがパブリックであることを確認してください)
NarrowPassage2Easy
count
vector , int
int
int count(vector size, int maxSizeSum)

時間制限 (秒):メモリ制限 (MB):
2.000
256

には 1 から 1 までの値が含まれます6 つの要素 (両端を含みます)。
size
maxSizeSum

From {1, 2, 3 } の場合、1 と 2 を交換して {2, 1, 3} を取得できます。ただし、他の順列は取得できません。
rree
1)
れー ここで、隣接する 2 匹のオオカミを交換できます。ということで、3つとも! = 6 つの順列が可能です。
れー
れー
2)
れー{1, 2, 3}、{2, 1, 3}、および {2, 3, 1} を取得できます。3)
るー
るーるこれらのオオカミは、サイズは同じでも、すべて異なります。ということで、6つあります!異なる順列が可能です。
4)
Returns: 60
5)
{1000}
1000
Returns: 1
#include #include #include #include #include #include #include #include #include #include #include #include #define eps 1e-10///#define M 1000100///#define LL __int64#define LL long long#define INF 0x7fffffff#define PI 3.1415926535898#define zero(x) ((fabs(x) size, int maxSizeSum)    {        int len = size.size();        memset(vis, 0, sizeof(vis));        for(int i = 1; i <= len; i++)        {            for(int j = i+1; j <= len; j++)            {                int x = size[i-1]+size[j-1];                if(x > maxSizeSum)                {                    ///vis[i][j] = 1;                    vis[j][i] = 1;                }            }        }        for(int i = 1; i <= len; i++)        {            for(int j = 1; j <= len; j++)            {                cout< maxSizeSum) return 1;            return 2;        }        if(len == 3)        {            for(int i = 1; i <= len; i++)            {                for(int j = 1; j <= len; j++)                {                    if(i == j) continue;                    for(int k = 1; k <= len; k++)                    {                        if(k == i || k == j) continue;                        if(vis[i][j] || vis[i][k] || vis[j][k]) continue;                        sum++;                    }                }            }        }        if(len == 4)        {            for(int i1 = 1; i1 <= len; i1++)            {                for(int i2= 1; i2 <= len; i2++)                {                    if(i1 == i2) continue;                    for(int i3 = 1; i3 <= len; i3++)                    {                        if(i1 == i3 || i2 == i3) continue;                        for(int i4 = 1; i4 <= len; i4++)                        {                            if(i1 == i4 || i2 == i4 || i3 == i4) continue;                            if(vis[i1][i2] || vis[i1][i3] || vis[i1][i4]                                       || vis[i2][i3] ||vis[i2][i4]                                       ||vis[i3][i4]) continue;                                sum++;                        }                    }                }            }        }        if(len == 5)        {            for(int i1 = 1; i1 <= len; i1++)            {                for(int i2= 1; i2 <= len; i2++)                {                    if(i1 == i2) continue;                    for(int i3 = 1; i3 <= len; i3++)                    {                        if(i1 == i3 || i2 == i3) continue;                        for(int i4 = 1; i4 <= len; i4++)                        {                            if(i1 == i4 || i2 == i4 || i3 == i4) continue;                            for(int i5 = 1; i5 <= len; i5++)                            {                                if(i1 == i5 || i2 == i5 || i3 == i5 || i4 == i5) continue;                                if(vis[i1][i2] || vis[i1][i3] || vis[i1][i4] || vis[i1][i5]                                       || vis[i2][i3] ||vis[i2][i4] || vis[i2][i5]                                       ||vis[i3][i4] || vis[i3][i5]                                       ||vis[i4][i5]) continue;                                sum++;                            }                        }                    }                }            }        }        if(len == 6)        {            for(int i1 = 1; i1 <= len; i1++)            {                for(int i2= 1; i2 <= len; i2++)                {                    if(i1 == i2) continue;                    for(int i3 = 1; i3 <= len; i3++)                    {                        if(i1 == i3 || i2 == i3) continue;                        for(int i4 = 1; i4 <= len; i4++)                        {                            if(i1 == i4 || i2 == i4 || i3 == i4) continue;                            for(int i5 = 1; i5 <= len; i5++)                            {                                if(i1 == i5 || i2 == i5 || i3 == i5 || i4 == i5) continue;                                for(int i6 = 1; i6 <= len; i6++)                                {                                    if(i1 == i6 || i2 == i6 || i3 == i6 || i4 == i6 || i6 == i5) continue;                                    if(vis[i1][i2] || vis[i1][i3] || vis[i1][i4] || vis[i1][i5] || vis[i1][i6]                                       || vis[i2][i3] ||vis[i2][i4] || vis[i2][i5] || vis[i2][i6]                                       ||vis[i3][i4] || vis[i3][i5] || vis[i3][i6]                                       ||vis[i4][i5] || vis[i4][i6]                                       || vis[i5][i6]) continue;                                   sum ++;                                }                            }                        }                    }                }            }        }        return sum;    }};int main(){    NarrowPassage2Easy a;    vector f;    f.push_back(189);    f.push_back(266);    cout<  

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。