지주
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int t,n;int s[5]; int a[9999],b[9999];int ans=23;
void dfs(int x){
if(ans<x)return ;
memset(s,0,sizeof(s));
for(int i=1;i<=14;i++)
{
if(a[i]==1||a[i]==2)
s[a[i]]++;
}//
for(int i=2;i<=14;i++)
{
if(a[i]==4)
{
s[4]++;
if(s[1]>=2) s[1]-=2;
else if(s[2]>=2) s[2]-=2;
else if(s[2]>=1) s[2]--;
}
}// ...
for(int i=2;i<=14;i++)
{
if(a[i]==3)
{
s[3]++;
if(s[1]>=1) s[1]--;
else if(s[2]>=1) s[2]--;
}
}// 。。。。
int w=0;
for(int i=1;i<=4;i++)
w+=s[i];//
ans=min(ans,x+w);
int j;
for(int i=3;i<=10;i++)//
{
for( j=i;j<=14;j++)
{
a[j]--;
if(a[j]<0)break;
if(j-i>=4) dfs(x+1);//
}
if(j==15)j--;
while(j>=i)a[j--]++;//
}
for(int i=3;i<=12;i++)//
{
for( j=i;j<=14;j++)
{
a[j]-=2;
if(a[j]<0) break;
if(j-i>=2) dfs(x+1);
}
if(j==15) j--;
while(i<=j) a[j--]+=2;
}
for(int i=3;i<=13;i++)//
{
for( j=i;j<=14;j++)
{
a[j]-=3;
if(a[j]<0)break;
if(j-i>=1) dfs(x+1);
}
if(j==15) j--;
while(i<=j) a[j--]+=3;
}
return ;
}
int main(){
scanf("%d%d",&t,&n);
for(int i=1;i<=t;i++)
{
memset(a,0,sizeof(a));
for(int i=1;i<=n;i++)
{
int x;
scanf("%d%d",&x,&b[i]);
if(x==1)a[14]++;
else if(x==0)a[1]++;
else a[x]++;
}
ans=14;// 14
dfs(0);
printf("%d
",ans);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.