CodeForces 1332D - 매트릭스에 워크 [건설]

질문의 의미 :

매트릭스 구조이므로 실제 최대 비율의 오른쪽 하단 왼쪽 상단에서 표기 한 것으로 \ (DP \) 에있어서 큰 \ (K를 \) .

분석 :

되도록 \ (DP \) 의 최대 값이 결정된다 (\ 0 \) 실질적인 최대, \ (K \) .
행렬의 경우 :

\ [\ 좌측 [A_ {1,1} {행렬} \ 시작 및 A_ {1,2} \\ A_ {2,1} A_ {2,2} \ {단부 매트릭스} \ 오른쪽] \]

타이틀에 따르면 (\ DP) \ 접근
\ (A_가 최대} = {2,2 \ A_ {1,1} {\ & A_ {1,2} \} 2,2 A_ {\ \ A_. 1 { 1} \ & A_ {2,1
} \ & A_ {2,2} \} \) 행렬로 구성된다 :

\ [\ 좌측 [X \ bigoplus K & K \\ X 및 X \ bigoplus K \ {단부 행렬을 행렬 {}}를 시작 \ \ 오른쪽] \]

있습니다 \ (A_ {2,2}는 \ {(X \ bigoplus K) \ & X (X \ bigoplus K) \ & K를 \} \ 최대 =)
도 있습니다 때문에 : \ ((X \ bigoplus K) \ & X \ & k = 0 \)
원래의 행렬에 기초하여 변형 될 :

\ [\ 좌측 [X \ bigoplus K 및 X는 0 및 K \\ X \ bigoplus K & k \ {단부 행렬을 행렬 {}}를 시작 \ \ 오른쪽] \]

우리가 원하는 그래서 \ ((X 축 \ bigoplus K) \ & X 축을> (X 축 \ bigoplus K) \ & K \) ,을 누른 상태로 유지하기 위해 (DP \) \ 연습 얻어진 결과 \ (0 \) .
그래서 \ (X \) 값은 매우 중요합니다. \ (X \) 보다주의해야 \ (\ {} 최대 K_)가 크고이다 \ (2 \) 정수 전력 등 (\ 2 ^ {17}) \ .
그래서 \ (DP \) 의 최대 값을 취득한다 (\ (X \ bigoplus K)
\ 및 X \ & k = 0 \) 의 실제 최대 \ ((X ^ K) \ & K = K를 \) .
최종 행렬이다 :

\ [\ 좌측 [시작} \ {매트릭스 2 ^ {17} \ bigoplus K & 2 ^ {17} 0 \\ K & 2 ^ {17} \ bigoplus K & k \ {단부 매트릭스} \ 오른쪽] \]

코드 :

C ++ :

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int k;
    scanf("%d",&k);
    printf("2 3\n");
    int x=1<<17;
    printf("%d %d %d\n",x^k,x,0);
    printf("%d %d %d\n",k,x^k,k);
    return 0;
}

파이썬 :

k=int(input())
print("2 3\n")
x=1<<17
print(x^k,x,0)
print(k,x^k,k)

추천

출처www.cnblogs.com/1024-xzx/p/12637820.html