zoukankan      html  css  js  c++  java
  • 2014-2015 ACM-ICPC, Asia Mudanjiang Regional Contest 牡丹江区域赛

    codeforces gym
    远古时期的区域赛,前8道题都比较无聊,熟练换根DP可直接虚空夺冠.
    A. 签到.
    I. 签到.
    D. 试图用组合数和容斥原理计算,精度直接爆炸.合理的做法是用(DP[i][j][k])表示第(i)天恰有(j)行和(k)列被支配的概率.转移时需要先算加法再算除法,否则会有精度问题.复杂度(O(N^2M^2)).
    K. 合法的情况为:1.纯数字;2.将数字记为(1),星号记为(-1),任意前缀和需大于等于(1),且末尾为星号.只考虑第(2)种情况,首先在前面补足数字使得和大于等于(1),然后贪心交换最前面星号和最后面数字直到合法.复杂度(O(|s|^2)).
    B. 枚举去掉每条边后,两棵子树直径一半(上取整)的较大值.换根DP,在每个点记录子树中最长路和以该点为起点的最长路.复杂度(O(N)).
    H. 模拟.考虑类EON定义如下:

    struct EON{
          bool isString;
          string value;
          map<string, EON*> pairs;
          EON(const string& s, int L, int R, const vector<int>& matches);//matches表示括号和引号匹配情况;递归构造函数
          EON(const string& s);
          void print();//递归输出函数
          void get(const string& s);
    };
    

    实际上这题代码比较简单.
    F. 考虑(f[u][i])表示考虑(u)的子树中(u)取值为(i)的方案数.需要使用莫比乌斯反演进行转移.
    转移方程为:(g[u][i]=displaystylesum_{i|j}f[u][j],h[u][i]=sum_{j|i}mu(j)g[u][j],f[u][i]=prod_{v ext{ is son of }u}h[v][i]).
    同样需要换根DP,复杂度为(O(nR_maxlog R_max)).
    E. 一种构造方案如下:
    假设存在(N-2)的方案,并且起点为左上角,终点为左下角.
    无论(N)为偶数还是奇数,都存在一条路径,经过所有满足(xle2lor yge N-1)((x,y)),并且起点为((1,1)),终点为((N,N-1)).(奇偶的路径在右上角有区别).
    然后逆时针旋转((N-2))的方案接在上述路径后,此时可以满足起点为左上角,终点为左下角.

    GJC. 不会/没看.

  • 相关阅读:
    Leetcode: Plus One Linked List
    Leetcode: Sort Transformed Array
    Leetcode: Rearrange String k Distance Apart
    Leetcode: Line Reflection
    Leetcode: Logger Rate Limiter
    Leetcode: Design Snake Game
    Leetcode: Android Unlock Patterns
    Leetcode: Longest Substring with At Most K Distinct Characters && Summary: Window做法两种思路总结
    Design Tic-Tac Toe
    Leetcode: Moving Average from Data Stream
  • 原文地址:https://www.cnblogs.com/Heltion/p/13676607.html
Copyright © 2011-2022 走看看