首页 > 其他分享 >CF 有趣题目做题笔记

CF 有趣题目做题笔记

时间:2024-09-01 21:54:17浏览次数:8  
标签:题目 cout int kN 笔记 CF ans using first

CF1157F Maximum_Balanced_Circle

Problem

题意:

给出一个长度为 \(n\) 的序列 \(a\),你可以选出序列的任意子集。记这个子集为 \(b\),大小为 \(k\),则需要满足 \(\lvert b_i-b_{(i+1)\bmod k}\rvert \le 1\)。你需要最大化 \(k\) 的值,并输出选出的子集 \(b\)。

Solution 注意到最终的集合肯定是形如 $l, l, ···, l + 1, l + 1, ···, r, r, ···, l + 1, l + 1, ···(l, l, ···)$,所以最小值和最大值出现次数一定大于等于 1,中间的数出现次数一定大于等于 2,然后模拟一遍算就行了
Code
#include <iostream>
#include <numeric>

using namespace std;
using ll = long long;
using pii = pair<int, int>;

const int kN = 2e5 + 1;

int n, c[kN], p[kN], l[kN];
pii ans;

int main() {
  cin.tie(0)->sync_with_stdio(0);
  cin >> n;
  for (int i = 1, x; i <= n; i++) {
    cin >> x;
    c[x]++;
  }
  fill(l, l + kN, 1e9);
  for (int i = 1; i < kN; i++) {
    p[i] = p[i - 1] + c[i];
    if (c[i]) {
      if (l[i - 1] == 1e9) {
        l[i] = i;
      } else {
        l[i] = l[i - 1];
      }
      if (!ans.first || p[i] - p[l[i] - 1] > p[ans.second] - p[ans.first - 1]) {
        ans = {l[i], i};
      }
      if (c[i] == 1) {
        l[i] = i;
      }
    }
  }
  cout << accumulate(c + ans.first, c + ans.second + 1, 0) << '\n';
  for (int i = ans.first; i <= ans.second; i++) {
    while (c[i] >= 2) {
      cout << i << ' ', c[i]--;
    }
  }
  for (int i = ans.second; i >= ans.first; i--) {
    while (c[i] >= 1) {
      cout << i << ' ', c[i]--;
    }
  }
  return 0;
}

标签:题目,cout,int,kN,笔记,CF,ans,using,first
From: https://www.cnblogs.com/SuperSupper/p/18391798

相关文章

  • 四边形不等式 学习笔记
    四边形不等式学习笔记定义四边形不等式(QI)如果对于函数\(w(l,r)\),\(l_1\lel_2\ler_1\ler_2,w(l_1,r_1)+w(l_2,r_2)\lew(l_1,r_2)+w(l_2,r_1)\),则称\(w\)满足四边形不等式,函数\(w\)的二维矩阵被称作蒙日矩阵。一般只能用于求\(\min\)的DP。石子合并模型对......
  • CF1826D
    CF1826D链接:Problem-1826D-Codeforces题目大意:给你一个数组,让你选择一个区间\([l,r]\)设选中的区间为\(b\),\(b_{i_1}+b_{i_2}+b_{i_3}\)为区间内前三大的值,你需要选择一个区间使得\(b_{i_1}+b_{i_2}+b_{i_3}-(r-l)\)值最大,输出最大值思路:我们发现......
  • Datawhale X 李宏毅苹果书 AI夏令营-跟李宏毅学深度学习(入门)Task3笔记
    目录一、机器学习框架&实践攻略1.总览2.训练误差较大时:    1.模型偏差    2. 优化问题3.训练误差较小时:    1.测试误差较小:    2.测试误差较大:            1.过拟合    2.不匹配一、机器学习框架&实......
  • 简单了解数据库--笔记03
    一、分组查询[groupby]count() //统计计数sum()//求和avg()//平均值min()//最小值max()//最大值group_concat()//拼接函数1.查询每个国家人口总数selectcountrycode,sum(population)fromcitygroupbycountrycode;//给国家分组2.查询中国每个......
  • 简单了解数据库--笔记02
    一、数据库的字符集编码设置utf-8utf8mb41.查看数据库默认的字符集MariaDB[(none)]>showvariableslike"%character%";+--------------------------+----------------------------+|Variable_name|Value|+--------------------......
  • Unclutter - 苹果电脑(Mac)桌面文件笔记剪贴板管理工具
    刚收拾好的电脑桌面马上又堆满了杂七杂八的文件?刚随手一记的笔记,回头却找不到了?马上来认识一下Unclutter,一款藏在Mac系统顶部的文件、笔记、剪贴板管理器。安装后,用户只需要将鼠标指针移动到屏幕顶部,向下滚动,Unclutter窗口就会滑落显现,无需给电脑桌面「添乱」。有时候......
  • Redis基础知识学习笔记(二)
    文章目录一.Redis安装1.Windows下安装1>资源管理器目录进入2>目录进入命令:3.配置环境变量2.Linux下安装1>安装redis2>启动redis3>查看redis是否启动二.Redis配置1.查看配置2.编辑配置3.参数说明三.Redis数据类型1.String(字符串)常用命令实例2.Hash(哈希)......
  • Datawhale X 李宏毅苹果书 AI夏令营 深度学习入门笔记02
    目录一、学习资料二、学习笔记(一)线性模型1、考虑周期性2、修改模型(二)模型变形之分段线性曲线1、分段线性直线2、分段线性曲线的图像和表达式(机器学习第一步:写出带有未知数的函数)(1)如何构成(2)如何表达(3)如何改进3、分段线性曲线的损失(机器学习第二步:定义损失)4、分段......
  • Datawhale X 李宏毅苹果书 AI夏令营 深度学习进阶笔记02
    目录一、学习资料二、学习笔记(一)自适应学习率(adaptivelearningrate)1、什么是+为什么要用2、三种自适应学习率方法(1)AdaGrad(AdaptiveGradient)(2)RMSprop(RootMeanSquaredpropagation)(3)Adam(Adaptivemomentestimation)(二)学习率调度(learningratescheduling)1、为什么......
  • 读书笔记(11)《瓦尔登湖》
    序言这是一本由美国作家梭罗独居瓦尔登湖畔的记录,描绘了他两年多时间里的所见、所闻和所思。在这本书中,梭罗通过建造木屋的过程,对农场的向往和购买经历,以及对生活的理解和追求,向我们展示了他的生活态度和价值观。梭罗在书中表达了对阅读的重要性的深刻理解,他认为阅读可以帮助我......