google codejam 2008 round2
来源:互联网 发布:java中间件框架 编辑:程序博客网 时间:2024/05/20 23:32
Problem A. Cheating a Boolean Tree
模拟题,可将dfs的结果保存到数组进行优化
#pragma comment(linker, "/STACK:1024000000,1024000000")#include <iostream>#include <stdio.h>#include <fstream>#include <iomanip>#include <cmath>#include <string>#include <string.h>#include <sstream>#include <cctype>#include <climits>#include <set>#include <map>#include <deque>#include <queue>#include <vector>#include <iterator>#include <algorithm>#include <stack>#define _clr(x,y) memset(x,y,sizeof(x))#define _inf(x) memset(x,0x3f,sizeof(x))#define pb push_back#define mp make_pairusing namespace std;const int INF = 0x3f3f3f3f;const double eps = 1e-8;typedef long long LL;struct node{int g,c,val;}tree[10000+5];int m;int dfs(int x,int v){int res=INF,res2=INF;if(x>(m-1)/2) if(v==tree[x].val) return 0;else return INF;int l1,l0,r1,r0;l1=dfs(x*2,1);l0=dfs(x*2,0);r1=dfs(x*2+1,1);r0=dfs(x*2+1,0);if(tree[x].g==1){if(v==1){res=l1+r1;}else{res=min(l1+r0,r1+l0);res=min(res,r0+l0);}}else{if(v==0){res=l0+r0;}else{res=min(l1+r0,r1+l0);res=min(res,r1+l1);}}if(tree[x].c==1){if(tree[x].g==0){if(v==1){res2=l1+r1;}else{res2=min(l1+r0,r1+l0);res2=min(res2,r0+l0);}}else{if(v==0){res2=l0+r0;}else{res2=min(l1+r0,r1+l0);res2=min(res2,r1+l1);}}}res=min(res,res2+1);if(res>=INF) res=INF;//cout<<x<<" "<<v<<" "<<res<<endl;return res;}int main(){//ios_base::sync_with_stdio(false);cin.tie(0);#ifndef ONLINE_JUDGE//freopen("A-small-practice.in","r",stdin);//freopen("out.txt","w",stdout);#endifint T;cin>>T;for(int cas=1;cas<=T;cas++){_clr(tree,0); int v; cin>>m>>v; for(int i=1;i<=(m-1)/2;i++) { cin>>tree[i].g>>tree[i].c;}for(int i=(m-1)/2+1;i<=m;i++) { cin>>tree[i].val;}int ans=dfs(1,v);cout<<"Case #"<<cas<<": ";if(ans==INF) cout<<"IMPOSSIBLE"<<endl;else cout<<ans<<endl;} return 0;}
0 0
- google codejam 2008 round2
- 2017Google Codejam round2 Problem A. Fresh Chocolate
- 2017Google Codejam round2 Problem B. Roller Coaster Scheduling
- google codejam 2008 round1B
- google codejam 汇总
- Google CodeJam Qualification Round 2013
- Google CodeJam Round 2 2013
- Google CodeJam习题:Alien Numbers
- Google CodeJam Qualification Round 2014
- Google Codejam 2009 Round 2
- Google apac 在线笔试round2
- Google Code Jam 2016 Round2
- codejam 2008 practice problems
- codejam 2008 practice Contest
- codejam 2008 Qualification Round
- codejam-Round1A-2008-Numbers
- google codejam 2008 APAC local onsites , Problem A What are Birds?
- 关于google codejam与baidu Astar
- 二叉树的最大深度与最小深度
- POJ-1321
- mysql 如何将一个数据库中某个表中某个字段导入另外一个数据库里指定表里
- Properties工具类获取配置文件数据
- POJ-1458
- google codejam 2008 round2
- POJ-1905
- Spring3.2和jdk1.8之间的兼容性错误
- String,StringBuffer与StringBuilder的区别
- 输入一组单词(区分大小写),统计首字母相同的单词的个数
- C++cin方法小结
- elasticsearch中ik分词的使用
- POJ-1915
- POJ-2251