好像可以用高斯消元???

但是用搜索写 这题就很水了。、。

// by SiriusRen
#include <bitset>
#include <cstdio>
using namespace std;
bitset<20>b;
int jy;
bool dfs(int t,int pos)
{
if(!b.to_ulong())return 1;
if(t>=jy)return 0;
for(int i=pos;i<20;i++)
{
b.flip(i);
if(i==0)b.flip(i+1);
else if(i==19)b.flip(i-1);
else b.flip(i+1),b.flip(i-1);
if(dfs(t+1,i+1))return 1;
b.flip(i);
if(i==0)b.flip(i+1);
else if(i==19)b.flip(i-1);
else b.flip(i+1),b.flip(i-1);
}
return 0;
}
int main(){
for(int i=0;i<20;i++){scanf("%d",&jy);if(jy)b[i]=1;}
for(jy=0;jy<=20;jy++)
if(dfs(0,0)){printf("%d\n",jy);return 0;}
}

#include <iostream>
using namespace std;
int bowl[25]={0},flip[25]={0};
int main()
{
int i,cnt=100,tmp;
for (i=1;i<21;i++) cin >> bowl[i]; flip[1] = tmp = 1; //翻第一个
for (i=2;i<21;i++)
if ( flip[i] = (flip[i-2]^flip[i-1]^bowl[i-1]) ) tmp++;
if ( tmp<cnt && (flip[19]^flip[20]^bowl[20])==0 ) cnt = tmp; flip[1] = tmp = 0; //不翻第一个
for (i=2;i<21;i++)
if ( flip[i] = (flip[i-2]^flip[i-1]^bowl[i-1]) ) tmp++;
if ( tmp<cnt && (flip[19]^flip[20]^bowl[20])==0 ) cnt = tmp;
cout << cnt << endl; return 0;
}

还有人这么写 但是我不理解。。。

POJ 3185 DFS的更多相关文章

  1. POJ 1222 POJ 1830 POJ 1681 POJ 1753 POJ 3185 高斯消元求解一类开关问题

    http://poj.org/problem?id=1222 http://poj.org/problem?id=1830 http://poj.org/problem?id=1681 http:// ...

  2. POJ 1321 DFS

    题意:POJ少见的中文题,福利啊. 思路: 一开始也没有思路呃呃呃 . 裸搜,连样例都过不去...参照了网上的题解:一行一行DFS 茅塞顿开啊. #include <cstdio> #in ...

  3. POJ 3185 The Water Bowls(高斯消元-枚举变元个数)

    题目链接:http://poj.org/problem?id=3185 题意:20盏灯排成一排.操作第i盏灯的时候,i-1和i+1盏灯的状态均会改变.给定初始状态,问最少操作多少盏灯使得所有灯的状态最 ...

  4. POJ 1979 dfs和bfs两种解法

      fengyun@fengyun-server:~/learn/acm/poj$ cat 1979.cpp #include<cstdio> #include<iostream&g ...

  5. poj 1190 DFS 不等式放缩进行剪枝

    F - (例题)不等式放缩 Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Submi ...

  6. poj 1562 dfs

    http://poj.org/problem?id=1562 #include<iostream> using namespace std; ,m=,sum=; ][]; ][]={-,, ...

  7. POJ 1979 DFS

    题目链接:http://poj.org/problem?id=1979 #include<cstring> #include<iostream> using namespace ...

  8. poj 1088 (dfs+记忆化) 滑雪

    题目;http://poj.org/problem?id=1088 感觉对深搜还不太熟练,所以练习一下,类似于连连看的那题,注意的是所求的是最大达长度,并不是从最大的或者最小的点出发得到的就是最长的路 ...

  9. Oil Deposits(poj 1526 DFS入门题)

    http://poj.org/problem?id=1562                                                                       ...

随机推荐

  1. (链接)IDEA 2018 激活 IDEA 2018.3激活教程 最新的(三种)—2018.11.26亲测

    破解不成功的请注意时效性,写于2019/2/8,以下第一种激活方法亲测可用, 不过有时候破解成功了可能过几天突然就打不开了,双击无反应的说,这时候再按顺序 操作一遍就是了: 1)把idea64.exe ...

  2. (转)19 个 JavaScript 有用的简写技术

    1.三元操作符 当想写if...else语句时,使用三元操作符来代替. const x = 20; let answer; if (x > 10) { answer = 'is greater' ...

  3. CSS读书笔记(3)---清除浮动的几种方法

    浮动元素容易造成页面错位现象.下面说说关于清除浮动的几种方法. 首先.先创建一个浮动导致错位的页面. <!DOCTYPE html> <html lang="en" ...

  4. Java中 ArrayList类常用方法和遍历

     ArrayList类对于元素的操作,基本体现在——增.删.查.常用的方法有: public boolean add(E e) :将指定的元素添加到此集合的尾部. public E remove(in ...

  5. http请求后台报406错误

    1.springMVC的项目,通过浏览器访问后台方法遇到了报406的错误,找了很多原因,最终发现是因为缺少spring-mvc的json配置. 2.添加依赖:jackson-databind.jack ...

  6. 小白学习Spark系列二:spark应用打包傻瓜式教程(IntelliJ+maven 和 pycharm+jar)

    在做spark项目时,我们常常面临如何在本地将其打包,上传至装有spark服务器上运行的问题.下面是我在项目中尝试的两种方案,也踩了不少坑,两者相比,方案一比较简单,本博客提供的jar包适用于spar ...

  7. js操作url参数

    function getQueStr(url, ref) //获取参数值 { var str = url.substr(url.indexOf('?') + 1); if (str.indexOf(' ...

  8. 训练1-J

    把一个偶数拆成两个不同素数的和,有几种拆法呢? Input 输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束. Output 对应每个偶数,输出其拆成不同素数的个数,每 ...

  9. 编译htop

    git clone https://github.com/hishamhm/htop cd htop ./autogen.sh ./configure make make install

  10. android 异常解决方案汇总

    1)异常:Android中引入第三方Jar包的方法(java.lang.NoClassDefFoundError解决办法) 1.在工程下新建lib文件夹,将需要的第三方包拷贝进来. 2.将引用的第三方 ...