首页 > 其他分享 >10月杂题记

10月杂题记

时间:2023-11-04 21:45:38浏览次数:51  
标签:10 int 复杂度 mid ans 月杂 题记 mex

CF1875D

我们经过思考,容易得出以下结论:

  1. 如果当前 $mex = x$,则下一个删的数一定小于 $x$。
  2. 如果 $mex = 0$,那么我们就可以不往下算了,因为它们对答案的贡献为 $0$。

我们设 $f[i]$ 表示当 $mex = i$ 时,$m$ 的值。

则有:

$$f[i] = \min(f[j] + (c[i] - 1) \times j + i, f[i])$$

其中 $j > i$,$c[i]$ 表示 $i$ 在 $a$ 中的个数。

因为,我们要使 $mex = i$,就必须将 $i$ 这个数删去,并且 $0 \sim i-1$ 都还存在于 $a$ 中。我们会删 $c[i]$ 次,但 $c[i] - 1$ 次,$m$ 会加上上一个 $mex$ 的值。 第 $c[i]$ 次则会加上 $i$,也就是新的 $mex$。

设没删任何数的 $mex = first$。

根据定义,初始化 $f[first] = 0$。

根据上述结论,与定义,答案即为 $f[0]$。

CF755F

不想腾 markdown 了,点这里吧

P2816

我认为不值得绿,如果没有加强数据,黄就差不多得了。

很简单的贪心。与导弹拦截差不多相同。就是枚举当前有多少堆,再判断一下取最小值。当然判断即为贪心。每一堆新加一个一定要尽可能大。

时间复杂度为 $O(n^2)$,考虑优化,想一下,明显的有单调性,可以选择二分答案,时间复杂度 $O(n \log n)$,瓶颈在于排序与二分。

代码:

#include <bits/stdc++.h>
using namespace std;

int n, a[5100], ans = 1e9, cnt, v[5100];

bool check(int x) {
	for (int i = 0; i <= x; i++) v[i] = 1e9;
	for (int i = 1; i <= n; i++) v[i % x] = min(v[i % x] - 1, a[i]);
	for (int i = 0; i <= x; i++)
		if (v[i] < 0) return 0;
	return 1;
}

int main() {
	cin >> n;
	for (int i = 1; i <= n; i++) {
		cin >> a[i];
	}
	sort(a + 1, a + 1 + n, [](int x, int y){return x > y;});
	int l = 1, r = n;
	while (l <= r) {
		int mid = (l + r) >> 1;
		if (check(mid)) {
			ans = min(ans, mid);
			r = mid - 1;
		}
		else l = mid + 1;
	}
	cout << ans;
	return 0;
}

标签:10,int,复杂度,mid,ans,月杂,题记,mex
From: https://www.cnblogs.com/luckycloud/p/17809827.html

相关文章

  • 将语料文本写入数据库20231104
    importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;publicclassBaseDao{publicConnectionconn=null;publicPreparedStatementps=null;publicResultSetrs=null......
  • B3610 [图论与代数结构 801] 无向图的块 题解
    题目传送门前言本题解内容均摘自我的Tarjan学习笔记。解法Tarjan与无向图无向图与割点(割顶)在一个无向图中,不存在横叉边(因为边是双向的)。一个无向图中,可能不止存在一个割点。割点(割顶):在一个无向图中,若删除节点\(x\)以及所有与\(x\)相关联的边之后,图将会被分......
  • 10.29
    学习了一下.net,NET是一个免费的跨平台开源开发人员平台,用于生成许多不同类型的应用。使用.NET,可以使用多种语言(C#、F#、VB)、编辑器(VS、VSC、Rider)和库(以Microsoft主导的社区提供超过100,000+包来)来构建Web、移动和桌面、机器学习、游戏开发、IOT等众多应用。......
  • 10.30
    今日时长:5h今日代码:200h学习内容:解决python问题   异常处理当发生错误(或我们称之为异常)时,Python通常会停止执行并生成错误消息。try 块用于测试一段代码是否存在错误。except 块用于处理错误。else 块用于在没有错误时执行代码。finally 块用于无论 try 和 ......
  • 面试必刷TOP101:20、数组中的逆序对
    题目题解解法一:暴力法importjava.util.*;publicclassSolution{/***代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可***@paramnumsint整型一维数组*@returnint整型*/publicintInversePairs(in......
  • Win10手动升级到Win11最新版、无TPM等任何限制并且可保留文件、设置和应用升级的最新
    有很多朋友想从WIN10升级到WIN11,但有很多电脑无法满足WIN11的升级要求:如电脑不支持TPM2.0、不支持安全启动、不支持处理器等,同时原WIN10系统安装了很多程序和应用设置,所以无需重作系统、无任何限制并且可保留文件、设置和应用,那么从WIN10升级到WIN11就是最好的解决办法了。如果电脑......
  • JavaSE(10) - 面向对象进阶
    JavaSE(10)-面向对象进阶P129认识多态(polymorphism)多态就是对象的多种形态多态的前提是:1,有继承/实现关系2,有父类引用指向子类对象3,有方法重写多态的好处:使用父类型作为参数,可以接收所有子类对象,体现多态的扩展性与便利P130多态调用成员的特点调用......
  • 103 添加日志
    1,nuget安装log4net2,assemblyinfo追加:[assembly:log4net.Config.XmlConfigurator(ConfigFile="log4net.Config",ConfigFileExtension="config",Watch=true)]3,增加:<sectionname="log4net"type="log4net.Config.Log4NetConf......
  • 课间10分钟可以做什么?
                                       ......
  • 2023-2024-1 20231410刘珈岐 《计算机基础与程序设计》第六周学习总结
    2023-2024-120231410刘珈岐《计算机基础与程序设计》第六周学习总结作业信息这个作业属于哪个课程(https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP)这个作业要求在哪里(https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP/homework/12754)这个作业......