题意:平面上给若干点,问它们是不是关于某垂直于x轴的直线对称。


代码:(Wrong Answer, –ms)

//UVa1595 - Symmetry
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
struct point {
int x, y;
bool operator <(point& that)const {
if (y == that.y) return x < that.x;
return y < that.y;
}
};
int T, N; int main() {
//freopen("in.txt", "r", stdin);
scanf("%d", &T);
while (T--) {
scanf("%d", &N);
vector<point> all(N);
int sym(0);//2倍的对称轴
for (auto &r : all) {
scanf("%d%d", &r.x, &r.y);
sym += r.x;
}
sym = sym * 2 / N;
sort(all.rbegin(), all.rend());
//printf("sym:%d\n", sym);for (int i = 0;i < N;++i) printf("%d&%d ", all[i].y, all[i].x);printf("\n");//------------
int i = 0;
while (i < N) {
int k, ij, j = i;
while (++j != N && all[j].y == all[i].y);
ij = (--j - i) / 2;
//printf("i:%d\t", i);printf("j:%d\t", j);printf("ij:%d\n", ij);//----------
for (k = 0;k <= ij;++k) {
if (all[i + k].x + all[j - k].x != sym) break;
}
if (k <= ij) break;
i = j + 1;
}
printf((i < N ? "NO\n" : "YES\n"));
}
return 0;
}

分析:好气呀,这么简单的题目,做了一下午+一上午,无限WA,至今找不到错误。不玩了,学会放弃,以后有心情再看。

我的想法是:定义一个结构体存每个点的x、y,读取每个数据后排序,优先y从小到大,其次x从小到大(目的是方便找出每个点对应的点。例如相同的y里面,最小的x与最大的x对应)。随便找出一个可能的对称轴(可以是找最大、最小的x,相加除以二;也可以所有的x相加再除以N。我选的后者)。然后取每对对应的两个点看相加的结果是不是对称轴两倍。

然而自己的测试数据都对,到了提交就总是WA。换成网上都用的set的方法重新做一遍,还是WA,开始怀疑人生。以下是我的测试数据,我实在是找不到其他的特殊情况了。

12

5
-2 5
0 0
6 5
4 0
2 3 4
2 3
0 4
4 0
0 0 4
5 14
6 10
5 10
6 14 10
7 -666
0 5
-1 -666
7 5
3 4
0 -666
4 4
4 -666
3 -666
8 -666 1
233 322 2
-10000 999
9999 998 2
-999 999
0 999 3
1 1
2 1
4 1 3
1 1
2 1
3 1 3
1 1
2 2
3 1 4
0 1
2 1
3 1
5 1 37
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
1 9
2 8
3 7
4 6
6 4
7 3
8 2
9 1
5 6
5 7
5 55
5 4
5 3
5 -45
6 5
7 5
8 5
10 5
55 5
4 5
3 5
2 5
0 5
-45 5
8 100
7 100
3 100
2 100

