zoukankan      html  css  js  c++  java
  • 第 50 场双周赛

    5717. 最少操作使数组递增

    签到题,每个数至少比前一个数的数值大一,即可满足严格递增。

    class Solution {
    public:
        int minOperations(vector<int>& nums) {
            
            int res=0;
            for(int i=1;i<nums.size();i++)
            {
                if(nums[i] > nums[i-1]) continue;
                else
                {
                    res+=nums[i-1]-nums[i]+1;
                    nums[i]=nums[i-1]+1;
                }
            }
            return res;
        }
    };
    

    1828. 统计一个圆中点的数目

    模拟题。

    class Solution {
    public:
        int dist(int a,int b,int c,int d)
        {
            return (a-c)*(a-c)+(b-d)*(b-d);
        }
        vector<int> countPoints(vector<vector<int>>& points, vector<vector<int>>& queries) {
            
            vector<int> res;
            for(int i=0;i<queries.size();i++)
            {
                int x=queries[i][0],y=queries[i][1],r=queries[i][2];
                int cnt=0;
                for(int j=0;j<points.size();j++)
                {
                    int a=points[j][0],b=points[j][1];
                    if(dist(x,y,a,b) <= r*r)
                        cnt++;
                }
                res.push_back(cnt);
            }
            return res;
        }
    };
    

    1829. 每个查询的最大异或值

    我们需要挑选一个包含不超过( extit{maximumBit})个二进制位的非负整数 (k),使得 (k oplus extit{xorsum})的值最大。由于题目保证了数组 ( extit{nums})中的元素一定小于等于 (2^ extit{maximumBit} - 1),且(k)值小于等于 (2^ extit{maximumBit} - 1),因此可以直接构造出 (k) 值为(nums[0] oplus nums[1]opluscdotsoplus nums[i] oplus (2^ extit{maximumBit} - 1)),这样(k oplus nums[0] oplus nums[1]opluscdotsoplus nums[i])的值为((2^ extit{maximumBit} - 1)),保证了最大化。

    每次删除一个元素可以用前缀和优化,这样保证了时间复杂度为:(O(n))

    class Solution {
    public:
        vector<int> getMaximumXor(vector<int>& nums, int maximumBit) {
            int n=nums.size();
            
            vector<int> pre(n+1);
            for(int i=1;i<=n;i++)
                pre[i] = pre[i-1]^nums[i-1];
            
            int maxv=(1<<maximumBit)-1;
            vector<int> res;
            for(int i=n;i>=1;i--)
                res.push_back(pre[i]^maxv);
            
            return res;
        }
    };
    
  • 相关阅读:
    字符串通配
    最短排序
    最长回文子串
    添加回文串
    找零钱
    最优编辑
    01背包
    PHP做分页查询(查询结果也显示为分页)
    PHP 练习3:租房子
    Html5学习3(拖放、Video(视频)、Input类型(color、datetime、email、month 、number 、range 、search、Tel、time、url、week ))
  • 原文地址:https://www.cnblogs.com/fxh0707/p/14674518.html
Copyright © 2011-2022 走看看