2014_GCJ_A
题目链接:http://code.google.com/codejam/contest/2984486/dashboard#s=p0
最想吐槽的是想些DFS过小数据,居然写不出来,不知道我这半年的ACM生活在干嘛?
先不说直接出最有解,但是DFS这基本的还不会,真是,估计快废了!
DFS过小数据的程序:
- #include<iostream>//又臭又长,无语
- #include<algorithm>
- #include<math.h>
- #include<string.h>
- #include<string>
- #include<set>
- #include<map>
- #include<cstdio>
- int n,l;
- int ans;
- using namespace std;
- string s[],s1[],tem[];
- int b[];
- int pan()
- {
- sort(tem+,tem+n+);
- for (int i=;i<=n;i++)
- if (s1[i]!=tem[i]) return ;
- return ;
- }
- void res(int x)
- {
- for (int i=;i<=n;i++)
- tem[i][x]^=;//PS这里注意一下,字符为‘0’,或者‘1’;可以算出字符'0'^1='1','1'^1='0';
- }
- void rec(int x)
- {
- for (int i=;i<=n;i++)
- tem[i][x]^=;
- }
- void dfs(int t,int k)
- {
- if (t==l)
- {
- if (pan()) ans=min(ans,k);return; }
- dfs(t+,k);
- res(t);
- dfs(t+,k+);
- rec(t);
- }
- int main()
- {
- int t;
- freopen("A-small-practice.in","r",stdin);
- freopen("out.txt","w",stdout);
- cin>>t;
- for (int o=;o<=t;o++){
- ans=;
- memset(b,,sizeof(b));
- cout<<"Case #"<<o<<": ";
- cin>>n>>l;
- for (int i=;i<=n;i++) {cin>>s[i];tem[i]=s[i];}
- for (int i=;i<=n;i++) cin>>s1[i];
- sort(s1+,s1+n+);
- dfs(,);
- if (ans<)
- cout<<ans<<endl;
- else cout<<"NOT POSSIBLE"<<endl;
- }
- return ;
}
正解是:枚举第I个数,因为存在解的话肯定是A中第I个数与B第一个数相同,然后根据两者数字的不同去跟新其他位数上的数!复杂度大概是O(N*N*L);
部分代码: for (int i=1;i<=n;i++){
- for (int j=;j<=n;j++) ss[j]=s[j];
- int now=;
- for (int j=;j<l;j++)
- if (ss[][j]!=s1[i][j]){
- for (int k=;k<=n;k++)
- ss[k][j]^=;
- now++;
- }
- sort(ss+,ss+n+);
- int flag=;
- for (int k=;k<=n;k++)
- if (ss[k]!=s1[k]){flag=;break;}
- if (!flag) ans=min(ans,now);
- }
等下再做做位运算
2014_GCJ_A的更多相关文章
随机推荐
- scala学习资料
强烈推荐一个s在线学习scala的网站: http://zh.scala-tour.com/#/overview
- 关联参数(&的用法)
<?php header("Content-Type:text/html;charset=gb2312"); function test1(&$a){ $a.=&qu ...
- Winform开发几个常用的开发经验及知识积累(一)
本人做Winform开发多年,孜孜不倦,略有小成,其中收集或者自己开发一些常用的东西,基本上在各个项目都能用到的一些开发经验及知识积累,现逐步介绍一些,以飨读者,共同进步. 1.窗口[×]关闭按钮变为 ...
- Moses与IRSTLM共同编译失败的解决方案:fatal error: dictionary.h no such file or 目录
已经解决: 错误原因在于始终没用又用已经编译安装过的irstlm而是一直用那个原文件夹造成的,而这里Manual似乎也写错了,manual里有很强的误导性:
- Android请求返回417解决办法
今天碰到个很奇怪的问题,APP通过代理链接服务器会收到HTTP 417错误,经过网上查找发现是由于以下代码造成: HttpParams params = new BasicHttpParams(); ...
- SAP CRM 项目笔记(一) SOW(工作说明书)讨论
前记 前两天在搜索资料时,看到一个网友在博客里面记录下了自己参于项目中的所有笔记.我觉得这个想法很不错,所以决定开笔记录下SAP CRM整个项目的实施和开发过程. 之前参加集团的SAP ERP(FI/ ...
- hdu 2660 Accepted Necklace
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2660 Accepted Necklace Description I have N precious ...
- bzoj 1054 移动玩具
题目连接 http://www.lydsy.com/JudgeOnline/problem.php?id=1054 移动玩具 Description 在一个4*4的方框内摆放了若干个相同的玩具,某人想 ...
- golang的并发
Golang的并发涉及二个概念: goroutine channel goroutine由关键字go创建. channel由关键字chan定义 channel的理解稍难点, 最简单地, 你把它当成Un ...
- iOS进阶学习-CoreData
一.CoreData数据库框架的优势 1.CoreData数据持久化框架是Cocoa API的一部分,首次在iOS5版本的系统中出现,它允许按照实体-属性-值模型组织数据,并以XML.二进制文件或者S ...