
SGU
文章平均质量分 66
byijie
这个作者很懒,什么都没留下…
展开
-
SGU114 Telecasting station 三分
WA点: 把P也当浮点数输入了...wa test1 一次...#include#include#include#include#include#includeusing namespace std;const double eps=1e-8;const double inf=1e10;double X[15005];int P[15005];int N;int sgn原创 2013-05-15 21:16:28 · 764 阅读 · 0 评论 -
SGU 106 The euqation
坑点:在处理闭区间边界时,涉及到取ceil和floor的问题,当a>0,b>0时,a/b取floor,可以用(a-1)/b+1取ceil,而a0时,a/b取ceil,可以用(a+1)/b-1取floor,a=0特殊考虑,直接a/b就行。 #include#include#include#include#include#includeusing namespace std;type原创 2013-05-14 23:52:01 · 875 阅读 · 1 评论 -
SGU 101 domino
坑点:vector建边时要注意当一条边是自己连自己时,要特殊判断一下,不然反向边会建错。 而这会导致前一个边的反向边建错,而不会影响后一个,这就是为什么出现改变一下搜边顺序就可以AC的情况。#include#include#include#include#include#include#include#includeusing namespace std;struct Edg原创 2013-05-14 10:57:27 · 719 阅读 · 0 评论 -
SGU145 Strange People 严格K短路
严格的意思是每个节点只允许访问一次。解法:二分k短路路长。注意点: 观察数据范围,应该是稠密图,比较适合矩阵,测了一下矩阵比邻接表快100+ms。 另外可以先做一次spfa预处理,利用节点到t的距离剪枝,这能从300+ms优化到31ms。 TLE点:我之前二分的时候,每次是求出满足要求的路径个数,TLE 3。 看了别人代码发现每次只要找到K条路径就行,看下数据,k矩阵+spf原创 2013-05-23 19:30:02 · 1268 阅读 · 0 评论 -
SGU143 Long Live the Queen
树形DPWA点:注意要找的是非空集合,测一下边界数据就能发现这个WA点,也就是输入1 -5时答案是-5。RE点:注意存的是双向边,要在给的数据范围上乘2。#include#include#include#include#include#includeusing namespace std;struct edge{ int to; edge* next;原创 2013-05-22 15:19:44 · 1026 阅读 · 0 评论 -
SGU142 Keyword
枚举长度+hash,可以知道长度不会超过log(n),所以复杂度是nlog(n), 10^7次方竟然62ms过了 >.#include#include#include#include#include#includeusing namespace std;bool flag[1100005];int pow[25];char s[500005],output[500005];原创 2013-05-22 14:18:19 · 978 阅读 · 0 评论 -
SGU141 Jumping joe
又用到了扩展欧几里得,这题其实主要是手推公式... 草稿纸被我扔进垃圾桶N次,又被我捡回来N次...T_T首先发现 (p1-n1)x1+(p2-n2)x2 =p,又是整数解,联想扩展欧几里得p1-n1=s p2-n2=tp1+n1+p2+n2=kp1>=0,p2>=0,n1>=0,n2>=0进一步推得2*(n1+n2)=k-s-tn1>=max(0,-s)n2>原创 2013-05-21 22:33:18 · 1139 阅读 · 0 评论 -
SGU140 Integer Sequences
扩展欧几里得的多元应用。 感觉解方程组和高斯消元这些东西写起来挺烦的。注意要求输出的x全为非负值。#include#include#include#include#include#includeusing namespace std;void ex_gcd(int a,int b,int &x,int &y,int &d){ if(b==0) {原创 2013-05-21 19:04:34 · 1231 阅读 · 1 评论 -
SGU133 Border
不知道为什么,之前都是while(scanf()!=EOF)可以,而这次就不行解法:排序,维护r的最值即可...其实是不需要priority_queue的...ps:刚把今天codeforces的题扫了一眼...然后就没有然后了...@_@ ,我太弱了...弱了...#include#include#include#include#include#includeusing原创 2013-05-19 21:45:28 · 733 阅读 · 0 评论 -
SGU134 Centroid
#include#include#include#include#includeusing namespace std;struct edge{ int to; edge *next;}ee[32005],*e[16005];bool visited[16005];int cnt[16005],val[16005],cen,tot,output[16005],o原创 2013-05-20 09:22:26 · 824 阅读 · 0 评论 -
SGU131 Hardwood floor
WA点:我把所有的转移都在纸上写出来了后,发现有些情况是重复的,于是手贱给删掉了... 这样就少计算了一些情况,或者说删掉后,一个可行状态对应的方案数要乘一个常数。做法:对于一行来说,1代表在此行填充,0代表未在此行填充(也就是需要靠上一行来填充),其实就是枚举上一行的填充状态然后推出下一行的所有可行状态,然后保存起来即可。#include#include#include#inclu原创 2013-05-19 16:01:18 · 1109 阅读 · 1 评论 -
SGU128 Snake
注意:用vector离散化时,先sort,再unique。#include#include#include#include#include#include#includeusing namespace std;int tree[10005],f[10005],n;vector d;struct point{ int x,y,id; bool isl;}p[原创 2013-05-19 10:52:22 · 805 阅读 · 0 评论 -
SGU122 满足ORE性质的图求哈密尔顿路径
ORE性质,任意两个互异不相邻的点的度的和大于等于n(去除重边和自环),即deg(u)+deg(v)>=n。详细资料:http://www.nocow.cn/index.php/Sgu/122,http://blog.youkuaiyun.com/volzkzg/article/details/7514103解决方法就是: 从一点开始向两边扩展,直至不能扩展,然后连成环,判断点数是否为n,若不为n,则原创 2013-05-18 17:11:03 · 1070 阅读 · 0 评论 -
sgu 108 self-numbers 2
技巧:滚动筛法,感觉就像是弄了个缓存区一样,由于每次最多加63,所以用两块大小大于等于63的空间充当缓存区就可以实现筛所有的数了。wa点:用unique,应该先sort再unique, 并且在lower_bound时注意使用新的尾部点。tle点: 使用long long 会超时,而int即可,原因应该是long long 输入输出以及位运算更加耗时吧#include#include原创 2013-05-15 15:39:05 · 841 阅读 · 0 评论