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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NOIP2016普及组第四题——魔法阵

發(fā)布時間:2025/3/15 编程问答 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NOIP2016普及组第四题——魔法阵 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題目描述

六十年一次的魔法戰(zhàn)爭就要開始了,大魔法師準備從附近的魔法場中汲取魔法能量。

大魔法師有m個魔法物品,編號分別為1,2,…,m。每個物品具有一個魔法值,我們用Xi表示編號為i的物品的魔法值。每個魔法值Xi是不超過n的正整數(shù),可能有多個物品的魔法值相同。

大魔法師認為,當(dāng)且僅當(dāng)四個編號為a,b,c,d的魔法物品滿足xa‘<’xb’<’xc’<’xd,Xb-Xa=2(Xd-Xc),并且xb-xa<(xc-xb)/3時,這四個魔法物品形成了一個魔法陣,他稱這四個魔法物品分別為這個魔法陣的A物品,B物品,C物品,D物品。

現(xiàn)在,大魔法師想要知道,對于每個魔法物品,作為某個魔法陣的A物品出現(xiàn)的次數(shù),作為B物品的次數(shù),作為C物品的次數(shù),和作為D物品的次數(shù)。

輸入輸出格式

輸入格式:?
輸入文件的第一行包含兩個空格隔開的正整數(shù)n和m。

接下來m行,每行一個正整數(shù),第i+1行的正整數(shù)表示Xi,即編號為i的物品的魔法值。

保證每個Xi是分別在合法范圍內(nèi)等概率隨機生成的。

輸出格式:?
共輸出m行,每行四個整數(shù)。第i行的四個整數(shù)依次表示編號為i的物品作 為A,B,C,D物品分別出現(xiàn)的次數(shù)。

保證標(biāo)準輸出中的每個數(shù)都不會超過10^9。

每行相鄰的兩個數(shù)之間用恰好一個空格隔開。

輸入輸出樣例

輸入樣例#1:?
30 8?
1?
24?
7?
28?
5?
29?
26?
24?
輸出樣例#1:?
4 0 0 0?
0 0 1 0?
0 2 0 0?
0 0 1 1?
1 3 0 0?
0 0 0 2?
0 0 2 2?
0 0 1 0?
輸入樣例#2:?
15 15?
1?
2?
3?
4?
5?
6?
7?
8?
9?
10?
11?
12?
13?
14?
15?
輸出樣例#2:?
5 0 0 0?
4 0 0 0?
3 5 0 0?
2 4 0 0?
1 3 0 0?
0 2 0 0?
0 1 0 0?
0 0 0 0?
0 0 0 0?
0 0 1 0?
0 0 2 1?
0 0 3 2?
0 0 4 3?
0 0 5 4?
0 0 0 5?
說明

【樣例解釋1】

共有5個魔法陣,分別為:

物品1,3,7,6,其魔法值分別為1,7,26,29;

物品1,5,2,7,其魔法值分別為1,5,24,26;

物品1,5,7,4,其魔法值分別為1,5,26,28;

物品1,5,8,7,其魔法值分別為1,5,24,26;

物品5,3,4,6,其魔法值分別為5,7,28,29。

以物品5為例,它作為A物品出現(xiàn)了1次,作為B物品出現(xiàn)了3次,沒有作為C物品或者D物品出現(xiàn),所以這一行輸出的四個數(shù)依次為1,3,0,0。

此外,如果我們將輸出看作一個m行4列的矩陣,那么每一列上的m個數(shù)之和都應(yīng)等于魔法陣的總數(shù)。所以,如果你的輸出不滿足這個性質(zhì),那么這個輸出一定不正確。你可以通過這個性質(zhì)在一定程度上檢查你的輸出的正確性。

【數(shù)據(jù)規(guī)模】?


這題我拿了55分(11個點),這題數(shù)據(jù)比較大。

這題我是用枚舉

我是先用快排,將魔法值從小到大排序出來,再用四個for將每一種情況枚舉出來,在判斷這四個數(shù)符不符合條件。如果符合,就在相應(yīng)位置上加1。

這題我怕數(shù)據(jù)爆了,所以就將數(shù)據(jù)縮小了。


代碼如下:

var n,m,i,j,k,w:longint;a,b:array[1..400]of longint;x:array[1..400,1..4]of longint;procedure qsort(l,r:longint); var i,j,mid,t:longint; beginif l>=r then exit;i:=l; j:=r; mid:=a[(i+j) div 2];repeatwhile mid>a[i] do inc(i);while mid<a[j] do dec(j);if i<=j thenbegint:=a[i]; a[i]:=a[j]; a[j]:=t;t:=b[i]; b[i]:=b[j]; b[j]:=t;inc(i);dec(j);end;until i>j;qsort(i,r);qsort(l,j); end;beginassign(input,'magic.in');assign(output,'magic.out');reset(input);rewrite(output);read(n,m);for i:=1 to m do begin read(a[i]); b[i]:=i; end;qsort(1,m);for i:=1 to m-3 dofor j:=i+1 to m-2 dofor k:=j+1 to m-1 dofor w:=k+1 to m doif (a[j]-a[i]=2*(a[w]-a[k]))and(a[i]<a[j])and(a[j]<a[k])and(a[k]<a[w])and(a[j]-a[i]<(a[k]-a[j])/3) thenbegininc(x[b[i],1]);inc(x[b[j],2]);inc(x[b[k],3]);inc(x[b[w],4]);end;for i:=1 to m dobeginfor j:=1 to 4 do write(x[i,j],' ');writeln;end;close(input);close(output);

end. 想看更多的請到:http://blog.csdn.net/ssl_zzy?viewmode=contents

轉(zhuǎn)載于:https://www.cnblogs.com/YYC-0304/p/9500236.html

總結(jié)

以上是生活随笔為你收集整理的NOIP2016普及组第四题——魔法阵的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。