竞赛
考级
#include <bits/stdc++.h> using namespace std; int a[100001],b[100001]; int main(){ int m; cin>>m; for(int i=1;i<=m;i++) cin>>a[i]; int min=-99999; for(int i=1;i<=m;i++) { b[i]=1; for(int j=1;j<i;j++) if(a[j]>=a[i]) b[i]=max(b[j]+1,b[i]); }
白嫖党帮主
这道题实际上求的是这个序列的最长不上升子序列(如果b1<=b2<=b3<=...<=bn,那么b1,b2,b3,...,bn就是不上升序列),和A7934.最长上升子序列很相似
acgoacgo
明日香
一维 #include <bits/stdc++.h> using namespace std; const int N=1010; int a[N],dp[N]; int n,ans; int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; dp[i]=1; for(int j=1;j<i;j++){ if(a[j]>=a[i]){ dp[i]=max(dp[i],dp[j]+1); } ans=max(ans,dp[i]); } } cout<<ans<<endl; return 0; }
H
能过,但第一次提交卡退了,我哭死 什么?你问我这段代码好在哪? 有jojo,其他99%的题解都没jojo #include <bits/stdc++.h> using namespace std; struct jojo { int k,maxl,next; }a[1001]; int main() { int n,dd=0; cin>>n; for(int i=1;i<=n;++i){ cin>>a[i].k; } for(int i=n;i>0;--i){ int nn=i; for(int j=i+1;j<=n;++j) if((a[j].maxl>=a[nn].maxl)&&(a[i].k>=a[j].k)){ if((a[j].maxl==a[nn].maxl)&&(a[j].k>=a[nn].k)) nn=j; else nn=j; } a[i].maxl=a[nn].maxl+1; a[i].next=nn; dd=max(dd,a[i].maxl); } cout<<dd; return 0; }
Xylophone
#include<bits/stdc++.h> using namespace std; const int N=1010,INF=1<<30; int h[N],f[N],d[N]; int n,ans1,ans2; int main() { scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d",&h[i]); }
波酱
循环必须得要i=0;i<?,别问我怎么知道的......
枫岚
Sananananansssss