Codeforces Round #306 (Div. 2) D.E. 解题报告
来源:互联网 发布:常见算法 编辑:程序博客网 时间:2024/05/10 05:28
D题:Regular Bridge
乱搞。构造
这题乱搞一下就行了。构造一个有桥而且每个点的度数都为k的无向图。方法很多,也不好叙述。。
代码如下:
#include <cstdio>#include <cstring>#include <cmath>#include <queue>#include <stack>#include <map>#include <algorithm>#define INF 0x3f3f3f3f#define LL long longconst int mod=1e9+7;using namespace std ;int main(){ int k, i, j; while(scanf("%d",&k)!=EOF){ if(k==1){ puts("YES\n2 1\n1 2"); continue ; } if(!(k&1)) { puts("NO"); continue ; } puts("YES"); printf("%d %d\n",2*k+4,(k+2)*k); printf("1 2\n1 %d\n",k+2); for(i=1;i<=(k-3)/2;i++){ printf("1 %d\n1 %d\n",i+2,k+2-i); } for(i=2;i<=k+2;i++){ for(j=i+1;j<=k+2;j++){ if(i==2&&j==k+2) continue ; if(i<=(k-3)/2+2&&i>=3&&i+j==k+4) continue ; printf("%d %d\n",i,j); } } printf("%d %d\n%d %d\n",k+3,k+4,k+3,2*k+4); for(i=1;i<=(k-3)/2;i++){ printf("%d %d\n%d %d\n",k+3,k+4+i,k+3,2*k+4-i); } for(i=k+4;i<=2*k+4;i++){ for(j=i+1;j<=2*k+4;j++){ if(i==k+4&&j==2*k+4) continue ; if(i>=k+5&&i<=k+4+(k-3)/2&&j+i==3*k+8) continue ; printf("%d %d\n",i,j); } } printf("1 %d\n",k+3); } return 0 ;}
E题:Brackets in Implications
乱搞。构造。
首先可以注意到只有1->0的结果为0.所以必须要构造出一个1->0来,所以最后一个必须为0,否则无论如何也构造不出最后的0.然后只要在最后一位的0前面构造出一个1就可以了,因为不管前面的结果是什么,只要加上这个1,结果肯定为1,就可以跟最后一位的0构造出0来了。
然后再看第n-1位,第n-1位如果是1,那么就直接按原样输出就可以了。
这时候第n-1位为0.然后可以注意到第n-1位的前面只要有1个0就可以了。因为0加上任意一个数都是1,所以可以变成这种形式(0->(1->(1->(1……0))…)->0。假如前面没有0的话,那么就是全是1,那么无论怎么构造也都是变成1->0->0。所以前面必须有个0,而只要有一个0,构造方法就出来了。
代码如下:
#include <cstdio>#include <cstring>#include <cmath>#include <queue>#include <stack>#include <map>#include <algorithm>#define INF 0x3f3f3f3f#define LL long longconst int mod=1e9+7;using namespace std ;int a[1100000];int main(){ int n, i, pos, flag; while(scanf("%d",&n)!=EOF){ for(i=1;i<=n;i++){ scanf("%d",&a[i]); } if(a[n]){ puts("NO"); continue ; } if(n==1){ puts("YES\n0\n"); continue ; } if(a[n-1]){ puts("YES\n"); for(i=1;i<=n;i++){ printf("%d",a[i]); if(i!=n) printf("->"); } continue ; } if(n==2){ puts("NO"); continue ; } flag=0; for(i=n-2;i>=1;i--){ if(!a[i]){ flag=1; pos=i; break; } } if(!flag) { puts("NO"); continue ; } puts("YES"); for(i=1;i<pos;i++){ printf("%d->",a[i]); } for(i=pos;i<=n-2;i++){ printf("(%d->",a[i]); } printf("%d",a[n-1]); for(i=pos;i<=n-2;i++){ printf(")"); } printf("->%d\n",a[n]); } return 0 ;}
1 0
- Codeforces Round #306 (Div. 2) D.E. 解题报告
- Codeforces Round #274 (Div. 2) 解题报告 (C D E)
- Codeforces Round #279 (Div. 2) 解题报告 A.B.C.D.E
- Codeforces Round #280 (Div. 2) 解题报告(A B C D E)
- Codeforces Round #280 (Div. 2) 解题报告 A.B.C.D.E.
- Codeforces Round #287 (Div. 2) 解题报告 A.B.C.D.E
- Codeforces Round #291 (Div. 2)解题报告A.B.C.D.E
- Codeforces Round #283(Div.2) A,B,C,D,E 解题报告
- 解题报告:Codeforces Round #424 (Div. 2) A B C D E F
- Codeforces Round #188 (Div. 2) 解题报告 //缺E
- Codeforces Round #192 (Div. 2) 解题报告 //缺E
- 解题报告:Codeforces Round #364 (Div. 2) A~E
- 解题报告:Codeforces Round #371 (Div. 2) A~E
- 解题报告:Codeforces Round #421 (Div. 2) A-E
- Codeforces Round #306 (Div. 2) D-E
- 解题报告:Educational Codeforces Round 24 D,E,F
- Codeforces Round #149 (Div. 2)解题报告
- Codeforces Round #180 (Div. 2) 解题报告
- ubuntu安装vmwareTools方法
- Android-Universal-Image-Loader最新框架解析
- Tomcat首页中登录host manager时遇到的问题(403 Access Denied)
- Linux 内核基础--rb_tree使用方法
- php扩展开发笔记(5)一些数组操作相关的宏和简单示例
- Codeforces Round #306 (Div. 2) D.E. 解题报告
- opencv 直方图反向投影
- 图解JVM内存分配和回收
- E. Mike and Foam(容斥原理)
- Mac下安装Testlink
- mac下eclipse重置workspace
- Linux 系统启动过程
- opencv 创建和读取xml文件以及matlab生成xml
- Eclipse使用技巧总结