博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
S失败者的典型-UVA1587
阅读量:4143 次
发布时间:2019-05-25

本文共 2352 字,大约阅读时间需要 7 分钟。

zj说,我们一起做一道题吧!
我说好啊!
十分钟之后..
"wa x1"
我打了个框架...
五分钟后
"wa x2"
zj打游戏去了.....
半个小时之后我终于样例过了...
我"你正方形考虑了吗"
zj:"啊!天呢"
然后zj就ac了
然后我五个小时之后还在wa...
我..
样例试了试都差不多我还是放弃吧emmmm= =
ac的代码到处都有....
我写一下经验教训吧
1.可以用set,但是这个自动是不重复的排序好了的集合
所以要重载比较
****结构体中的比较
bool friend operator<(node x,node y)
{if(x.x1>y.x2)return true;
if(x.x1==y.x1&&x.x2>y.x2)return true;
return false;
}
2.使用set要清空 
用clear()..不然呢?
就像每次用的flag药放到循环里面一样啊
3.参考前面那几个题,不用开大数组存起来,而且数据只用一次(类似)所以直接每6round开一个循环就好了,我很暴力的一次读入6个
4.要特判正方形的1情况
5.4 1 1 现象,开始用的无序的set是不行的
用multiset返回count可以解决
写法是s1.count(node[i]);
6. 1 1 2 2 3 3 现象特判 了
7.我是边数和..  两个框的,所以比了2次
结构体里面,是每个都等于2才可以
边数里面,每个都是4才可以

8.之前想因为不好表示的话,只要首个和尾数

#include
#include
#include
using namespace std;struct node{ int x1; int x2; //int count; bool friend operator<(node x, node y) { if (x.x1
s1; multiset
s2; while (cin >> node1[0].x1 >> node1[0].x2 >> node1[1].x1 >> node1[1].x2 >> node1[2].x1 >> node1[2].x2 >> node1[3].x1 >> node1[3].x2 >> node1[4].x1 >> node1[4].x2 >> node1[5].x1 >> node1[5].x2){ s1.clear(); s2.clear(); bool flag = true; for (int i = 0; i < 6; i++) { if (node1[i].x1>node1[i].x2) { int temp; temp = node1[i].x1; node1[i].x1 = node1[i].x2; node1[i].x2 = temp; }// to make sure small to big s1.insert(node1[i]); s2.insert(node1[i].x1); s2.insert(node1[i].x2); } /// 2 2 2 可以 3 3 if (s1.count(node1[0]) == 6 && s2.count(node1[0].x1) == 12) flag = true; else if (node1[0].x1 == node1[0].x2) flag = false; else if (s1.count(node1[0]) != 2||s1.count(node1[3])!=2|| s1.count(node1[5]) != 2) flag = false; //的确不行啊= = 3个的话真的差得很多 // else if() //flag=true; // 怎么确定是三个边呢? 6 个数如何确定两两相同? else if (s2.count(node1[0].x1) != 4 || s2.count(node1[0].x2) != 4||s2.count(node1[1].x1) != 4 || s2.count(node1[1].x2) != 4||s2.count(node1[2].x1) != 4 || s2.count(node1[2].x2) != 4||s2.count(node1[3].x1) != 4 || s2.count(node1[3].x2) != 4||s2.count(node1[4].x1) != 4 || s2.count(node1[4].x2) != 4||s2.count(node1[5].x1) != 4 || s2.count(node1[5].x2) != 4) flag = false; if (!flag) cout << "IMPOSSIBLE" << endl; else cout << "POSSIBLE" << endl; } return 0;}

//其实晚上看了看.. 对于 1 2 1 2 1 1 1 1 1 1 1 1 这组,就没法判断了....

所以说还是啊...正向考虑就可以了,拔毛..  拔不干净....

不是主流诶....  并且大家都没和你这么写,,,,

1.每个面都能找到他的对面

2.每条边都能重叠

其实就可以了

唉  思考问题的角度啊

溜了溜了 等有空登qq补一下zj的图

转载地址:http://jmuti.baihongyu.com/

你可能感兴趣的文章
JavaScript substring() 方法
查看>>
HTML 5 新的表单元素 datalist keygen output
查看>>
(转载)正确理解cookie和session机制原理
查看>>
jQuery ajax - ajax() 方法
查看>>
将有序数组转换为平衡二叉搜索树
查看>>
最长递增子序列
查看>>
从一列数中筛除尽可能少的数,使得从左往右看这些数是从小到大再从大到小...
查看>>
判断一个整数是否是回文数
查看>>
经典shell面试题整理
查看>>
腾讯的一道面试题—不用除法求数字乘积
查看>>
素数算法
查看>>
java多线程环境单例模式实现详解
查看>>
将一个数插入到有序的数列中,插入后的数列仍然有序
查看>>
在有序的数列中查找某数,若该数在此数列中,则输出它所在的位置,否则输出no found
查看>>
万年历
查看>>
作为码农你希望面试官当场指出你错误么?有面试官这样遭到投诉!
查看>>
好多程序员都认为写ppt是很虚的技能,可事实真的是这样么?
查看>>
如果按照代码行数发薪水会怎样?码农:我能刷到公司破产!
查看>>
程序员失误造成服务停用3小时,只得到半月辞退补偿,发帖喊冤
查看>>
码农:很多人称我“技术”,感觉这是不尊重!纠正无果后果断辞职
查看>>