摘要:
二分 int l,r; while(l<=r){ int mid=(l+r)/2;//>>1 if(ok(mid))l=mid+1; else r=mid-1; } ans=l; lower_bound()和upper_bound() 二分查找 二分查找需要排序 右端点开区间(right需要+1) 阅读全文
摘要:
zhxのDP讲 DP基础例题 1. 斐波那契数列 f[1]=1;//第0项和第1项 f[0]=0; //记忆化搜索 int dp(int n)//斐波那契数列第n项 { //g[i]表示f[i]有没有计算过 if(n<=1)return n; if(g[n])return f[n]; g[n]=tr 阅读全文
摘要:
//求最长上升子序列长度 cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; memset(f,0,sizeof(f)); for(int i=1;i<=n;i++) { for(int j=i+1;j<=n;j++) if(a[j]>a[i]) f[j]=max(f[ 阅读全文