cf#369-Chris and Magic Square-大模拟+trick
来源:互联网 发布:网络代写小说招聘 编辑:程序博客网 时间:2024/06/12 12:00
智障完全不会做
直接分情况讨论
在主/副对角线和都不在的情况
mdzz这题太坑,最后答案要是正数,
需要特判ans<=0,输出-1
否则GGGGG 又挂了
#include <cstdio>#include <cmath>#include <cstring>#include <string>#include <algorithm>#include <queue>#include <map>#include <set>#include <vector>#include <iostream>using namespace std;const double pi=acos(-1.0);double eps=0.000001;typedef long long ll;ll mp[505][505];ll sumx[505];ll sumy[505];ll dui1,dui2;int main(){ ll n; cin>>n; ll val; ll mx,my; for (ll i=1; i<=n; i++) { for (ll j=1; j<=n; j++) { scanf("%lld",&mp[i][j]); if (mp[i][j]==0) { mx=i,my=j; } } } if (n==1) { printf("1\n"); return 0; } for (ll i=1; i<=n; i++) { for (ll j=1; j<=n; j++) { sumx[i]+=mp[i][j]; sumy[j]+=mp[i][j]; if (i==j) dui1+=mp[i][j]; if (i+j==n+1) dui2+=mp[i][j]; } } if (mx!=my && mx+my!=n+1 ) { ll flag=0,pos; for (ll i=1; i<=n; i++) { if (sumx[i]!=dui1) flag++,pos=i; } if (flag!=1) { printf("-1\n"); return 0; } val=dui1-sumx[mx]; sumy[my]+=val; flag=1; for (ll i=1; i<=n; i++) { if (sumy[i]!=dui1) flag=0; } if (dui2!=dui1) flag=0; if (flag); else val=-1; //printf("-1\n"); } else if ((n%2&& mx==my&&mx!=n/2+1)||(n%2==0 && mx==my)) { ll aa; for (aa=1; aa<=n; aa++) if (aa!=mx) break; val=sumx[aa]-dui1; sumx[mx]+=val; sumy[my]+=val; dui1+=val; ll flag=1; for (ll i=1; i<=n; i++) { if (sumy[i]!=sumx[aa]) flag=0; } for (ll i=1; i<=n; i++) { if (sumx[i]!=sumx[aa]) flag=0; } if (dui2!=sumx[aa]) flag=0; if (flag); else val=-1; } else if (mx+my==n+1&& !(mx==n/2+1&&my==n/2+1)) { ll aa; for (aa=1; aa<=n; aa++) if (aa!=mx) break; val=sumx[aa]-dui2; sumx[mx]+=val; sumy[my]+=val; dui2+=val; ll flag=1; for (ll i=1; i<=n; i++) { if (sumy[i]!=sumx[aa]) flag=0; } for (ll i=1; i<=n; i++) { if (sumx[i]!=sumx[aa]) flag=0; } if (dui1!=sumx[aa]) flag=0; if (flag); else val=-1; } else { ll flag=1; for (ll i=1; i<=n/2; i++) if (sumx[i]!=sumx[1]) flag=0; for (ll i=n/2+2; i<=n; i++) if (sumx[i]!=sumx[1]) flag=0; for (ll i=1; i<=n/2; i++) if (sumy[i]!=sumx[1]) flag=0; for (ll i=n/2+2; i<=n; i++) if (sumy[i]!=sumx[1]) flag=0; val=sumx[1]-dui1; val=sumx[1]-dui1; dui1+=val; dui2+=val; if (dui2!=sumx[1]) flag=0; if (flag); else val=-1; } if (val<=0) val=-1; printf("%lld\n",val); return 0;}
0 0
- cf#369-Chris and Magic Square-大模拟+trick
- 模拟-711B - Chris and Magic Square
- Chris and Magic Square
- Chris and Magic Square
- CF-B. Chris and Magic Square(细节把握)
- codeforces 711B. Chris and Magic Square【模拟】
- 【模拟】Codeforces 711B Chris and Magic Square
- B. Chris and Magic Square
- 【codeforces711B】Chris and Magic Square
- B. Chris and Magic Square
- B. Chris and Magic Square
- B. Chris and Magic Square
- B. Chris and Magic Square
- Chris and Magic Square CodeForces
- B. Chris and Magic Square
- Codeforces Round #369 (Div. 2) B. Chris and Magic Square【数学,模拟】
- Codeforces Round #369 (Div. 2) B. Chris and Magic Square
- CodeFroce 369div2 B - Chris and Magic Square
- Android 开发者,你真的会用textview(maxEms和maxLength)的属性吗?
- php缓冲 output_buffering的使用详解
- stm32f103 Flash 读写
- java基础2--static
- 剑指offer-队列和栈操作
- cf#369-Chris and Magic Square-大模拟+trick
- Spring security配置顺序
- 194 laravel 源码分析-1
- JSPatch 近期新特性解析
- SuperSocket
- 转:oracle-ora 各种sql异常描述以及ora返回值意思
- PHP学习笔记
- Codeforces Round #369 (Div. 2) D DFS
- 友盟第三方登录 QQ 微信 新浪微博 自定义友盟的dirlog