[2016/7/3][codeforces688]
来源:互联网 发布:chrome离线版 知乎 编辑:程序博客网 时间:2024/06/11 05:18
http://codeforces.com/contest/688/
A题
大水题,注意考虑特殊情况;
B题
题目大意:找出第n个位数是偶数的回文数, n (1 ≤ n ≤ 10100 000).
没有什么很厉害的方法,其实就是一道找规律题。把前几个写出来就知道了。
所以解法就是输出字符串n和n的反转。
c题
题目大意:某集合的性质为其中的元素都是图中任意一边的顶点,求两个这样的集合,如果不存在,则输出-1.
源码:
<span style="white-space:pre"></span><pre name="code" class="cpp">#include <stdio.h>#include <queue>#include <vector>#include <algorithm>using namespace std;int n,m;vector<int> map[100005];int color[100005];bool mark[100005]; int black[100005];int white[100005];int B,W;void init(){for(int i = 1;i<=m;i++){color[i] = 0;mark[i] = false; } }bool search(){queue<int> q;q.push(1);int head;int col = 1;if(!map[1].empty()){color[1] = col;B++;black[0] = 1;mark[1] = true;}while(!q.empty()){head = q.front();int a;if(!map[head].empty()){ for(int i=0;i<map[head].size();i++){ a = map[head][i];if(mark[a]){if(color[a]==color[head]){return false;}}else{color[a] = -1*color[head];if(color[a]==1){B++;black[B-1] = a;}else{W++;white[W-1] = a;}mark[a] = true;q.push(a);}}}q.pop();if(q.empty()){for(int i = 2;i<=n;i++){if(!mark[i]&&!map[i].empty()){//printf("%d",i);q.push(i);mark[i] = true;color[i] = 1;B++;black[B-1] = i;break;}}}}return true;}int main(){scanf("%d%d",&n,&m);int u,v;init();for(int i = 0;i<m;i++){scanf("%d%d",&u,&v);map[u].push_back(v);map[v].push_back(u);}if(!search())printf("-1\n");else{sort(black,black+B);sort(white,white+W);if(B<W){printf("%d\n",B);printf("%d",black[0]);for(int i = 1;i<B;i++)printf(" %d",black[i]);printf("\n");printf("%d\n",W);printf("%d",white[0]);for(int i = 1;i<W;i++)printf(" %d",white[i]);}else{printf("%d\n",W);printf("%d",white[0]);for(int i = 1;i<W;i++)printf(" %d",white[i]);printf("\n");printf("%d\n",B);printf("%d",black[0]);for(int i = 1;i<B;i++)printf(" %d",black[i]);}/*for(int i = 1;i<=n;i++){printf("%d ",color[i]);*/}return 0;}
感觉最后输出判断没什么用的样子。。
算法思想就是广搜,每搜到一个点就染成和它父亲相反的颜色。如果这个点也是其他结点的儿子,则判断其当前颜色是否与将染的颜色相反。
注意要搜到所有的点。
wa的原因:
1.设置了无用的col变量,后来发现直接用父节点颜色就好了。
2.无向图要双!向!存!
0 0
- [2016/7/3][codeforces688]
- 2016-7-3 杂感
- 2016-3-7Q&A
- 2016/3/7 来上海找工作
- 2016-7
- Java面试知识学习笔记1(2016/3/7)
- 2016——3——16 kmp 7题
- 2016-7-13☞2017-3(大二上学期)
- 2016/3/7 我从菜鸟开始研究直播技术
- 2016-7-7 杂感
- 2016/3/3
- 2016-3-3
- 2016/3/3
- 日志2016-1-7
- 2016-1-7
- 2016蓝桥杯第7题
- 2016-7-1 杂感
- 2016-7-2 杂感
- CPU寻址范围(寻址空间)一系列问题
- 双GPU-c++MATLAB混合编程
- LeetCode进阶之路(Add Two Numbers)
- CPU寻址过程方框图
- Java--【第一章:Java概论及开发环境配置】
- [2016/7/3][codeforces688]
- 多进程实现方式Example2
- 多线程委托之跨线程问题分析--在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke(解决方法已更新)
- 关于性能监控
- 关于Android布局中 android:layout_centerHorizontal,android:layout_centerVertical的用法
- 安卓应用安全总结
- C语言-数据结构-循环链表实例-维吉尼亚(vigener)密码源代码
- 程序员必备书籍
- HTML-介绍