摘要: 错成那样,还以为是卡时间卡精度的变态题,结果就那么ac了= = 悔死我了题意就不概述了,只要处理前两列即可。其中第一列顺序直接扫一遍,第二列要先处理较少的那几种。我是接着第一列用 head[] 继续处理,朋友给出了直接逆向处理的算法,更快、代码也会好写一点。 1 #include 2 #include 3 #include 4 using namespace std; 5 6 const int MAXN=101; 7 int st[MAXN],ed[MAXN],head[MAXN]; 8 9 int main()10 {11 int n,m;12 while(~scanf... 阅读全文
posted @ 2013-08-13 22:56 Thousand Sunny 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 献上博文一篇http://hi.baidu.com/byplane747/item/53ca46c159e654bc0d0a7b8d设维度为k,维护(1 2 #include 3 #include 4 #include 5 #define rep(i,a,b) for(int i=a;iq[1<<5];21 int vis[MAXN];22 int a[5],b[1<<5];23 24 int main()25 {26 int n,cnt;27 while(~scanf("%d%d",&n,&cnt))28 {29 int op,s= 阅读全文
posted @ 2013-08-13 21:30 Thousand Sunny 阅读(356) 评论(0) 推荐(0) 编辑
摘要: 关键是每条边必须走两遍,重复建边即可,因为确定了必然存在 Euler Circuit ,所以所有判断条件都不需要了。注意:我是2500ms跑过的,鉴于这道题ac的code奇短,速度奇快,考虑解法应该不唯一。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #define rep(i,a,b) for(int i=a;istk;20 int head[MAXN],tol;21 int degree[MAXN];22 23 void init()24 {25 tol=0;26 clr(head,-1);27 }28 ... 阅读全文
posted @ 2013-08-13 11:04 Thousand Sunny 阅读(191) 评论(0) 推荐(0) 编辑