• 「Poetize6」Candle


    描述

    蜡烛商店中有10种蜡烛,形状分别是0~9这10个数字,不过对于每种蜡烛,商店的存货量仅有一根。另外,忘川沧月已经有了一个"+"形状的蜡烛。
    忘川沧月想购买一些蜡烛,使得他的家族中所有人的年龄都可以用他购买的数字和"+"表示出来。
    例如12就有11种表示方法:12、0+12、2+10、3+9、4+8、5+7、7+5、8+4、9+3、10+2、12+0。注意6+6、1+11、11+1是不行的,因为每种蜡烛仅有一根。
    但是由于这种蜡烛很贵,忘川沧月想购买尽量少的蜡烛来达到他的目的,你能帮帮他吗?
    题解:
    出题人说是送分题。。。
    感觉写起来很麻烦就没有写,看了标程发现也很简单。。。
    lyd:
    2^10枚举选了每种选取蜡烛的情况,四次方暴力枚举数字的组合情况,存到一个v[1024][101]的数组里记录能组成哪些年龄即可。

    注意到有10000组数据,预处理一下v数组就毫无鸭梨了~~~

    代码:

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 using namespace std;
     6 bool v[1024][110];
     7 int a[20],b[1024],ans,n,i,j,k,t,x,y;
     8 long long c[1024],temp;
     9 
    10 int main()
    11 {
    12  for(i=0;i<1024;i++)
    13  {
    14   for(j=9;j>=0;j--)
    15    if(i>>j&1) b[i]++,c[i]=c[i]*10+j;
    16   for(j=0;j<10;j++)
    17    if(i>>j&1) v[i][j]=1;
    18   for(j=0;j<10;j++)
    19    for(k=0;k<10;k++)
    20     if(j!=k&&(i>>j&1)&&(i>>k&1)) v[i][j*10+k]=v[i][j+k]=1;
    21   for(j=0;j<10;j++) if(i>>j&1)
    22    for(k=0;k<10;k++) if(j!=k&&(i>>k&1))
    23     for(x=0;x<10;x++) if(x!=j&&x!=k&&(i>>x&1))
    24     {
    25      if(j*10+k+x<=100) v[i][j*10+k+x]=1;
    26      for(y=0;y<10;y++) if(y!=j&&y!=k&&y!=x&&(i>>y&1))
    27       if(j*10+k+x*10+y<=100) v[i][j*10+k+x*10+y]=1;
    28     }
    29  }
    30  while(~scanf("%d",&n)&&n)
    31  {
    32   ans=100;
    33   for(i=1;i<=n;i++) scanf("%d",&a[i]);
    34   for(i=1;i<1024;i++)
    35   {
    36    for(j=1;j<=n;j++) if(!v[i][a[j]]) break;
    37    if(j>n&&b[i]<ans||b[i]==ans&&c[i]<temp) ans=b[i],temp=c[i];
    38   }
    39   printf("Case %d: %lld
    ",++t,temp);
    40  }
    41  return 0;
    42 }
    View Code
  • 相关阅读:
    Linux之ARP——种种
    Linux之内核参数——backlog/somaxconn
    CLOSE_WAIT、CLOSE_WAIT原因,危害,如何避免
    OVS——大杂烩
    Linux 网络栈——
    OpenShift——大杂烩
    协议之ICMP——种种
    Neutron 理解 (8): Neutron 是如何实现虚机防火墙的 [How Neutron Implements Security Group]
    Neutron 理解 (6): Neutron 是怎么实现虚拟三层网络的 [How Neutron implements virtual L3 network]
    CIDR地址块及其子网划分(内含原始IP地址分类及其子网划分的介绍)
  • 原文地址:https://www.cnblogs.com/zyfzyf/p/4056533.html
Copyright © 2020-2023  润新知