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

【题意】

在这里输入题意

【题解】

如果写过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. Flask-RESTful(转载)

    Flask-RESTful 是一个 Flask 扩展,它添加了快速构建 REST APIs 的支持.它当然也是一个能够跟你现有的ORM/库协同工作的轻量级的扩展.Flask-RESTful 鼓励以最小 ...

  2. pycharm 2018 3.4 for mac破解

    使用pycharm的小伙伴都知道,pycharm分为社区版和专业版,这里具体区别不作过多介绍.本文带大家安装mac版的2018 pycharm 3.4 1.去官网下载pycharm 3.4 for m ...

  3. Python-基础-day6

    1.二进制 前言:计算机一共就能做两件事:计算和通信 2.字符编码 生活中的数字要想让计算机理解就必须转换成二进制.十进制到二进制的转换只能解决计算机理解数字的问题,那么文字要怎么让计算机理解呢? 于 ...

  4. ResNet入门

    CNN入门讲解:什么是残差网络Resnet 变种神经网络的典型代表:深度残差网络 深度残差神经网络ResNet 学习笔记 https://blog.csdn.net/loveliuzz/article ...

  5. TCP的可靠传输(依赖流量控制、拥塞控制、连续ARQ)

    TCP可靠性表现在它向应用层提供的数据是无差错,有序,无丢失,即递交的和发送的数据是一样的. 可靠性依赖于流量控制.拥塞控制.连续ARQ等技术 <TCP/IP详解>中的“分组”是不是就是报 ...

  6. C#-单元测试知识点

    指的是软件中对最小单元进行测试的一种测试方法 开发阶段的测试发现问题并解决问题是最节省时间和成本 Ctrl+R Ctrl+A 自动化执行单元测试 查看代码覆盖率,通常要达到80,90%的代码测试覆盖率 ...

  7. Scratch单机版下载

    Scratch单机版下载 这两个地址速度比较快: Adobe Air:http://7dx.pc6.com/wwb5/AdobeAIR2800127.zip Scratch :http://7dx.p ...

  8. 【SPOJ-GSHOP】Rama and Friends【贪心】【细节】

    题意: 给出n个非严格递增的整数(可能有负数),必须操作k次.每次能够把当中一个数变为它的相反数,使得终于的数列和最大. 输出这个最大和. 考验怎样出坑数据卡自己的程序... #include < ...

  9. poj - 1050 - To the Max(dp)

    题意:一个N * N的矩阵,求子矩阵的最大和(N <= 100, -127 <= 矩阵元素 <= 127). 题目链接:http://poj.org/problem?id=1050 ...

  10. hdu-3401-Trade-单调队列优化的DP

    单调队列入门题... dp[i][j]:第i天.手中拥有j个股票时,获得的最大利润. 若第i天不买不卖:dp[i][j]=max(dp[i][j],dp[i-1][j]); 若第i天买         ...