zoukankan      html  css  js  c++  java
  • Codeforces 544

    544 D

    题意

    给你一张图,求能删除的最多可能边数,使从节点 (s_i)(t_i) 的距离恰为 (l_i) ( (i=0,1) )
    每条边的边权为 (1)
    ( (1le nle 3000,n-1le mle min {3000,frac{n(n-1)}{2}}) )
    不可能输出 (-1)

    Examples

    Input
    5 4
    1 2
    2 3
    3 4
    4 5
    1 3 2
    3 5 2
    Output
    0
    Input
    5 4
    1 2
    2 3
    3 4
    4 5
    1 3 2
    2 4 2
    Output
    1
    Input
    5 4
    1 2
    2 3
    3 4
    4 5
    1 3 2
    3 5 1
    Output
    -1

    (n) 遍dijkstra或spfa处理出两两点对间的最短路。
    设答案的初始值为 (s_1)(t_1) 的距离+ (s_2)(t_2) 的距离。
    然后考虑 (s_1)(t_1) 的最短路和 (s_2)(t_2) 的最短路有交集的情况。
    1.
    (s1;;;;;;;;t1)
    (|;;;;;;;;;;|)
    (i---j)
    (|;;;;;;;;;;|)
    (s2;;;;;;;;t2)

    (t1;;;;;;;;s1)
    (|;;;;;;;;;;|)
    (i---j)
    (|;;;;;;;;;;|)
    (s2;;;;;;;;t2)

    暴力枚举 (i,j) 即可。

    544 E

    题意

    You have multiset of n strings of the same length, consisting of lowercase English letters. We will say that those strings are easy to remember if for each string there is some position i and some letter c of the English alphabet, such that this string is the only string in the multiset that has letter c in position i.

    For example, a multiset of strings {"abc", "aba", "adc", "ada"} are not easy to remember. And multiset {"abc", "ada", "ssa"} is easy to remember because:

    • the first string is the only string that has character c in position 3;
    • the second string is the only string that has character d in position 2;
    • the third string is the only string that has character s in position 2.

    You want to change your multiset a little so that it is easy to remember. For aij coins, you can change character in the j-th position of the i-th string into any other lowercase letter of the English alphabet. Find what is the minimum sum you should pay in order to make the multiset of strings easy to remember.

    Input

    The first line contains two integers n, m ( (1 ≤ n, m ≤ 20) ) — the number of strings in the multiset and the length of the strings respectively. Next n lines contain the strings of the multiset, consisting only of lowercase English letters, each string's length is m.

    Next n lines contain m integers each, the i-th of them contains integers ai1, ai2, ..., aim ( (0 ≤ a_{ij} ≤ 10^6) ).

    Output

    Print a single number — the answer to the problem.

    Examples

    Input
    4 5
    abcde
    abcde
    abcde
    abcde
    1 1 1 1 1
    1 1 1 1 1
    1 1 1 1 1
    1 1 1 1 1
    Output
    3
    Input
    4 3
    abc
    aba
    adc
    ada
    10 10 10
    10 1 10
    10 10 10
    10 1 10
    Output
    2
    Input
    3 3
    abc
    ada
    ssa
    1 1 1
    1 1 1
    1 1 1
    Output
    0

    状压( ext{dp})
    由于最多只有 (20) 行,而有 (26) 个字母,所以不存在字母不够的问题。
    把一个位置合法化有两种方案:①把当前位置字母改成一个新字母②把本列其余所有与该位置字母相同的位置改掉
    预处理出把位置 ((i,j)) 合法化且采用第二种方案的代价 (c[][]) ,和每一列 (i) 中所有与位置 (j) 相同字母的位置 (eq[][])
    转移方程:
    (dp[j|(1<<k)]=min(dp[j|(1<<k)],dp[j]+a[k][i]);)(①)
    (dp[j|eq[k][i]]=min(dp[j|eq[k][i]],dp[j]+c[k][i]);)(②)

  • 相关阅读:
    spring源码-BeanFactoryPostProcessor-3.2
    web之前端获取上传图片并展示
    spring源码-增强容器xml解析-3.1
    spring源码-bean之增强初始化-3
    spring源码-bean之加载-2
    spring源码-bean之初始化-1
    spring源码-开篇
    java之扫描包里面的class文件
    vuex状态持久化
    Vue 使用 vuelidate 实现表单验证
  • 原文地址:https://www.cnblogs.com/BlogOfchc1234567890/p/10366756.html
Copyright © 2011-2022 走看看