首页 > 其他分享 >CodeStar2023年春第6周周赛普及进阶组

CodeStar2023年春第6周周赛普及进阶组

时间:2023-04-24 23:55:19浏览次数:59  
标签:CodeStar2023 周周赛 rep cin int using 年春 ll dp

T1:最长倍数序列

本题难度中等,先把 \(a\) 从小到大排序。dp[i] 表示以 \(a_i\) 结尾的倍数序列。转移如下:

  • 只有 \(a_i\),对应长度 \(dp[i] = 1\)
  • 上一个数是 \(a_j (1 \leqslant j \leqslant i-1)\),若 \(a_j\) 是 \(a_i\) 的约数,就更新 \(dp[i] = \max(dp[i], dp[j]+1)\)

最终答案就是所有 \(dp\) 的最大值

代码实现
#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); ++i)

using namespace std;
using ll = long long;

int main() {
    int n;
    cin >> n;
    
    vector<ll> a(n);
    rep(i, n) cin >> a[i];
    
    sort(a.begin(), a.end());
    
    vector<int> dp(n, 1);
    int maxSize = 1;
    for (int i = 1; i < n; ++i) {
        rep(j, i) {
            if (a[i]%a[j] == 0) {
                dp[i] = max(dp[i], dp[j]+1);
            }
        }
        
        if (dp[i] > maxSize) {
            maxSize = dp[i];
        }
    }
    
    cout << maxSize << '\n';
    
    return 0;
}

T2:大胃王比赛

本题难度较大,随着修行次数增多,成绩一定不会变差,所以可以二分答案。对于成绩 \(x\),计算要使得每名队员的时间都小于等于 \(x\),所需的最小修行次数。对每人计算要让 \(A_iF_i \leqslant x\),\(A_i\) 需要减少的次数。最后判断修行总次数是否小于等于 \(K\)。

因为最终成绩是所有人成绩的最大值,所以每次选 \(F\) 最大的人修行的贪心算法是错误的。改成最终成绩是总和就可以变成一个贪心题。

代码实现
#include <bits/stdc++.h>
#define rep(i,n) for (int i = 0; i < (n); ++i)

using namespace std;
using ll = long long;

int main() {
    int n; ll k;
    cin >> n >> k;
    
    vector<int> a(n), f(n);
    rep(i, n) cin >> a[i];
    rep(i, n) cin >> f[i];
    
    ll wa = -1, ac = 1e12;
    while (ac-wa > 1) {
        ll wj = (ac+wa)/2;
        bool ok = [&]{
            ll s = 0;
            rep(i, n) s += max(0ll, a[i]-wj/f[i]);
            return s <= k;
        }();
        (ok ? ac : wa) = wj;
    }
    
    cout << ac << '\n';
    
    return 0;
}

标签:CodeStar2023,周周赛,rep,cin,int,using,年春,ll,dp
From: https://www.cnblogs.com/Melville/p/17351348.html

相关文章

  • CodeStar2023年春第5周周赛普及进阶组
    T1:分段求平均数本题难度中等,划分型DP问题。用dp[i]表示前\(i\)个数最少划分成几段,对\(j=1,2,\cdots,i-1\)判断从\(a_j\)到\(a_i\)划分成一段时,平均数是否为整数,如果是整数,就更新\(dp[i]=\max(dp[i],dp[j-1]+1)\)初始值:\(dp[i]=i\)代码实现#include<b......
  • 2023年春面向对象第二单元
    23年春面向对象第二单元分析与总结目录概述JVM基础  JVM简介  JVM内存结构  java类的加载机制  JVM结构与多线程的关联架构  电梯  调度器  类图分析  对任务要求的回答bug分析总结概述  OO第二单元主要围绕着java多线程编程展开。在理论部分,课......
  • CodeStar2023年春第4周周赛普及奠基组
    T1:字符串加密(二)本题难度简单,是一个模拟题,注意\(k\)可能非常大,需要先模\(26\)。代码实现#include<bits/stdc++.h>usingnamespacestd;usingll=longlong;intmain(){stringm;cin>>m;llk;cin>>k;k%=26;stringans;......
  • CodeStar2023年春第3周周赛普及奠基组
    T1:字符串加密本题难度简单,根据题目描述模拟即可。代码实现#include<bits/stdc++.h>usingnamespacestd;intmain(){strings;cin>>s;for(char&c:s){if(islower(c))c-=32;elsec+=32;}reverse(s.beg......
  • CodeStar2023年春第2周周赛普及进阶组
    T1:递推134数本题难度中等,递推计数问题,需要使用高精度......
  • 2023年春面向对象第一单元
    23年春面向对象第一单元分析与总结目录 前言 架构  解析方法  数据结构  类图分析 基于度量的程序结构分析 BUG分析 互测相关 总结前言OO第一单元......
  • 2023年春季学期开课博客
    本周的周一我们进行了本学期的第二次课,介绍了本学期我们主要学习的内容,在我看来本学期最主要的任务有两个,第一个是中国大学生服务外包杯比赛,作为团队的一员应该完成好队长......
  • 使用 JavaScript 创建一个兔年春节倒数计时器
    我们可以通过多种方式构建JavaScript倒数计时,我在本教程中展示的这个​​兔年春节倒数计时器​​是由HTMLCSS和JavaScript创建的。它的工作方式非常简单,需要两种类......
  • 2023年春季
    2023年1月第一周:1.3-1.62023年1月3日周二​​​​​​​​​​​记录闪现的灵感INSPIRATIONS​​​​​​​​​​​1、​​​​​​​​​​​本周书单  BOOKS......
  • 2023年春节放假通知
    新年的钟声悄然敲响是游子归乡的时节,是合家团圆的美满还有甜甜蜜蜜的暖心时刻将新春佳节化作更喜乐的时光​根据国务院办公厅放假规定,并结合公司实际情况,现将放假安排通知如......