poj1065 Wooden Sticks(교차하는 요소가 없는 lis의 줄 수)
분석: 만약에 막대기를 그 중의 한 속성에 따라 승차(속성값이 같으면 다른 속성값에 따라 승차)하면 다른 속성의 lis체인의 최소 개수를 구하고 각 lis체인 사이에 같은 아래 표시된 요소가 포함되지 않도록 요구한다.
한층 더 분석하면 결론을 얻을 수 있다. 가장 적은 최장 불강자 서열의 체인 수는 변환할 수 있고 가장 긴 하강자 서열의 길이를 구할 수 있다. 왜냐하면 하강자 서열의 원소는 반드시 같은 체인에 넣을 수 없고 서로 다른 체인에만 놓을 수 있기 때문이다. 그러면 가장 적은 체인 수는 가장 긴 하강자 서열의 길이이다.
#include
#include
#include
#include
using namespace std;
const int maxn=5000;
const int inf=0x3f3f3f3f;
pair<int,int>s[maxn+5];
int n;
int a[maxn+5];
int g[maxn+5];
int lis(){//
int ans=0;
memset(g,inf,sizeof(g));
for(int i=1;i<=n;i++){
int k=lower_bound(g+1,g+1+n,a[i])-g;
g[k]=a[i];
ans=max(ans,k);
}
return ans;//
}
int main(){
ios::sync_with_stdio(false);
int T;
cin>>T;
while(T--){
cin>>n;
for(int i=1;i<=n;i++){
cin>>s[i].first>>s[i].second;
}
sort(s+1,s+1+n);// l ,l w
for(int i=1;i<=n;i++)a[i]=s[i].second;
reverse(a+1,a+1+n);// , ,
cout<
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
01 가방, 완전 가방, 다중 가방 dp(동적 기획 입문 dp)01 가방은 2진법으로 직접 표시할 수 있지만 데이터 양이 너무 많으면 시간을 초과하는 것이 폭력이다.01 가방의 사상은 바로 이 물품에 대해 내가 넣은 가치가 큰지 안 넣은 가치가 큰지 비교하여 방정식 f[i][v...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.