Constructing Roads In JGShining's Kingdom(HDU1025)(LCS序列的变行)
Constructing Roads In JGShining's Kingdom HDU1025
题目主要理解要用LCS进行求解!
并且一般的求法会超时!!要用二分!!!
最后蛋疼的是输出格式的注意(直接报错误!!!)
1 #include<iostream> 2 #include<stdio.h> 3 #include<algorithm> 4 #include<string.h> 5 using namespace std; 6 int a[500005],dp[500005]; 7 int main() 8 { 9 int n,i,a1,b1,len,j,d=0,left,right,mid; 10 while(scanf("%d",&n)!=EOF) 11 { 12 for(i=0;i<n;i++) 13 { 14 scanf("%d%d",&a1,&b1); 15 a[a1]=b1; 16 } 17 dp[0]=-1; 18 len=0; 19 for(i=1;i<=n;i++) 20 { 21 if(dp[len]<=a[i]) 22 { 23 len++; 24 dp[len]=a[i]; 25 } 26 else 27 { 28 left=0; 29 right=len; 30 while(right-left>1) 31 { 32 mid=(left+right)/2; 33 if(a[i]>dp[mid]) 34 left=mid; 35 else 36 right=mid; 37 } 38 dp[right]=a[i]; 39 } 40 } 41 printf("Case %d:\n",++d); 42 if(len>1) 43 printf("My king, at most %d roads can be built.\n\n",len); 44 else 45 printf("My king, at most %d road can be built.\n\n",len);//没有这个,直接报错误!!!找了好久啊。。。 46 } 47 return 0; 48 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步