zoukankan      html  css  js  c++  java
  • LeetCode 第 211 场周赛

    两个相同字符之间的最长子字符串

    模拟 枚举

     1 class Solution {
     2 public:
     3     int maxLengthBetweenEqualCharacters(string s) {
     4         int n = s.size();
     5         int ans = -1;
     6         for (int i = 0; i < n; i++) {
     7             for (int j = i + 1; j < n; j++) {
     8                 if (s[i] == s[j]) {
     9                     ans = max(ans, j - i - 1);
    10                 }
    11             }
    12         }
    13         return ans;
    14     }
    15 };
    View Code

    执行操作后字典序最小的字符串

    DFS + 剪枝

     1 class Solution {
     2 public:
     3     string ans;
     4     map<string, int> m;
     5     void dfs(string s, int a, int b) {
     6         if (m[s]) return ;
     7         m[s] = 1;
     8         ans = min(ans, s);
     9         string str = s;
    10         for (int i = 1; i < str.size(); i += 2) {
    11             int x = (str[i] - '0' + a) % 10;
    12             str[i] = (x + '0');
    13         }
    14         dfs(str, a, b);
    15         str = s.substr(s.size() - b, b) + s.substr(0, s.size() - b);
    16         dfs(str, a, b);
    17     }
    18     string findLexSmallestString(string s, int a, int b) {
    19         ans = s;
    20         dfs(s, a, b);
    21         return ans;
    22     }
    23 };
    View Code

    无矛盾的最佳球队

    先按年龄为第一优先级从小到大排序, 再按分数为第二优先级从小到大排序, 保证能形成分数递增, 把题目转换成最长递增子序列的题目, 再走下DP就好了

     1 class Solution {
     2 public:
     3     struct node{
     4         int scores, ages;
     5     }q;
     6     static bool cmp(node x, node y) {
     7         if (x.ages == y.ages) {
     8             return x.scores < y.scores;
     9         }
    10         return x.ages < y.ages;
    11     }
    12     int bestTeamScore(vector<int>& scores, vector<int>& ages) {
    13         int n = ages.size(), ans = 0;
    14         vector<node> p;
    15         vector<int> dp(n, 0);
    16         for (int i = 0; i < n; i++) {
    17             q.ages = ages[i];
    18             q.scores = scores[i];
    19             p.push_back(q);
    20         }
    21         sort(p.begin(), p.end(), cmp);
    22         for (int i = 0; i < n; i++) {
    23             for (int j = 0; j < i; j++) {
    24                 if (p[j].scores <= p[i].scores) dp[i] = max(dp[i], dp[j]);
    25             }
    26             dp[i] += p[i].scores;
    27             ans = max(ans, dp[i]);
    28         }
    29         return ans;
    30     }
    31 };
    View Code

    带阈值的图连通性

    思考 + 并查集

     1 class Solution {
     2 public:
     3     int fi(int x, vector<int>& fa) {
     4         return x == fa[x] ? x : fa[x] = fi(fa[x], fa);
     5     }
     6     vector<bool> areConnected(int n, int threshold, vector<vector<int>>& queries) {
     7         vector<bool> ans;
     8         vector<int> fa(n + 1, 0);
     9         for (int i = 1; i <= n; i++) fa[i] = i;
    10         for (int i = threshold + 1; i <= n; i++) {
    11             for (int j = 2 * i; j <= n; j += i) {
    12                 int fx = fi(i, fa), fy = fi(j, fa);
    13                 if (fx != fy) fa[fx] = fy;    
    14             }
    15         }
    16         int m = queries.size();
    17         for (int i = 0; i < m; i++) {
    18             int fx = fi(queries[i][0], fa), fy = fi(queries[i][1], fa);
    19             ans.push_back(fx == fy);
    20         }
    21         return ans;
    22     }
    23 };
    View Code
  • 相关阅读:
    Sprinig.net 双向绑定 Bidirectional data binding and data model management 和 UpdatePanel
    Memcached是什么
    Spring.net 网络示例 codeproject
    jquery.modalbox.show 插件
    UVA 639 Don't Get Rooked
    UVA 539 The Settlers of Catan
    UVA 301 Transportation
    UVA 331 Mapping the Swaps
    UVA 216 Getting in Line
    UVA 10344 23 out of 5
  • 原文地址:https://www.cnblogs.com/pavtlly/p/13879891.html
Copyright © 2011-2022 走看看