leetcode 第 48 场双周赛

第三题:1798. 你能构造出连续值的最大数目

思路:就是找到最小的不能被表示的整数

贪心,如果[0,sumi] 都能被表示出来,若ai+1>sumi,则sumi+1就不能被表示;若ai+1<=Sumi,则 [0,Sumi+1] 都能被表示;

所以,遍历,判断每一个 ai 即可。

复制代码
class Solution {
public:
    int getMaximumConsecutive(vector<int>& coins) {
        sort(coins.begin(), coins.end());
        int sum = 0;
        for(auto x : coins) {
            if(x > sum+1)  return sum+1;
            sum += x;
        }
        return sum+1;
    }
};
复制代码

第四题:1799. N 次操作后的最大分数和

思路:基本的状压DP,dp[i]=max(dp[i],dp[i(1<<j)(1<<k)]+score)

复制代码
class Solution {
public:
    int gcd(int a, int b) {
        return b==0 ? a : gcd(b, a%b);
    }

    int maxScore(vector<int>& nums) {
        int n = nums.size();
        vector<int>dp(1<<n, 0);
        for(int i = 0;i < (1 << n);i++)
        {
            int cnt = 0;
            for(int j = 0;j < n;j++)
                if(i & (1<<j)) cnt++;
            if(cnt%2)  continue;
            for(int j = 0;j < n;j++)
                for(int k = j+1;k < n;k++)
                    if(((i>>j)&1) == 1 && ((i>>k)&1) == 1)
                    {
                        // cout << i << " " << i-(1<<j)-(1<<k) << endl;
                        dp[i] = max(dp[i], dp[i-(1<<j)-(1<<k)] + gcd(nums[j], nums[k]) * ((n-cnt)/2+1));
                    }
        }
        return dp[(1<<n)-1];
    }
};
复制代码

 

posted @   Rogn  阅读(56)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
历史上的今天:
2020-03-22 2020阿里3.20笔试题
2020-03-22 MySQL数据库的读写分离、分库分表
2020-03-22 NoSQL非关系型数据库
点击右上角即可分享
微信分享提示