【JZOJ4915】最长不下降子序列
来源:互联网 发布:php登录页面完整代码 编辑:程序博客网 时间:2024/06/07 17:59
Description
Data Constraint
Solution
我们看
然后找到循环节,显然每个循环节至多取一个数。
然后剩余部分加上中间的一部分循环节做一次
Code
#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>#define fo(i,j,k) for(int i=j;i<=k;i++)#define fd(i,j,k) for(int i=j;i>=k;i--)#define N 151#define M 100001#define ll long longusing namespace std;int a[M];int pos[N];int d[M];int main(){ freopen("lis.in","r",stdin); freopen("lis.out","w",stdout); ll n; scanf("%lld",&n); int t0,A,B,C,D; scanf("%d %d %d %d %d",&t0,&A,&B,&C,&D); int t=t0,now=n; a[++a[0]]=t; fo(i,2,n) { t=(A*t*t+B*t+C)%D; if(pos[t]) {now=i;break;} pos[t]=i; a[++a[0]]=t; } int p=now-pos[t],qq=0,w=a[0]; fo(i,1,p) { if(a[0]+p>n) break; fo(j,a[0]+1,a[0]+p) a[j]=a[j-p]; a[0]+=p; qq+=p; } while(qq<=w) { if(a[0]+p>n) break; fo(j,a[0]+1,a[0]+p) a[j]=a[j-p]; a[0]+=p; qq+=p; } ll ex=0; if(n>a[0]) ex=(n-a[0])/p; int q=(n-a[0])%p; int mx; fo(i,pos[t],pos[t]+q-1) a[++a[0]]=a[i],mx=max(mx,a[i]); int cd=0; fo(i,1,a[0]) { int l=0,r=cd; while(l+1<r) { int mid=(l+r)/2; if(d[mid]<=a[i]) l=mid; else r=mid; } int zz; if(d[r]<=a[i]) zz=r; else zz=l; zz++; d[zz]=a[i]; if(zz>cd) cd++; } printf("%lld",cd+ex);}
1 0
- 【JZOJ4915】最长不下降子序列
- {题解}[jzoj4915] 【GDOI2017模拟12.9】最长不下降子序列
- 最长不下降子序列
- 最长不下降子序列
- 最长不下降子序列
- 最长不下降子序列
- 最长不下降子序列
- 最长不下降子序列
- 最长不下降子序列
- 最长不下降子序列
- 最长不下降子序列
- 最长不下降子序列
- 最长不下降子序列
- 最长不下降子序列
- 最长不下降子序列
- 最长不下降子序列
- 最长不下降子序列
- 最长不下降子序列
- Android和iOS开发中的异步处理(三)——多个异步任务协作
- Android “Theme.AppCompat.Light”解决方法
- Java小对象优化
- FPGA规范及该注意的地方
- Paint、Canvas实例自定义绘制ArcProgressBar
- 【JZOJ4915】最长不下降子序列
- C语言二叉树结构数组法
- 复选框checkbox 获取已选中的值
- 2016 工作、生活与得失
- mybatis 中 foreach collection的三种用法
- Verilog HDL 语言书写规范
- 算法导论——2.3-2无哨兵情况下的归并排序
- leetcode——2Add Two Numbers
- 手动将jar文件加到Maven的local repository中