【poj1090】 Chain

http://poj.org/problem?id=1090 (题目链接)

题意:给出九连环的初始状态,要求将环全部取下需要走多少步。

Solution 
  格雷码:神犇博客 
  当然递推也可以做。 
   
代码:

// poj1090
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<set>
#define MOD 1000000007
#define inf 2147483640
#define LL long long
#define free(a) freopen(a".in","r",stdin);freopen(a".out","w",stdout);
using namespace std;
inline LL getint() {
    LL x=0,f=1;char ch=getchar();
    while (ch>‘9‘ || ch<‘0‘) {if (ch==‘-‘) f=-1;ch=getchar();}
    while (ch>=‘0‘ && ch<=‘9‘) {x=x*10+ch-‘0‘;ch=getchar();}
    return x*f;
}

int n,a[2000],f[1010][400],t[400];

int main() {
    scanf("%d",&n);
    int sum=0;
    for (int i=1;i<=n;i++) {
        scanf("%d",&a[i]);
        sum+=a[i];
    }
    for (int i=1;i<=n;i++) {
        sum-=a[i];
        if (sum&1) a[i]=!a[i];
    }
    f[1][1]=1;
    for (int i=2;i<=1000;i++) {
        for (int j=1;j<=399;j++) f[i][j]=f[i-1][j]*2;
        for (int j=1;j<=399;j++) {
            f[i][j]+=f[i][j-1]/10;
            f[i][j-1]%=10;
        }
    }
    for (int i=1;i<=n;i++)
        if (a[i]) {
            for (int j=1;j<=399;j++) t[j]+=f[i][j];
            for (int j=1;j<=399;j++) {
                t[j]+=t[j-1]/10;
                t[j-1]%=10;
            }
        }
    int i;
    for (i=399;i>=1;i--) if (t[i]) break;
    if (i==0) printf("0");
    else for (;i>=1;i--) printf("%d",t[i]);
    return 0;
}

  

时间: 2024-10-11 19:35:03

【poj1090】 Chain的相关文章

【Poj1090】Chain

Chain Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 3414   Accepted: 1126 Description Byteland had not always been a democratic country. There were also black pages in its book of history. One lovely day general Bytel − commander of th

【转】cache buffer chain 第一篇

文章转自:http://www.jydba.net/cache-buffer-chain/ buffer cache的管理有两个重要的数据结构: hash bucket和cache buffer chain 1. hash bucket和cache buffer chain 可以想象,如果所有的buffer cache中的所有buffer都通过同一个结构来进行管理,当需要确定某个 block在buffer中是否存在时,将需要遍历整个结构,性能会相当低下. 为了提高效率,oracle引入了buck

【struts2】名为chain的ResultType

1)基本使用 名称为"chain"的ResultType,在struts-default.xml里的配置如下: <result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/> chain是一种特殊的视图结果,用来将Action执行完之后链接到另一个Action中继续执行,新的Action使用上一个Action的上下文(ActionContext

【转】Cache Buffer Chain 第二篇

文章转自:http://m.bianceng.cn/database/Oracle/201407/42884.htm 测试环境:版本11gR2 SQL> select * from v$version where rownum=1; BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition Releas

【HDU3487】【splay分裂合并】Play with Chain

Problem Description YaoYao is fond of playing his chains. He has a chain containing n diamonds on it. Diamonds are numbered from 1 to n.At first, the diamonds on the chain is a sequence: 1, 2, 3, …, n.He will perform two types of operations:CUT a b c

【struts2】预定义拦截器

1)预定义拦截器 Struts2有默认的拦截器配置,也就是说,虽然我们没有主动去配置任何关于拦截器的东西,但是Struts2会使用默认引用的拦截器.由于Struts2的默认拦截器声明和引用都在这个Struts-default.xml里面,因此我们需要到这个文件的struts-default包里去看一下.定义如下: 1 <interceptors> 2 <interceptor name="alias" class="com.opensymphony.xwor

【转】《windows核心编程》读书笔记

这篇笔记是我在读<Windows核心编程>第5版时做的记录和总结(部分章节是第4版的书),没有摘抄原句,包含了很多我个人的思考和对实现的推断,因此不少条款和Windows实际机制可能有出入,但应该是合理的.开头几章由于我追求简洁,往往是很多单独的字句,后面的内容更为连贯. 海量细节. 第1章    错误处理 1.         GetLastError返回的是最后的错误码,即更早的错误码可能被覆盖. 2.         GetLastError可能用于描述成功的原因(CreatEvent)

论文阅读(BaiXiang——【CVPR2012】Detecting Texts of Arbitrary Orientations in Natural Images)

BaiXiang--[CVPR2012]Detecting Texts of Arbitrary Orientations in Natural Images 目录 作者和相关链接 方法概括 方法细节 创新点和贡献 实验结果 问题讨论 总结与收获点 作者和相关链接 华科:姚聪(Cong Yao),白翔(Xiang Bai),刘文予(Wenyu Liu) 微软MSRA:马毅(Yi Ma) UCLA(加州大学圣地亚哥分校):屠卓文(Zhuowen Tu) 文章中提到的MSRA-TD 500 数据库

【转】常用数据结构及复杂度

常用数据结构及复杂度 常用数据结构的时间复杂度 Data Structure Add Find Delete GetByIndex Array (T[]) O(n) O(n) O(n) O(1) Linked list (LinkedList<T>) O(1) O(n) O(n) O(n) Resizable array list (List<T>) O(1) O(n) O(n) O(1) Stack (Stack<T>) O(1) - O(1) - Queue (Qu