日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【做题记录】[NOIP2016 普及组] 魔法阵

發布時間:2023/12/3 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【做题记录】[NOIP2016 普及组] 魔法阵 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

P2119 魔法陣

2016年普及組T4

題意:

給定一系列元素 \(\{X_i\}\) ,求滿足以下不等式的每一個元素作為 \(a,b,c,d\) 的出現次數 。

\[\begin{cases}X_a<X_b<X_c<X_d \\ X_a-X_b=2\times (X_d-X_c) \\X_b-X_a<\dfrac{X_c-X_b}{3}\end{cases} \]

題解:

\(X_d-X_c=t\) ,則 \(X_a-X_b=2\times t\)

帶入第三個式子,可得:\(2\times t<\dfrac{X_c-X_b}{3}\)

變形得:\(6\times t+k=X_c-X_b\) ,其中 \(1\le k\le n\)

因為 \(A\ge 1\)\(D\le n\) ,所以 \(1\le9\times t \le n-1\)

則有了這么一幅圖:

考慮枚舉 \(t\)

  • 枚舉 \(A=[n-9\times t-1,\dots,1]\)

    對于一對 \([A,B]\)\([C,D]\) 的最小值當 \(k=1\) 時取到 。而對于一對能形成魔法陣的 \([X_c,X_d]\)\([X_i(X_i>=X_c),X_j(X_j>X_d)]\) ,也能形成魔法陣 。則可以用后綴和優化 。

  • 枚舉 \(D=[2+9\times t,\dots,n]\) :同理,用前綴和優化 。

代碼:

int n,m,a[Maxn],cnt[Maxn],ans[4][Maxn];n=rd(),m=rd(); for(int i=1;i<=m;i++) a[i]=rd(),cnt[a[i]]++; for(int t=1,tmp;9*t<n;t++) {tmp=0; for(int A=n-t*9-1;A>=1;A--){int D=A+t*9+1,B=A+2*t,C=D-t;tmp+=cnt[C]*cnt[D];ans[0][A]+=tmp*cnt[B];ans[1][B]+=tmp*cnt[A];}tmp=0; for(int D=t*9+2;D<=n;D++){int A=D-t*9-1,B=A+t*2,C=D-t;tmp+=cnt[A]*cnt[B];ans[2][C]+=tmp*cnt[D];ans[3][D]+=tmp*cnt[C];} } for(int i=1;i<=m;i++) printf("%d %d %d %d\n",ans[0][a[i]],ans[1][a[i]],ans[2][a[i]],ans[3][a[i]]); 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的【做题记录】[NOIP2016 普及组] 魔法阵的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。