zoukankan      html  css  js  c++  java
  • 泥点spot

    Spot 
    描述 
    有n个泥点,排成一排,第i个泥点坐标为ai。有m个木板,第i个木板长为li。现在用尽可能少的木板覆盖所有泥点。 
    问:使用木板的最少数量以及最优方案数(mod 1000000007),若不能完全覆盖,请输出“NO”。 
    注意: 
    泥点可重复覆盖,木板可重叠。 
    计算方案时,长度相等的两个板不等价,视为两种板。 
    输入 
    第1行:一个数n 
    第2行:n个数a1,a2…an(从小到大给出) 
    第3行:一个数m 
    第4行:m个数l1,l2…ln 
    输出 
    第1行,一个数,使用木板的最少数量 
    第2行,一个数,最优方案数 
    若不能完全覆盖,请输出“NO” 
    样例输入 



    10 
    样例输出 

    10 
    数据范围和约定 
    对于20%的数据:n=1 
    对于另外20%的数据:m=1 
    对于100%的数据: 
    1<=n,m<=15 
    0<=ai<=1000000000 
    1<=li<=1000000000 
    时空限定 
    内存限制为 512 MB 
    时间限制为 1 s 
    评测环境和细则 
    评测开启-O2优化 
    评测软件为lemon 
    评测忽略行尾空格 
    文件名 
    提交文件名为spot.cpp/pas 
    输入文件名为spot.in 
    输出文件名为spot.out

    n,m<=15,先确定是状压

    一开始f[i][j],i表示前i个木板,j压的是泥点 
    再用g[i][j] 在dp的时候记录方案数 
    但是要考虑的情况会多到爆炸 
    在卡了一个下午后,本蒟蒻毅然决然的决定 换!状!态!!!!

    用f[i][j],i表示前i个泥点,j压的是木板,f[i][j]表示方案数 
    初始化成负数 
    最后再扫一遍f[n][0-maxp],找不是负数中最小的,没找着就输出”NO” 
    这样比以前的好处是: 
    泥点最后一定要全都选完,但木板不一定,比较好转移。

    错误的第一次code

  • 相关阅读:
    14_java之变量|参数|返回值|修饰符
    NYOJ 202 红黑树 (二叉树)
    NYOJ 138 找球号(二) (哈希)
    NYOJ 136 等式 (哈希)
    NYOJ 133 子序列 (离散化)
    NYOJ 129 树的判定 (并查集)
    NYOJ 117 求逆序数 (树状数组)
    NYOJ 93 汉诺塔 (数学)
    HDU 2050 折线分割平面 (数学)
    天梯赛L2-008 最长对称子串 (字符串处理)
  • 原文地址:https://www.cnblogs.com/A-LEAF/p/7225397.html
Copyright © 2011-2022 走看看