zoukankan      html  css  js  c++  java
  • Complete the Sequence HDU

    题目大意:

    输入两个数n和m,n表示有n个数,这n个数是一个多项式的前n项,让输出这个序列的n+1,n+2,..n+m项。

    题解:差分规律,一直差分,直到全为0或者只剩下一个数。然后再递推回去。

     给出了n个数,最多可以求n-1行差分,从最后一行向上推,共n行。所以总复杂度O(n^2+n*m).

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const ll N=1E2+7;
    ll dp[N][N];
    void solve(int t){
    //    memset(dp,0,sizeof dp); 
        ll n,c;
        cin>>n>>c;
        for(ll i=1;i<=n;i++) cin>>dp[1][i];
        if(n==1) {
            cout<<dp[1][1];
            for(ll i=2;i<=c;i++) cout<<" "<<dp[1][1]; 
            cout<<endl;
            return ;
        }
        ll pos=2;
        while(1){
            bool flag = false ;
            for(ll i=1;i<=n-pos+1;i++){
                dp[pos][i]=dp[pos-1][i+1]-dp[pos-1][i];
            }
            if(pos==n) break;
            pos++;
        }
        for(ll i=1;i<=c;i++){
            dp[n][i+1]=dp[n][i];
            for(ll j=n-1;j>=1;j--){
                dp[j][n+i+1-j]=dp[j][n+i-j]+dp[j+1][n+i-j];
            }
            if(i==1) cout<<dp[1][n+i];
            else cout<<" "<<dp[1][n+i];
        }
        cout<<endl;
    }
    int main(){
        ll t;
        cin>>t;
        for(int i=t;i>=1;i--) solve(i);
        return 0;
    }
  • 相关阅读:
    django 设置局域网内访问项目
    104. Maximum Depth of Binary Tree
    multi dimension array
    Longest Plindrome Subarray
    BlockQueue
    H2O
    HoppingIterator
    midStack
    Reverse Words in a String II
    public boolean canPlaceFlowers(List<Boolean> flowerbed, int numberToPlace)
  • 原文地址:https://www.cnblogs.com/Accepting/p/12462775.html
Copyright © 2011-2022 走看看