zoukankan      html  css  js  c++  java
  • CodeForces1204C

    CodeForces1204C

    其实我觉得这是一道比较综合的题吧...
    这个题可供挖掘的性质很多,比如最短路最长是(n)啊,答案序列中的两点之间的距离肯定是(p)数组上这两个点的距离啊等等.
    其实是在(p)数组上进行了一次另类的最短子序列.图的条件其实就是限制了转移,然后再有一个有点意思的地方是(DP)路径的记录.
    我是不会记录路径的...(不知道自己为什么这么笨),参考了(dalao)的代码才发现...用(tmp_i)表示(i)从谁转移过来就行了...最后一次转移一定属于最优解.
    性质里面说的第二条就是这题特殊的转移限制条件.
    于是,就有了这个代码:

    #include <algorithm>
    #include <iostream>
    #include <cstdlib>
    #include <cstring>
    #include <cstdio>
    #include <string>
    #include <queue>
    #include <cmath>
    #include <map>
    #define MEM(x,y) memset ( x , y , sizeof ( x ) )
    #define rep(i,a,b) for (int i = a ; i <= b ; ++ i)
    #define per(i,a,b) for (int i = a ; i >= b ; -- i)
    #define int long long
    
    using std::max ;
    using std::min ;
    
    const int N = 2e2 + 10 ;
    const int M = 1e6 + 100 ;
    
    char s[N][N] ;
    int e[N][N] , n , m ;
    int p[M] , f[M] , ans[M] , cnt , tmp[M] ;
    
    signed main () {
        scanf ("%lld" , & n ) ;
        rep ( i , 1 , n ) scanf ("%s" , s[i] + 1 ) ;
        scanf ("%lld" , & m ) ;
        rep ( i , 1 , m )  scanf ("%lld" , & p[i] ) ;
        rep ( i , 1 , n ) rep ( j , 1 , n ) e[i][j] = ( s[i][j] == '1' ? 1 : 0x7f7f7f7f ) ;
        rep ( i , 1 , n ) e[i][i] = 0 ;
        rep ( k , 1 , n ) rep ( i , 1 , n ) rep ( j , 1 , n ) e[i][j] = min ( e[i][j] , e[i][k] + e[k][j] ) ;
        MEM ( f , 0x7f ) ; f[1] = 1 ;
        rep ( i , 1 , m ) rep ( j , max ( i - n , 1ll ) , i - 1 )
            if ( ( i - j ) == e[p[j]][p[i]] && f[i] > f[j] + 1 )
                f[i] = f[j] + 1 , tmp[i] = j ;
        for (int i = m ; i ; i = tmp[i] ) ans[++cnt] = p[i] ;
        printf ("%lld
    " , f[m] ) ;
        per ( i , cnt , 2 ) printf ("%lld " , ans[i] ) ;
        printf ("%lld
    " , ans[1] ) ; system ("pause") ; return 0 ;
    }
    
    May you return with a young heart after years of fighting.
  • 相关阅读:
    高级人力资源管理最喜欢的工具;笔迹分析测试的六大好处
    我与时尚MM的那些事儿
    当幸福来敲门
    perl 模板
    一些R函数【自己使用过,保存】
    关于异步加载、缓存图片、软引用等
    android线程同步
    现半透明的popupwindow
    android中的MotionEvent 及其它事件处理
    android客户端从服务器端获取json数据并解析
  • 原文地址:https://www.cnblogs.com/Equinox-Flower/p/11400175.html
Copyright © 2011-2022 走看看