多校第九場Math Geek(構造反幻方 找規律)

2021-05-27 08:30:22 字數 780 閱讀 7214

看到敏感的geek字樣,果斷先讀了這題,然後演算紙上各種划拉。。。

題意:構造反幻方(貌似就是和幻方相反的意思)。實際就是個簡單的找規律,

我的構造方法:當大於等於5階時,按左到右,上到下順序放入1到n*n

對幻方的階數分奇偶討論下

奇數:行和,列和,對角和都是相應中間數的n倍,滿足a*n(a為正整數)所以只有正中間列和行還有對角的4個相等,只需調換相應的幾個數使其不為a*n形式,且互不相等即可,由於階數大於等於5 ,可以找到相應的調換使相應的和變成a*n+1、a*n+2,a*n-1,a*n-2(3階會出現a*n1-2與a*n2+1相等的情況)。

偶數:行、列對角和都滿足4*n+2、這時只有2個對角和能相等,當階數大於4時直接把中間的4個數隨便調換2個就可以了,構造出2個4*n型的數(4階情況出現2個4*n型數相等的)。

3和4階的話直接輸出樣例即可。

構造方法有很多,有在網上找到什麼公式的是蛇形排列好像也滿足。還有樸素的構造方法就是隨機生成矩陣,然後各種搜尋變換,直到滿足條件為止。

**有點繞直接輸出就好

#include #include int ans[205][205];

int i=0;

void swap (int &a,int &b)

int main ()

{ int n,i,j;

int cas;

scanf("%d",&cas);

while (cas--)

{scanf("%d",&n);

int t=0;

for (i=0 ; i

多校比賽第九場

hdu 4950 monster 題意好簡單,隊友說要用線段樹做,要不然會tle,連樹狀陣列也會t。我說讓我試試樹狀陣列,結果搞了乙個 小時左右用樹狀陣列給搞出來了,嘿嘿。用了樹狀陣列區間更新。include include include include define maxn 100010 us...

2019牛客多校第九場

由題意可設x y kp bx y kp b x y kp b代入第二個式子中可以得到kpx bx x2 c mod kpx bx x 2 equiv c mod kpx bx x2 c modp p p 第一項是p的倍數可以約掉,所以有x2 bx c 0 m od x 2 bx c equiv 0 ...

2019 杭電多校(第九場)

1002 rikka with cake 思維 題意給你乙個蛋糕 問你切k刀後分成多少塊 思路塊數 交點數 1 樹狀陣列維護橫線有多少條 豎線去統計 隊友 include define ll long long using namespace std struct code tree 500005 ...