牛客練習賽48 C 小w的糖果 差分

2021-09-24 20:16:16 字數 783 閱讀 2326

n(n<=1e5)個人,m(m<=1e5)種操作,

操作分三種,

①[pos,n]從左到右第i個點+1

②[pos,n]從左到右第i個點+i

③[pos,n]從左到右第i個點+i的平方

詢問,所有操作完之後,每個點的值

區間+1的直接維護差分陣列,單點修改,做一次字首和

區間+1 +2 +3的,做一次差分就變成區間+1的,再做一次差分,所以維護二次差分陣列,做兩次字首和

區間+1 +4 +9的,做一次差分變成+1+3+5,做兩次差分變成+1+2+2+2,做三次差分變成+1+1,涉及兩個點

所以維護三次差分陣列,做三次字首和

#includeusing namespace std;

const int mod=1e9+7;

typedef long long ll;

const int n=1e5+10;

int t,n,m;

ll a[n],b[n],c[n];

int op,pos;

void pre(ll p,int len)

int main()

pre(a,n);

pre(b,n);pre(b,n);

pre(c,n);pre(c,n);pre(c,n);

for(int i=1;i<=n;++i)

printf("%lld%c",(a[i]+b[i]+c[i])%mod,i==n?'\n':' ');

}return 0;

}

牛客練習賽48 部分題解

b.小w的a b問題 思路 把階乘hash就行 include define ll long long using namespace std const int maxn 1e5 10,n 1e5 const int mod1 1e9 7,mod2 998244353 ll p1 maxn p2 ...

牛客練習賽44 小y的線段 思維

題目描述 給出n條線段,第i條線段的長度為 ai 每次可以從第 i 條線段的j位置跳到第 i 1 條線段的 j 1 位置。如果第 i 1 條線段長度不到j 1,那麼就會回到第 i 條線段的 0 位置,然後繼續跳。問從第 i 條線段的 0 位置跳到第 n 條線段需要跳多少次。解題思路 題目上的 n 的...

牛客練習賽56 小魂和他的數列

題目鏈結 給出乙個數列,讓求長度為k的嚴格遞增子串行有多少個 怎麼做呢?顯然dp 這個是很好想的 for int i 1 i n i for int i 2 i m i 這個dp顯然tle 所以 當時沒有做出來。做到這裡不會做了。想不到怎麼優化。顯然在最裡面的那個迴圈的作用是字首和 小於a i 的位...