【链接】 我是链接,点我呀:)

【题意】

在这里输入题意

【题解】

如果写过n皇后问题。
肯定都知道
某个点(i,j)和它在同一条对角线上的点分别是i+j的值和i-j的值相同的点。

然后会发现选择的两个点其实就对应了两组i+j和i-j

且每组i+j和i-j

i+j的奇偶性和i-j的奇偶性要是一样的

假设第一组i+j和i-j的奇偶性都是x

第二组i+j和i-j的奇偶性是y

那么x和y要不一样才行。

不然会有重复的点。

会发现只要满足这个就能不重复了。

(画图就知道了

那么我们处理出来i+j和i-j的所有和就好。

排个序然后两重循环找最大的奇和最大的偶就好。。

(i+j和i-j最多2*n-1组,所以O(N^2)是可以的

【代码】

#include <bits/stdc++.h>
#define LL long long
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
#define all(x) x.begin(),x.end()
#define pb push_back
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
using namespace std; const double pi = acos(-1);
const int dx[4] = {0,0,1,-1};
const int dy[4] = {1,-1,0,0};
const int N = 2000;
const LL INF = 1e16; int n;
LL a[N+10][N+10];
map<int,LL> zheng,fu;
vector<pair<LL,int> > v1,v2; int main(){
#ifdef LOCAL_DEFINE
freopen("rush_in.txt", "r", stdin);
#endif
ios::sync_with_stdio(0),cin.tie(0);
cin >> n;
rep1(i,1,n)
rep1(j,1,n)
cin >> a[i][j]; rep1(i,1,n)
rep1(j,1,n){
zheng[i-j]+=a[i][j];
fu[i+j]+=a[i][j];
} for (auto temp:zheng){
v1.push_back(make_pair(temp.second,temp.first));
} for (auto temp:fu){
v2.push_back(make_pair(temp.second,temp.first));
}
sort(v1.begin(),v1.end());
reverse(all(v1)); sort(all(v2));
reverse(all(v2)); vector<int> ans;ans.clear();
LL tt = 0;
int tempx = -1,tempy = -1;LL ttt = -INF; for (auto x:v1){
if (x.second&1){
for (auto y:v2)
if (y.second&1){
int i = (x.second+y.second)/2;
int j = (y.second-x.second)/2;
if (i>=1 && i<=n && j>=1 &&j<=n) {
LL temp = x.first+y.first-a[i][j];
if (temp>ttt){
ttt = temp;
tempx = i,tempy = j;
}
}
}
}
}
tt+=ttt;
ans.push_back(tempx),ans.push_back(tempy); tempx = -1,tempy = -1;ttt = -INF; for (auto x:v1){
if ((x.second&1)==0){
for (auto y:v2)
if ((y.second&1)==0){
int i = (x.second+y.second)/2;
int j = (y.second-x.second)/2;
if (i>=1 && i<=n && j>=1 &&j<=n) {
LL temp = x.first+y.first-a[i][j];
if (temp>ttt){
ttt = temp;
tempx = i,tempy = j;
}
}
}
}
}
tt+=ttt;
ans.push_back(tempx),ans.push_back(tempy); cout<<tt<<endl;
for (int x:ans)cout<<x<<' ';
return 0;
}

【Henu ACM Round#24 B】Gargari and Bishops的更多相关文章

  1. 【Henu ACM Round#24 E】Connected Components

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 要求把连续的一段li..ri的边全都删掉. 然后求剩下的图的联通数 如果暴力的话 复杂度显然是O(k*m)级别的. 考虑我们把li. ...

  2. 【Henu ACM Round#24 D】Iterated Linear Function

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 把B提取出来就是一个等比数列了. 求和一下会发现是这种形式. \(B*\frac{(A^n-1)}{A-1}+A^n*x\) 则求一 ...

  3. 【Henu ACM Round#24 C】Quiz

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 肯定是这样 先放k-1个,然后空1个,然后再放k-1个.然后再空1个.. 以此类推. 然后如果(n/k)*(k-1)+n%k> ...

  4. 【Henu ACM Round#24 A】k-String

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 如果是一个k-string的话. 考虑最后的串假设形式为sss..ss(k个s) 则s中出现的字母,整个串中最后出现的次数肯定为k的 ...

  5. 【Henu ACM Round#15 F】Arthur and Questions

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] a1+a2+...+ak<a2+a3+...ak+1 ->a1<ak+1 a2+a3+...+ak+1<a3 ...

  6. 【Henu ACM Round#16 F】Om Nom and Necklace

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] KMP算法可以把"i前缀"pre[i] 分成ssssst的形式 这里t是s的前缀. 然后s其实就是pre[i]中 ...

  7. 【Henu ACM Round#16 E】Paths and Trees

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 感觉很像一道最短路. 然后就试了一发. 结果真的是.. 只要用一个优先队列优化的dijkstra算法求出每个点的最短路上的前一个点是 ...

  8. 【Henu ACM Round#18 F】Arthur and Walls

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 考虑,为什么一个连通块里面的空格没有变成一个矩形? 如果不是形成矩形的话. 肯定是因为某个2x2的单张方形里面. 只有一个角是墙.其 ...

  9. 【Henu ACM Round#17 F】Upgrading Array

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 如果我们对某一个位置i操作两次的话. 显然结果就和操作一次一样. 因为第一次操作过后1..i这些数字就变成是互质的了. gcd为1. ...

