Codeforces Round #310 (Div. 2)
16919 단어 codeforces
제목 대의:
0과 1만 포함하는 문자열을 주십시오. 0과 1이 인접하면 이 두 문자는 삭제할 수 있습니다. 마지막으로 삭제할 수 없는 문자는 몇 개입니까?
문제 해결 방법:
0과 1의 개수를 각각 집계한 뒤 상감한 절대치가 답이다.
1 #include <algorithm>
2 #include <iostream>
3 #include <cstdio>
4 #include <cstring>
5 #include <cstdlib>
6 #include <cmath>
7 using namespace std;
8
9 const int maxn = 200010;
10 const int INF = 0x3f3f3f3f;
11 int Fabs (int a, int b)
12 {
13 if (a > b)
14 return a - b;
15 return b - a;
16 }
17 int main ()
18 {
19 char str[maxn];
20 int n, a, b;
21 while (scanf ("%d", &n) != EOF)
22 {
23 a = b = 0;
24 scanf ("%s", str);
25 for (int i=0; i<n; i++)
26 {
27 if (str[i] == '0')
28 a ++;
29 else
30 b++;
31 }
32 printf ("%d
", Fabs(a , b));
33 }
34 return 0;
35 }
B. Case of Fake Numbers
제목 대의:
하나의 서열은 n개의 수가 있는데 1부터 번호를 매긴다. 매번 서열에 대한 조작은 홀수와 짝수는 하나를 더하고 짝수는 하나를 줄인다. 유한한 조작을 거친 후에 0,1,2,3,4···········n-1의 서열을 구성할 수 있느냐고 묻는다.
문제 해결 방법:
이 서열의 수는 모두 [0, n-1] 구간 내의 숫자이기 때문에 이 서열은 반드시 n 횟수의 조작을 거친 후에 순환한다.
1 #include <bits/stdc++.h>
2 using namespace std;
3 const int maxn = 1010;
4 int a[maxn], b[maxn];
5 int main ()
6 {
7 int n;
8 while (scanf ("%d", &n) != EOF)
9 {
10 int flag = 1;
11 for (int i=0; i<n; i++)
12 {
13 scanf ("%d", &a[i]);
14 if (i != a[i])
15 flag = 0;
16 }
17 for (int j=0; j<n&&!flag; j++)
18 {
19 flag = 1;
20 for (int i=0; i<n; i++)
21 {
22
23 if (i % 2 == 0)
24 a[i] = (a[i] + 1) % n;
25 else
26 a[i] = (a[i] + n - 1) % n;
27 if (a[i] != i)
28 flag = 0;
29 }
30 }
31 if (flag)
32 printf ("Yes
");
33 else
34 printf ("No
");
35 }
36 return 0;
37 }
C. Case of Matryoshkas
제목 대의:
n개의 귀엽고 아름다운 러시아 인형이 있는데, 번호는 1부터 시작하고, 번호가 큰 것은 번호가 작은 위에 씌울 수 있다. 그들은 귀엽기를 좋아하기 때문에 지금 그것들을 모두 끼워서 집으로 가져갈 것이다.
인형을 씌울 때는 두 가지 조작만 할 수 있다.
1:큰 인형 하나를 한 꿰미 또는 한 인형 위에 씌운다.
2:인형 한 송이를 한 줄의 가장 바깥쪽에서 떼어낸다.
-- 최소 몇 번 조작해야 인형을 집으로 데려갈 수 있나.
문제 해결 방법:
바로 시뮬레이션, 바로 미니.
1 #include <algorithm>
2 #include <iostream>
3 #include <cstdio>
4 #include <cstring>
5 #include <cstdlib>
6 #include <cmath>
7 using namespace std;
8
9 const int maxn = 100010;
10 const int INF = 0x3f3f3f3f;
11
12 int main ()
13 {
14 int n, m;
15 while (scanf ("%d %d", &n, &m) != EOF)
16 {
17 int sum = m - 1, num, ans, a, b, c;
18 while (m --)
19 {
20 scanf ("%d", &num);
21 scanf ("%d", &c);
22 a = c;
23 ans = 0;
24 for (int i=1; i<num; i++)
25 {
26 scanf ("%d", &b);
27 if (b > a + 1 && ans == 0)
28 ans = num - i;
29 a = b;
30 }
31 if (c != 1)// , , , wa
32 ans = num - 1;
33 sum += ans * 2;
34 }
35 printf ("%d
", sum);
36 }
37 return 0;
38 }
39 /*
40 9 3
41 3 7 8 9
42 3 1 2 3
43 3 4 5 6
44
45 */
뒤의 제목은 우리 아기가 정말 할 수 없군요. 아무래도 손이 모자라서 내일 꼭 제일 먼저 보충해 드리겠습니다~~~~~~~
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Codeforces Round #715 Div. 2C The Sports Festival: 구간 DP전형구간 DP의 초전형. 이하, 0-indexed. 입력을 정렬하여 어디서나 시작하고 최적으로 좌우로 계속 유지하면 좋다는 것을 알 수 있습니다. {2000})$의 주문이 된다. 우선, 입력을 소트하여 n개의 요소를 $...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.