<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      非常神秘的題,使我的大腦旋轉兩年半

      題意

      給定正整數 \(N, L\) 和一個長度為 \(N\) 的正整數序列 \(A = (A_1, A_2, \dots, A_N)\)

      對于 \(i = 1, 2, \dots, N\),請回答以下問題:

      是否存在一個長度為 \(L\) 的非負整數序列 \(B = (B_1, B_2, \dots, B_L)\),使得

      \[\sum_{j=1}^{L-1} \sum_{k=j+1}^{L} |B_j - B_k| = A_i \]

      如果存在,請求出所有滿足條件的 \(B\)\(\max(B)\) 的最小值;如果不存在,請輸出 \(-1\)

      • \(1 \leq N \leq 2 \times 10^5\)
      • \(2 \leq L \leq 2 \times 10^5\)
      • \(1 \leq A_i \leq 2 \times 10^5\)
      • 輸入均為整數

      怎么做

      這道題本來我發現了單調性,想著能不能二分,然后發現我就是個弱智。

      既然沒有想法,就先去找性質把。

      我們發現 \(B\) 的順序不會影響結果,而這個絕對值符號讓我們束手束腳的。

      我們故假設 \(B\) 是單調不降的。

      為了方便,我們記 \(A[i]\)\(val\),因為我不喜歡使用 \(k\)

      這樣問題就成了 \(\sum_{i=1}^{L-1}\sum_{j=i+1}^{L}(B_j-B_i)\)

      我們又發現 \(B[1]\) 一定要是 \(0\) 才能使問題答案最優。

      如果我們知道相鄰兩項差擴大或著減小的貢獻就好了。

      我們猛地發現了一個神奇的事情,那就是我們既然規定了 \(B\) 單調不降,那么我們的每一次計算實際上就可以被一大堆相鄰項的差所表示。

      比如說我們計算的 \(B_j-B_i\)

      這個就可以表示為 \((B_j-B_{j-1})+(B_{j-1}-B_{j-2})+......\) 像一個區間一樣把其中的一些點加起來。

      我們考慮一對相鄰項會被貢獻多少次。

      我們發現這個次數是固定的,我們統計區間數量,也就是左端點可以存在的地方和右端點可以存在的地方乘起來。

      最后我們可以得出這個問題可以變成 \(\sum_{i=1}^{L-1}i(L-i)(B_{i+1}-B_i)\)

      這個我們就可以看作一個背包問題來進行考慮了。

      重量是 \(i(L-i)\),價格是 \(1\)

      我們做完全背包就行了。

      代碼如下

      點擊查看代碼
      #include <bits/stdc++.h>
      using namespace std;
      namespace BaiBaiShaFeng{
      	const int MN=1e6+116;
      	int v[MN], w[MN], dp[MN];
      	void solve(int N, int L, int A[]){
      		memset(dp,0x3f,sizeof(dp)); dp[0]=0;
      		for(int j=1; j*(L-j)<MN&&j<L; ++j){
      			for(int i=j*(L-j); i<MN; ++i){
      				dp[i]=min(dp[i],dp[i-j*(L-j)]+1);
      			}
      		}
      		for(int i=1,val; i<=N; ++i){
      			if(dp[A[i]]==0x3f3f3f3f) cout<<-1<<'\n';
      			else cout<<dp[A[i]]<<'\n';
      		}
      	}
      }
      const int MN=1e6+116;
      int n, l, a[MN];
      signed main(){
      	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
      	cin>>n>>l; for(int i=1; i<=n; ++i) cin>>a[i];
      	BaiBaiShaFeng::solve(n,l,a);
      	return 0;
      }
      
      posted @ 2025-08-31 21:30  BaiBaiShaFeng  閱讀(10)  評論(0)    收藏  舉報
      Sakana Widget右下角定位
      主站蜘蛛池模板: 久久夜色撩人国产综合av| 久久国产精品第一区二区| 国产精品进线69影院| 亚洲色欲色欲www在线看| 无线乱码一二三区免费看| 国语精品一区二区三区| 亚洲一区二区三区在线| 又大又粗又爽18禁免费看| 色老头在线一区二区三区| 欧洲一区二区中文字幕| 亚洲夜夜欢一区二区三区| 国产午精品午夜福利757视频播放| 少妇又爽又刺激视频| 四虎精品国产精品亚洲精| 欧美日韩高清在线观看| 亚洲性日韩精品一区二区| 国产精品无码v在线观看| 九九热视频精选在线播放| 久久综合久中文字幕青草| 国语自产精品视频在线看| 国内精品久久毛片一区二区| 激情国产一区二区三区四区小说| 内射人妻视频国内| 色综合欧美亚洲国产| 日韩精品一区二区亚洲av| 国产在线观看91精品亚瑟| 亚洲日韩中文字幕在线播放| 亚洲国产色一区二区三区| 国产一区二区三四区| 一区二区三区四区高清自拍| 亚洲av永久无码精品漫画| 国产v综合v亚洲欧美久久| 久久精品亚洲精品国产色婷| 乱码中字在线观看一二区| 国产睡熟迷奷系列网站| 午夜AAAAA级岛国福利在线| 婷婷四虎东京热无码群交双飞视频| 福利一区二区在线观看| 亚洲av色精品一区二区| 野花香视频在线观看免费高清版| 绝顶丰满少妇av无码|