返回信息流## 找出问题了。
感谢9楼。
> int类型的7/5=1
### 没想到这种问题也十大了...
### 我的思路O(n2)最多最多也就过80%,来这提问就是想搞清楚为啥一个都没过...
### 像14楼说的,可以AC的思路应该是建四个map, 代表米字型四个方向。最后每条方向求C(n,2)
## [hiho上的试题地址](https://hihocoder.com/problemset/problem/1497)
# 结贴 !
***
我的思路:
假设有N的皇后。
我在处理第1个皇后的时候,就看从第2个皇后到最后一个皇后,有多少个皇后可以和第1个皇后攻击(三种方式,有一种满足即可)。有一个就count++。
处理第2个皇后的时候,就看从第3个皇后到最后一个皇后,有多少个皇后可以和第2个皇后攻击。有一个就count++。
....
一直到第N-1个皇后。
-----------------------------
## 我说下我的思路吧(最终0分),大家看看哪不对。。。
### 建一个二维数组pos[N][2] 放N个点的坐标
```Python
for i in 0到N-1
for j in i+1到N
if pos[i][0] == pos[j][0] // (垂直)
count++;
else if pos[i][1] == pos[j][1] // (平行)
count++;
else if (pos[j][1]-pos[i][1])/(pos[j][0]-pos[i][0]) 的绝对值 == 1
count++;
```
### 最后输出count
#### 我是帮同学做的,改了三次,都是0分。关键是我本地的测试用例都过了呀。。。
### 有没有大神说下我的思路哪里不对,或者提供几个边界用例。
# 这个问题想不明白,今晚真睡不好了!
这是一条镜像帖。来源:北邮人论坛 / acm-icpc / #92831同步于 2017/4/8
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ACM_ICPC机器人发帖
今晚微软第一题(Queen Attack)
Tension1900
2017/4/8镜像同步18 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
count++不对吧,假设某一列有n个queue,如果此时又找到一个queue位于该列,那么应该是count+=n,这原有的n个queue可以和现在这queue组成n个pair
【 在 liuyehcf 的大作中提到: 】
: count++不对吧,假设某一列有n个queue,如果此时又找到一个queue位于该列,那么应该是count+=n,这原有的n个queue可以和现在这queue组成n个pair
我不是按照这样找的。
假设有N的皇后。
我在处理第1个皇后的时候,就看从第2个皇后到最后一个皇后,有多少个皇后可以和第1个皇后攻击(三种方式,有一种满足即可)。有一个就count++。
处理第2个皇后的时候,就看从第3个皇后到最后一个皇后,有多少个皇后可以和第2个皇后攻击。有一个就count++。
刚没看仔细哈,这样好像没啥问题。。。(j应该从i+1到N-1,不然会越界啊)
会不会是你输出的格式不对?题目的要求是通过标准输出返回
【 在 Tension1900 的大作中提到: 】
: 我不是按照这样找的。
: 假设有N的皇后。
: 我在处理第1个皇后的时候,就看从第2个皇后到最后一个皇后,有多少个皇后可以和第1个皇后攻击(三种方式,有一种满足即可)。有一个就count++。
: ...................
#include<bits/stdc++.h>
using namespace std;
map<long long,long long> m1;
map<long long,long long> m2;
map<long long,long long> m3;
map<long long,long long> m4;
int main()
{
int n;
cin>>n;
while(n--)
{
int a,b;
cin>>a>>b;
m1[a]++;
m2[b]++;
m3[a-b]++;
m4[b+a]++;
}
long long res=0;
for(auto i:m1)
{
res+=i.second*(i.second-1)/2;
}
for(auto i:m2)
{
res+=i.second*(i.second-1)/2;
}
for(auto i:m3)
{
res+=i.second*(i.second-1)/2;
}
for(auto i:m4)
{
res+=i.second*(i.second-1)/2;
}
cout<<res<<endl;
}
【 在 liuyehcf 的大作中提到: 】
: 刚没看仔细哈,这样好像没啥问题。。。(j应该从i+1到N-1,不然会越界啊)
: 会不会是你输出的格式不对?题目的要求是通过标准输出返回
格式应该没问题,真是搞不懂了
我和楼主一样的思路,java写的,结果也是用long存的,结果只通过百分之十。并没有提示超时,实在想不懂
【 在 liuyehcf 的大作中提到: 】
: 刚没看仔细哈,这样好像没啥问题。。。(j应该从i+1到N-1,不然会越界啊)
: 会不会是你输出的格式不对?题目的要求是通过标准输出返回