随机推荐

  1. 为Electron 安装 vue-devtool等扩展

    相关代码: https://github.com/WozHuang/Barrage-helper/blob/master/src/main/index.dev.js 在SPA逐渐成为构建优秀交互体验应 ...

  2. 想说再见不容易,win7最新市占率依然超36%

    微软正在通过努力让Windows 7用户升级至Windows 10,不过从目前的市占率来看,他们还是要加把劲了. 微软正在通过努力让Windows 7用户升级至Windows 10,不过从目前的市占率 ...

  3. django-9-请求与响应

    写在表单下面{% csrf_token %} <<<文件上传>>>settings.py UPLOAD_ROOT = os.paht.join(BASE_DIR, ...

  4. 移动端rem自适应设置

    对于移动端自适应各种终端的解决方案较多,本篇只是选择其中一种rem适配,我个人做移动端最喜欢的方案. rem就是以html根元素的字体大小为参考,比如html:font-size:20px;1rem= ...

  5. android camera2

    1.camera2api的部分描述: CameraCaptureSession api地址:https://developer.android.com/reference/android/hardwa ...

  6. ASP.NET-后台cookie与前台JQUERY解析cookie

    在controller中给cookie赋值 HttpCookie cookie =newHttpCookie("pageInfo"); cookie["page_inde ...

  7. 关于Segmentation fault错误

    今天敲代码时候出现了Segmentation fault,在网上查了一些资料,基本上的原因是.非法的内存訪问. 比如数组的越界,在循环操作时循环变量的控制问题,也有字符串拷贝时长度溢出,指针指向了非法 ...

  8. hdu1290

    由二维的切割问题可知,平面切割与线之间的交点有关,即交点决定射线和线段的条数,从而决定新增的区域数. 当有n-1个平面时,切割的空间数为f(n-1).要有最多的空间数.则第n个平面需与前n-1个平面相 ...

  9. hdu 4882 ZCC Loves Codefires(贪心)

    # include<stdio.h> # include <algorithm> # include <string.h> using namespace std; ...

  10. 闭包(closure)与协程共用时要注意的事情

    闭包是一种能够让你用非常舒服的方式来编程的小技巧,Go也支持闭包. 假设从来没有接触过闭包,想在一開始就弄懂什么是闭包(closure)是非常困难的,就像递归一样,直到你真正写过.用过它,你才干真正的 ...