【Henu ACM Round#24 B】Gargari and Bishops
【链接】 我是链接,点我呀:)
【题意】
在这里输入题意
【题解】
如果写过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的更多相关文章
- 【Henu ACM Round#24 E】Connected Components
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 要求把连续的一段li..ri的边全都删掉. 然后求剩下的图的联通数 如果暴力的话 复杂度显然是O(k*m)级别的. 考虑我们把li. ...
- 【Henu ACM Round#24 D】Iterated Linear Function
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 把B提取出来就是一个等比数列了. 求和一下会发现是这种形式. \(B*\frac{(A^n-1)}{A-1}+A^n*x\) 则求一 ...
- 【Henu ACM Round#24 C】Quiz
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 肯定是这样 先放k-1个,然后空1个,然后再放k-1个.然后再空1个.. 以此类推. 然后如果(n/k)*(k-1)+n%k> ...
- 【Henu ACM Round#24 A】k-String
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 如果是一个k-string的话. 考虑最后的串假设形式为sss..ss(k个s) 则s中出现的字母,整个串中最后出现的次数肯定为k的 ...
- 【Henu ACM Round#15 F】Arthur and Questions
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] a1+a2+...+ak<a2+a3+...ak+1 ->a1<ak+1 a2+a3+...+ak+1<a3 ...
- 【Henu ACM Round#16 F】Om Nom and Necklace
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] KMP算法可以把"i前缀"pre[i] 分成ssssst的形式 这里t是s的前缀. 然后s其实就是pre[i]中 ...
- 【Henu ACM Round#16 E】Paths and Trees
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 感觉很像一道最短路. 然后就试了一发. 结果真的是.. 只要用一个优先队列优化的dijkstra算法求出每个点的最短路上的前一个点是 ...
- 【Henu ACM Round#18 F】Arthur and Walls
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 考虑,为什么一个连通块里面的空格没有变成一个矩形? 如果不是形成矩形的话. 肯定是因为某个2x2的单张方形里面. 只有一个角是墙.其 ...
- 【Henu ACM Round#17 F】Upgrading Array
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 如果我们对某一个位置i操作两次的话. 显然结果就和操作一次一样. 因为第一次操作过后1..i这些数字就变成是互质的了. gcd为1. ...
随机推荐
- Flask-RESTful(转载)
Flask-RESTful 是一个 Flask 扩展,它添加了快速构建 REST APIs 的支持.它当然也是一个能够跟你现有的ORM/库协同工作的轻量级的扩展.Flask-RESTful 鼓励以最小 ...
- pycharm 2018 3.4 for mac破解
使用pycharm的小伙伴都知道,pycharm分为社区版和专业版,这里具体区别不作过多介绍.本文带大家安装mac版的2018 pycharm 3.4 1.去官网下载pycharm 3.4 for m ...
- Python-基础-day6
1.二进制 前言:计算机一共就能做两件事:计算和通信 2.字符编码 生活中的数字要想让计算机理解就必须转换成二进制.十进制到二进制的转换只能解决计算机理解数字的问题,那么文字要怎么让计算机理解呢? 于 ...
- ResNet入门
CNN入门讲解:什么是残差网络Resnet 变种神经网络的典型代表:深度残差网络 深度残差神经网络ResNet 学习笔记 https://blog.csdn.net/loveliuzz/article ...
- TCP的可靠传输(依赖流量控制、拥塞控制、连续ARQ)
TCP可靠性表现在它向应用层提供的数据是无差错,有序,无丢失,即递交的和发送的数据是一样的. 可靠性依赖于流量控制.拥塞控制.连续ARQ等技术 <TCP/IP详解>中的“分组”是不是就是报 ...
- C#-单元测试知识点
指的是软件中对最小单元进行测试的一种测试方法 开发阶段的测试发现问题并解决问题是最节省时间和成本 Ctrl+R Ctrl+A 自动化执行单元测试 查看代码覆盖率,通常要达到80,90%的代码测试覆盖率 ...
- Scratch单机版下载
Scratch单机版下载 这两个地址速度比较快: Adobe Air:http://7dx.pc6.com/wwb5/AdobeAIR2800127.zip Scratch :http://7dx.p ...
- 【SPOJ-GSHOP】Rama and Friends【贪心】【细节】
题意: 给出n个非严格递增的整数(可能有负数),必须操作k次.每次能够把当中一个数变为它的相反数,使得终于的数列和最大. 输出这个最大和. 考验怎样出坑数据卡自己的程序... #include < ...
- poj - 1050 - To the Max(dp)
题意:一个N * N的矩阵,求子矩阵的最大和(N <= 100, -127 <= 矩阵元素 <= 127). 题目链接:http://poj.org/problem?id=1050 ...
- hdu-3401-Trade-单调队列优化的DP
单调队列入门题... dp[i][j]:第i天.手中拥有j个股票时,获得的最大利润. 若第i天不买不卖:dp[i][j]=max(dp[i][j],dp[i-1][j]); 若第i天买 ...