上一页 1 ··· 3 4 5 6 7 8 9 下一页
摘要: 算好题目,反正我没想到可以用图论做(虽然现在做的是图论专题= =)首先是要把求每个位置上的值转化为求 “前缀和之差”,这是一个很有用的技巧其次,由输入的(n+(n-1)+...+2+1)个符号,可以确定出 n个前缀和的大小关系,并从大到小做有向边建图之后,用拓扑排序依次从大到小找到前缀和,与此同时对num[]做处理,实际上是离散出这n个值。这n值符合之前的大小关系,所以他们两两相减,就得到了题目要求的值 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 const int MAXN=15; 8 9 .. 阅读全文
posted @ 2013-07-31 19:53 Thousand Sunny 阅读(248) 评论(0) 推荐(0) 编辑
摘要: 明显的欧拉回路,把颜色作为点,建图后,做一遍欧拉回路。不过我是现学的,打印路径上纠结了一下,发现随着FindEuler()的递归调用的结束,不断把点压入栈中,从后向前打印,遇到"支路"会先处理好支路再继续的。这样就可以顺序打印路径了。如果是直接打印或放在队列里,会发现打印出来的项链的关系正好相反,即前一行的第一个与本行的第二个颜色相同。邻接表又开小了,MAXN 2 #include 3 #include 4 #include 5 using namespace std; 6 7 const int MAXN=55; 8 const int MAXM=1111; 9 10 i 阅读全文
posted @ 2013-07-31 19:28 Thousand Sunny 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 好复杂的样子。。其实就是纸老虎,多了方向、颜色两个状态罢了,依旧是bfs。更新的时候注意处理好就行了,vis[][][][]要勇敢地开。不过这个代码交了十几遍的submission error,手都软了代码应该是没有问题,也可以参考http://blog.csdn.net/wjjayo/article/details/5809911 1 #include 2 #include 3 #include 4 using namespace std; 5 6 const int MAXN=30; 7 8 struct P{ 9 int x,y,d,c;10 int bfn;11 ... 阅读全文
posted @ 2013-07-31 19:13 Thousand Sunny 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 开始刷题啦= = 痛并快乐着,学到新东西的感觉其实比看那些无脑的小说、电视剧有意思多了bfs裸体,关键是先把所有的着火点放入队列,分开一个一个做bfs会超时的发现vis[][]是多余的,完全可以用num[][]代替了,不过不提交了。。。uva的submission error跳得我蛋疼,可是介于管理员Carlos及时回复了,还是理解人家吧 1 #include 2 #include 3 4 const int MAXN=1111; 5 6 struct P{ 7 int x,y; 8 int c; 9 }; 10 11 P que[MAXN*MAXN];... 阅读全文
posted @ 2013-07-31 19:03 Thousand Sunny 阅读(207) 评论(0) 推荐(0) 编辑
摘要: A水题,渐渐发现没有快感了。。求最小公倍数。 1 #include 2 #define LL __int64 3 int main() 4 { 5 int T; 6 LL n,s; 7 scanf("%d",&T); 8 while(T--) 9 {10 scanf("%I64d",&n);11 if(n==2){12 printf("1\n");13 continue;14 }15 if(n%2){16 printf(... 阅读全文
posted @ 2013-07-30 18:12 Thousand Sunny 阅读(254) 评论(2) 推荐(0) 编辑
摘要: 借用题解上的话,就是乱搞题。。题意理解错了,其实是坐标系画错了,人家个坐标系,我给当矩阵画,真好反了。对于题目描述和数据不符的问题,果断相信数据了(这是有前车之鉴的hdu 4612 Warm up,明明有重边,出题人欺骗我们的智商)然后就杯具了。我是用并查集搞得。 1 #include 2 #include 3 4 const int MAXN=105; 5 6 int mp[MAXN][MAXN]; 7 int p[20000]; 8 int vis[20000]; 9 int find(int x)10 {11 return p[x]==x?x:p[x]=find(p[x]);... 阅读全文
posted @ 2013-07-29 22:01 Thousand Sunny 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 第一眼,暴力第二眼,超时第三眼,尝试暴力一下吧第四眼,N*M*T*(N+M),肯定超时原来是错在第四眼上了T^T 1 #include 2 #include 3 using namespace std; 4 5 const int MAXN=333; 6 7 int a[MAXN][MAXN]; 8 9 int main()10 {11 int T,n,m,mi;12 int i,j,k,x,y;13 scanf("%d",&T);14 while(T--)15 {16 scanf("%d%d",&n,&m);17 ... 阅读全文
posted @ 2013-07-29 21:41 Thousand Sunny 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 大一学弟表示刚学过高数,轻松无压力。我等学长情何以堪= =求空间无限延伸的两个圆柱体是否相交,其实就是叉积搞一搞详细点就是求两圆心的向量在两直线(圆心所在的直线)叉积上的投影代码略挫,看他的吧http://blog.csdn.net/liuledidai/article/details/9494363 阅读全文
posted @ 2013-07-29 21:35 Thousand Sunny 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 线段树裸题。自己写复杂了,准确说是没想清楚就敲了。 先是建点为已插花之和,其实和未插花是一个道理,可是开始是小绕,后来滚雪球了,跪了。 重新建图,分解询问1为:找出真正插画的开始点和终止点,做成段更新。 再次向notonlysuccess大神致谢,清晰的代码+清晰的思路=ac 1 #include 2 #include 3 #include 4 using namespace std; 5 6 #define lson l,m,rt>1))*(1-lag[rt]); 28 sum[rt>1)*(1-lag[rt]); 29 lag[rt]... 阅读全文
posted @ 2013-07-29 20:59 Thousand Sunny 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 比赛的时候没码出来,想太多了,总想对循环节找规律,最后还不是要对余数暴力查找。 两种排列方式,容易想到找最小公倍数,当然暴力也不是没有方法,模拟换行,因为已知当两种方式都没发生换行时,两者之差是不变的。然后离散一下就好了。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 #define LL __int64 8 9 const int MAXN=1111111;10 11 LL gcd(LL a,LL b)12 {13 if(!a)return b;14 return gcd... 阅读全文
posted @ 2013-07-29 20:42 Thousand Sunny 阅读(202) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 下一页