キューブUVA10601ポリア定理

トピックリンク

 

溶液

 

タプル$(i、j)は$はサイクルセクションの数、サイクル数を表します。(等価クラスKと固定容量クラスと呼ばれる数学の組み合わせ?)
一定の交換:$ 1 *(1,12)$
重心+ $ 90:3 *(4,3)$
面心$ -90:3 *(4,3)$
$重心180:3 *(2,6)$
对棱$180:6*[(2,5)+(1,2)]$
体心$120:4*(3,4)$
体心$240:4*(3,4)$
 
その後、残りの問題は、これらの等価クラスの内部の色を記入する方法であります
みなさ差別カラーボール、ボックスと考え等価クラスで違いはありません、組合せ問題
 
/ * 
    タプル(i、j)がセクションのサイクル数、サイクル数、固定容量型K等価クラスと呼ばれる数学の組み合わせ表す
    1 *(1、12):一定の変位
    面心+ 90:3 *(4,3)
    の面心-90:3 *(4,3)
    面180を中心:3 *(2,6)
    6 *の[(2,5)+(1,2)]:リブ180の
    中心体を120:4 *(3,4)
    体心240:4 *(3,4)
* / 
の#include <アルゴリズム> 
の#include <CCTYPE> 
の#include <cmath> 
の#include <cstdioを> 
する#include <cstdlib> 
する#include < CString> 
の#include <iostreamの> 
の#include <地図> 
書式#include <キュー> 
の#include < SET > 
書式#include <スタック>
 の#if__cplusplus> = 201103L 
の#include <unordered_map> 
書式#include <unordered_set>
 #endifの
書式#include <ベクトル>
 の#define LSONのRT << 1、L、ミッド
 の#define rsonのRT << 1 | 1、中間+ 1、R
 の#define LONG_LONG_MAX 9223372036854775807LL
 の#define LL LL
 使用 名前空間STD。
typedefの長い 長いLL。
typedefの長い ダブルLD; 
typedefの符号なしの長い 長いULL。
typedefのペア < int型int型 > P;
int型N、M、K。
const  int型 MAXN = 1E5 + 10 INT [ 7 ]、B [ 7 ]。
インラインLLのFAC(LL n)で
{ 
    LL RES = 1 int型 I = 2 ; iが<= N; iが++ 
        RES * = I。
    リターンのres; 
} 
インラインのLL C(LL N、LLのM)
{ 
    場合(N < M)
         戻り 0 ;
    戻り FAC(N)/(FAC(M)* FAC(N - M))。
} 
インラインのLLのdoIt(INTK)
{ 
    のmemcpy(B、、はsizeof A)。
    int型のグループ= 0 ;
    以下のためにint型 i = 1 ; iは= < 6 ; iは++ 
    { 
        場合(B [i]の%のK)
             戻り 0 ; // 不能完全以K划分 
        B [I] / = K。
        グループ + = B [i]は、
    } 
    LL RES = 1 以下のためにint型 i = 1 ; iは= < 6 ; iが++ 
    { 
        RESを* = C(群、B [I])。
        グループ - =のB [i]は、
    } 
    戻りRESと、
} 
インラインLL(解決)
{ 
    LL RES = 0 
    RES + =のdoIt(1)。         // 不动置换 
    RES + = 2 * 3 *のdoIt(4)。// 面心+ 90、-90 
    RES + = 3 *のdoIt(2)。     // 面心180 
    のためのint型 i = 1 ; iが= < 6 ; iが++ のためINT J = 1 ; J <= 6 ; J ++ 
        { 
            もし、((I == J && [I] < 2)||(I = J &&([I] ||!!![J] )))
                 続けます
            [I] - 、[J] - 
            RES + = 6 *のdoIt(2)。// 对棱180 
            [i]を++、[J] ++ ; 
        } 
    RES + = 2 * 4 *のdoIt(3)。// 体心+ 120、-120 
    戻り RES /24
} 
int型のmain(int型 ARGC、チャー CONST * ARGV [])
{ 
#ifndefのONLINE_JUDGE 
    freopenは(" in.txt "" R " 、STDIN)。
    freopenは(" out.txtを"" W " 、STDOUT)。
#endifの
    IOS :: sync_with_stdio(); 
    cin.tie(0 )。
    cout.tie(0 )。
    int型のトン。
    cinを >> トン。
    しばらく(t--  
    { 
        memsetの(0はsizeof A)。
        以下のためにint型 i = 0 ; iは< 12 ; iは++ 
        { 
            int型のxと、
            cinを >> X; 
            [X] ++ ; 
        } 
        COUT <<()<<解決する" \ nを" 
    } 
    戻り 0 
}
コードの表示

 

おすすめ

転載: www.cnblogs.com/mooleetzi/p/11431006.html