首页 > 其他分享 >第 324 场周赛

第 324 场周赛

时间:2023-01-02 20:12:09浏览次数:51  
标签:周赛 int queries Solution vector 324 ans public

1.统计相似字符串对的数目

统计相似字符串对的数目

Solution

class Solution {
public:
    int similarPairs(vector<string>& words) {
        unordered_map<int,int> book;
        int len1 = words.size();
        int ans = 0;
        for(int i = 0;i < len1;i++){
            string s = words[i];
            //定义一个数代表要表示的字符组成
            int bit = 0;
            for(int j = 0;j < s.size();j++){
                bit |= (1 << (s[j] - 'a'));
            }
            ans += book[bit]++;
        }        
        return ans;
    }
};

2.使用质因数之和替换后可以取到的最小值

使用质因数之和替换后可以取到的最小值

Solution

class Solution {
public:
    int smallestValue(int n) {
        int i = 2;
        int ans = 0;
        while(1){
            i = 2;
            ans = 0;
            int x = n;
            while(i*i <= x){
                if(x % i == 0){
                    x /= i;
                    ans += i;
                    while(x % i == 0){
                        ans += i;
                        x /= i;
                    }
                }
                i++;
            }
            if(x > 1) ans += x;
            //cout<<ans<<" "<<endl;
            if(n == ans) break;
            n = ans;
        }
        return n;
    }
};

3.添加边使所有节点度数都为偶数

添加边使所有节点度数都为偶数

Solution

因为最多只能加两条边,情况有限,分类讨论就行

class Solution {
public:
    bool isPossible(int n, vector<vector<int>>& edges) {
        unordered_set<int> g[n+1];
        for(auto e: edges){
            int x = e[0];
            int y = e[1];
            g[x].insert(y);
            g[y].insert(x);
        }
        vector<int> odd;
        //度为奇的点放入
        for(int i = 0;i <= n;i++){
            if(g[i].size() % 2){
                odd.push_back(i);
            }
        }
        //开始分类讨论
        int s = odd.size();
        if(s == 0) return true;
        if(s == 2){//两个点度为奇数则,
            int x = odd[0];int y = odd[1];
            if(!g[x].count(y)) return true;
            for(int i = 1;i <= n;i++){
                if(i != x && i != y && !g[i].count(x) && !g[i].count(y)){
                    return true;
                }
            }
            return false;
        }
        if(s == 4){
            int x = odd[0],y = odd[1], m = odd[2], k = odd[3];
            return !g[x].count(y) && !g[m].count(k) ||
            !g[x].count(m) && !g[y].count(k) ||
            !g[x].count(k) && !g[y].count(m);
        }
        return false;
    }
};

4.查询树中环的长度

查询树中环的长度

Solution

找最小公共祖先就行

class Solution {
public:
    vector<int> cycleLengthQueries(int n, vector<vector<int>>& queries) {
        int m = queries.size();
        vector<int> ans(m);
        //对点进行向上查找
        for(int i = 0;i < m;i++){
            int t = 1,a = queries[i][0], b = queries[i][1];
            while(a != b){
                a > b? a /= 2 : b /= 2;
                t++;
            }
            ans[i] = t;
        }
        return ans;
    }
};

标签:周赛,int,queries,Solution,vector,324,ans,public
From: https://www.cnblogs.com/TTS-TTS/p/17020422.html

相关文章

  • 第 326 场周赛
    1.统计能整除数字的位数统计能整除数字的位数SolutionclassSolution{public:intcountDigits(intnum){intans=0;intn=num;......
  • AcWing第84场周赛
    本蒟蒻第一次AK周赛第一题、最大数量本题使用桶排序代码#include<bits/stdc++.h>usingnamespacestd;intm[10005];intmain(){intn;cin>>n;f......
  • CCNUACM寒假培训第二周周赛部分题解(ACF)
    A题大意:给出n个数,每次可以选择任意一个数进行加一操作,可执行k次,求最大值可能的最大最小值考虑最大值最大,即所有操作都对初始n个数中的最大值进行,答案即max(a1,.....,an)+......
  • [第326场周赛]分解质因数,埃氏筛,欧拉筛
    leetcode新年福利,本次周赛没有Hard难度的题目,然后我就第一次AK了~总的来说不是很难,涉及到了三个算法,在此记录一下。分解质因数题目链接:​​6279.数组乘积中的不同质因数数......
  • ACWING 第 84 场周赛 ABC
    来水一篇博客:)https://www.acwing.com/activity/content/competition/problem_list/2742/难度偏低(三题都cf800的难度),就不写详解了4788.最大数量#include<bits/stdc++......
  • LeetCode第 94 场双周赛
    1.最多可以摧毁的敌人城堡数目题目最多可以摧毁的敌人城堡数目Solution可以第一重循环找到\(1\),然后从该位置分别向左和向又寻找\(-1\),寻找过程中遇到\(1\)则停止,不......
  • LeetCode周赛325
    到目标字符串的最短距离题目SolutionclassSolution{public:intclosetTarget(vector<string>&words,stringtarget,intstartIndex){intn=wo......
  • 第323场周赛-第三题
    给你一个整数n,表示下标从0开始的内存数组的大小。所有内存单元开始都是空闲的。请你设计一个具备以下功能的内存分配器:分配一块大小为size的连续空闲内存单元并赋......
  • 第323场周赛-第二题
    给你一个整数数组nums。如果nums的子序列满足下述条件,则认为该子序列是一个方波:子序列的长度至少为2,并且将子序列从小到大排序之后,除第一个元素外,每个元素都是......
  • leetcode笔记——323周赛
    2503.矩阵查询可获得的最大分数-力扣(LeetCode)这道题我选用BFS+优先队列来做,(并查集太难了不打算掌握了)。。。优先队列和普通队列的差别就在于:存到队列中的位置与存的......