URAL 1167. Bicolored Horses(DP)
6487 단어 color
2차원 DP, 두 개의 태그 그룹을 열어 앞의 i 개수 1의 개수와 0의 개수를 기록합니다.1Y.
상태 이동 방정식: p[i][j]=min(p[i-k][j-1]+(sum1(i)-sum1(i-k))*(sum0(i)-sum0(i-k))))(처음에는 i-k가 k라고 생각했어요. 자기가 몇 개의 데이터를 시도해 봤는데 계산이 틀렸어요)
1 #include <stdio.h>
2 #include <string.h>
3 #define N 10000000
4 int p[501][501],sum1[501],sum0[501];
5 int main()
6 {
7 int n,m,i,j,k;
8 scanf("%d%d",&n,&m);
9 for(i = 1;i <= n;i ++)
10 {
11 scanf("%d",&j);
12 if(j == 1)
13 {
14 sum1[i] = sum1[i-1]+1;
15 sum0[i] = sum0[i-1];
16 }
17 else
18 {
19 sum0[i] = sum0[i-1]+1;
20 sum1[i] = sum1[i-1];
21 }
22 }
23 for(i = 1;i <= n;i ++)
24 {
25 for(j = 1;j <= m;j ++)
26 p[i][j] = N;
27 }
28 for(i = 1;i <= n;i ++)
29 {
30 p[i][1] = sum1[i]*sum0[i];
31 }
32 for(i = 1;i <= n;i ++)
33 {
34 for(j = 2;j <= m&&j <= i;j ++)
35 {
36 for(k = 1;k <= i&&i-k>=j-1;k ++)
37 {
38 if(p[i][j] > p[i-k][j-1]+(sum1[i]-sum1[i-k])*(sum0[i]-sum0[i-k]))
39 p[i][j] = p[i-k][j-1]+(sum1[i]-sum1[i-k])*(sum0[i]-sum0[i-k]);
40 }
41 }
42 }
43 printf("%d
",p[n][m]);
44 return 0;
45 }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C++ Builder XE4 > TStringGrid 및 TCalendar > TStringGrid에 TCalendar 문자열을 복사하여 배경색을 변경하는 구현운영 환경 처리 개요 TCalendar와 TStringGrid가 있습니다 TStringGrid에 TCalendar 문자열을 복사합니다. TStringGrid의 일부 셀의 배경색 변경 구현 Unit1.h Unit1.c...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.