[刷题]算法竞赛入门经典(第2版) 5-6/UVa1595 - Symmetry的更多相关文章

  1. [刷题]算法竞赛入门经典(第2版) 4-6/UVa508 - Morse Mismatches

    书上具体所有题目:http://pan.baidu.com/s/1hssH0KO 代码:(Accepted,10 ms) //UVa508 - Morse Mismatches #include< ...

  2. [刷题]算法竞赛入门经典(第2版) 5-15/UVa12333 - Revenge of Fibonacci

    题意:在前100000个Fibonacci(以下简称F)数字里,能否在这100000个F里找出以某些数字作为开头的F.要求找出下标最小的.没找到输出-1. 代码:(Accepted,0.250s) / ...

  3. [刷题]算法竞赛入门经典(第2版) 5-13/UVa822 - Queue and A

    题意:模拟客服MM,一共有N种话题,每个客服MM支持处理其中的i个(i < N),处理的话题还有优先级.为了简化流程方便出题,设每个话题都是每隔m分钟来咨询一次.现知道每个话题前来咨询的时间.间 ...

  4. [刷题]算法竞赛入门经典(第2版) 4-5/UVa1590 - IP Networks

    书上具体所有题目:http://pan.baidu.com/s/1hssH0KO 代码:(Accepted,0 ms) //UVa1590 - IP Networks #include<iost ...

  5. [刷题]算法竞赛入门经典(第2版) 6-7/UVa804 - Petri Net Simulation

    题意:模拟Petri网的执行.虽然没听说过Petri网,但是题目描述的很清晰. 代码:(Accepted,0.210s) //UVa804 - Petri Net Simulation //Accep ...

  6. [刷题]算法竞赛入门经典(第2版) 6-6/UVa12166 - Equilibrium Mobile

    题意:二叉树代表使得平衡天平,修改最少值使之平衡. 代码:(Accepted,0.030s) //UVa12166 - Equilibrium Mobile //Accepted 0.030s //# ...

  7. [刷题]算法竞赛入门经典(第2版) 6-1/UVa673 6-2/UVa712 6-3/UVa536

    这三题比较简单,只放代码了. 题目:6-1 UVa673 - Parentheses Balance //UVa673 - Parentheses Balance //Accepted 0.000s ...

  8. [刷题]算法竞赛入门经典(第2版) 5-16/UVa212 - Use of Hospital Facilities

    题意:模拟患者做手术. 其条件为:医院有Nop个手术室.准备手术室要Mop分钟,另有Nre个恢复用的床.准备每张床要Mre分钟,早上Ts点整医院开张,从手术室手术完毕转移到回复床要Mtr分钟.现在医院 ...

  9. [刷题]算法竞赛入门经典(第2版) 5-11/UVa12504 - Updating a Dictionary

    题意:对比新老字典的区别:内容多了.少了还是修改了. 代码:(Accepted,0.000s) //UVa12504 - Updating a Dictionary //#define _XieNao ...

  10. [刷题]算法竞赛入门经典(第2版) 5-10/UVa1597 - Searching the Web

    题意:不难理解,照搬题意的解法. 代码:(Accepted,0.190s) //UVa1597 - Searching the Web //#define _XIENAOBAN_ #include&l ...

随机推荐

  1. Spring定时任务解决博客缓存数据更新问题

    最近在做博客系统的时候,由于很多页面都有右边侧边栏,内容包括博客分类信息,归档日志,热门文章,标签列表等,为了不想每次访问页面都去查询数据库,因为本身这些东西相对来说是比较固定的,但是也有可能在网站后 ...

  2. empty 语句

    empty 语句: 用来表明没有语句, 尽管JavaScript语法希望有语句会被执行. empty语句 用分号表示 (;) ,用来指明没有语句会被执行, 尽管此时JavaScript语法需要执行语句 ...

  3. javascript中replace使用总结

    ECMAScript提供了replace()方法.这个方法接收两个参数,第一个参数可以是一个RegExp对象或者一个字符串,第二个参数可以是一个字符串或者一个函数.现在我们来详细讲解可能出现的几种情况 ...

  4. flask框架+pygal+sqlit3搭建图形化业务数据分析平台

    一. 前言 先说下主要的框架和主要的图形库的特点:(个人见解) Django:python开发的一个重量级的web框架,集成了MVC和ORM等技术,设计之初是为了使开发复杂的.数据库驱动的网站变得简单 ...

  5. js原生的轮播图

    <!DOCTYPE html>   <html>   <head>   <meta charset="UTF-8">   <t ...

  6. Access-简易进销存管理系统

    p{ font-size: 15px; } .alexrootdiv>div{ background: #eeeeee; border: 1px solid #aaa; width: 99%; ...

  7. Uva 11029 Leading and Trailing (求n^k前3位和后3位)

    题意:给你 n 和 k ,让你求 n^k 的前三位和后三位 思路:后三位很简单,直接快速幂就好,重点在于如何求前三位,注意前导0 资料:求n^k的前m位 博客连接地址 代码: #include < ...

  8. Java Stream API性能测试

    已经对Stream API的用法鼓吹够多了,用起简洁直观,但性能到底怎么样呢?会不会有很高的性能损失?本节我们对Stream API的性能一探究竟. 为保证测试结果真实可信,我们将JVM运行在-ser ...

  9. JavaScript Break 和 Continue 语句

    1.break:终止本层循坏,继续执行本次循坏后面的语句: 当循坏有多层时,break只会跳过一层循坏 2.continue:跳过本次循坏,继续执行下次循坏 对于for循环,continue执行后,继 ...

  10. python 面向对象编程(一)

    一.如何定义一个类 在进行python面向对象编程之前,先来了解几个术语:类,类对象,实例对象,属性,函数和方法. 类是对现实世界中一些事物的封装,定义一个类可以采用下面的方式来定义: class c ...