HDU 4620 과일 닌 자 익 스 트림 검색
2904 단어 ext
N 은 다음 과 같이 모두 N 가지 과일 을 자 르 는 방식 이 있다 고 밝 혔 다.
M 은 네가 썰 어야 할 과일 이 M 개 라 고 표시 했다.
W 는 두 번 의 연속 연 타 사이 의 최대 간격 을 나타 낸다.
그리고 N 줄 에 서 는 N 종 컷 팅.
첫 번 째 숫자 C 는 이 절단 법 으로 과일 을 몇 개 썰 수 있 는 지 를 나타 낸다.
두 번 째 숫자 는 이런 절 법 이 처 한 시간 을 나타 낸다.
후 C 개의 숫자 는 이때 이런 절단 법 으로 자 른 과일 번 호 를 나타 낸다.
주의: 3 개 이상 을 동시에 잘라 야 연 격 을 표시 하 며, 과일 한 개 는 최대 한 번 만 썰 수 있 습 니 다.
사고: 직접 검색 하고 가 지 를 자 르 세 요.
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <cstring>
using namespace std;
int gap,n,m;
int vis[205];
int tans[35];// ,
int ans[35];
int tanstop;
int anstop;
struct node
{
vector<int>num;
int cnt;
int time;
int id;
bool operator < (const node &cmp) const
{
return time<cmp.time;
}
}cut[35];
void dfs(int ttime,int pos)
{
if(m-pos+tanstop<=anstop) return;// ANS , A*
for(int i=pos+1;i<=m;i++)
{
if(cut[i].time-ttime<=gap||!tanstop)// 。 !tanstop
{
int tot=0;
int SIZE=cut[i].num.size();
for(int j=0;j<SIZE;j++)
{
if(vis[cut[i].num[j]]==0)
{
tot++;
}
vis[cut[i].num[j]]++;
}
if(tot>=3)
{
tans[tanstop++]=cut[i].id;
dfs(cut[i].time,i);
tanstop--;
}
for(int j=0;j<SIZE;j++)
vis[cut[i].num[j]]--;
}
else break;//
}
if(tanstop>anstop)
{
anstop=0;
for(int i=0;i<tanstop;i++)
ans[anstop++]=tans[i];
}
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
tanstop=anstop=0;
memset(vis,0,sizeof(vis));
scanf("%d%d%d",&m,&n,&gap);
for(int i=1;i<=m;i++)
{
cut[i].num.clear();
scanf("%d%d",&cut[i].cnt,&cut[i].time);
cut[i].id=i;
for(int j=0;j<cut[i].cnt;j++)
{
int tmp;
scanf("%d",&tmp);
cut[i].num.push_back(tmp);
}
if(cut[i].cnt<=2){i--;m--;}
}
sort(cut+1,cut+m+1);// DFS
dfs(1,0);
printf("%d
",anstop);
sort(ans,ans+anstop);//
for(int i=0;i<anstop-1;i++)
printf("%d ",ans[i]);
printf("%d
",ans[anstop-1]);
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ExtJS 3.2 학습 노트(3) 사용자 정의 이벤트Extjs에서 모든 상속은 Ext.util에서 합니다.Observable 클래스의 컨트롤은 이벤트를 지원할 수 있습니다. 클래스에 대해 이벤트를 사용자 정의하려면 다음 절차를 따르십시오. 1, 먼저 클래스를 정의합니...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.