[codeforces 1393C] Pinkie Pie Eats Patty-cakes 통 정렬 + 숫자의 두 가지 분배 형식

1733 단어 codeforces
Codeforces Round #662(Div.2) 참여 순위 13194명
[codeforces 1393C] Pinkie Pie Eats Patty-cakes 통 정렬 + 숫자의 두 가지 분배 형식
총목록 상세 정보https://blog.csdn.net/mrcrack/article/details/103564004
온라인 평가 주소https://codeforces.com/contest/1393/problem/C
Problem
Lang
Verdict
Time
Memory
C - Pinkie Pie Eats Patty-cakes
GNU C++17
Accepted
46 ms
4300 K
제목 대의: 한 무더기의 숫자를 제시하면 프로그래머는 숫자의 위치를 합리적으로 배정할 수 있고 숫자와 뇌동 숫자 사이에 포함된 최소한의 숫자의 수량을 가능한 한 크게 요구하며 이 최대의 최소값을 출력할 수 있다.제목은 다음과 같이 한층 더 이해한다.
7
1 7 1 6 4 4 6

3

        
1 4 6 7 1 4 6

1 (4 6 7) 1 4 6     1   3   (4 6 7)
1 4 (6 7 1) 4 6     4   3   (6 7 1)
1 4 6 (7 1 4) 6     4   3   (7 1 4)

             3,       3

기본 사고방식: 견본 시뮬레이션 과정(AC 코드와 함께 읽는 것을 권장).
샘플 시뮬레이션 과정은 다음과 같다.
7
1 7 1 6 4 4 6

3

1 2 ,2 2 ,6 2 ,        
7 1         

      :
(1)(1)
(1)(1)
(1 2)(1 2)
(1 2 6)(1 2 6)
(1 2 6 7)(1 2 6)

8
1 1 4 6 4 6 4 7

2

4 3 ,        
1 2 ,6 2 ,        
7 1         

      :
(4)(4)(4)
(4 1)(4 1)(4)
(4 1 2)(4 1 2)(4)
(4 1 2 7)(4 1 2)(4)

3
3 3 3

0

3 3 ,        

      :
(3)(3)(3)



6
2 5 2 3 1 4

4
2 2 ,        
1 1 ,3 1 ,4 1 ,5 1         

      :
(2)(2)
(2 1)(2)
(2 1 3)(2)
(2 1 3 4)(2)
(2 1 3 4 5)(2)

AC 코드는 다음과 같습니다.
#include 
#define maxn 100010
int cnt[maxn],tot;
int main(){
	int t,n,i,a,c,ans;
	scanf("%d",&t);
	while(t--){
		scanf("%d",&n);
		for(i=1;i<=n;i++)cnt[i]=0;
		for(i=1;i<=n;i++)scanf("%d",&a),cnt[a]++;
		c=0,tot;
		for(i=1;i<=n;i++)
			if(c

좋은 웹페이지 즐겨찾기