好题总结汇总

好题总结汇总

总结一些做完很有收获的题。


一、经典问题 + DP的结合

1、题意:

给定 n n n 种颜色的球的数量 a 1 , a 2 , . . . , a n a_1, a_2, ..., a_n a1,a2,...,an,选出一些不同种类的球(也就是在n种球中选球的任意情况),将球两两组合并且这两个球不能一致,或者将1个球看成一组,找到选出来的这些球的最小组数,球所有情况的最小组合数之和。

2、总结:

(1) 先对 a a a 数组进行排序。

(2) 假如我们已经选到了 n n n 个球的数量 a 1 , a 2 , . . . , a n , a 1 ≤ a 2 ≤ . . . ≤ a n a_1, a_2, ..., a_n, a_1 \le a_2 \le ... \le a_n a1,a2,...,an,a1a2...an 按照k个不同小球组合在一起或者是1个个组合的最小组合数是多少?
结论是:
r e s u l t = m a x ( a [ n ] , c e i l ( ∑ a [ i ] / k ) ) result = max(a[n], ceil(\sum{a[i]} / k)) result=max(a[n],ceil(a[i]/k))

(3) 当我们有个这个结论,我们就可以直接进行背包 d p dp dp 了,定义 d p dp dp 数组为: d p [ i ] [ j ] dp[i][j] dp[i][j],表示前i个物品中必选 a [ i ] a[i] a[i], a [ i ] a[i] a[i] 为最大值,且体积为 j j j 的方案数。
转移方程为: d p [ 0 ] [ 0 ] = 1 , d p [ i ] [ j ] = ∑ d p [ 1.... i − 1 ] [ j ] dp[0][0] = 1, dp[i][j] = \sum{dp[1....i-1][j]} dp[0][0]=1,dp[i][j]=dp[1....i1][j],复杂度 O ( n 2 ) O(n^2) O(n2)

(4) 求取答案, A n s = ∑ d p [ i ] [ j ] ∗ m a x ( a [ i ] , c e i l ( j / k ) ) Ans = \sum{dp[i][j] * max(a[i], ceil(j / k))} Ans=dp[i][j]max(a[i],ceil(j/k))

3、代码:
#include <bits/stdc++.h> 
#define int long long 
using namespace std; 
const int N = 5010 + 10; 
const int mod = 998244353; 
int n, m; 
int a[N];
int dp[N][N]; 
void solve() {cin >> n; for(int i = 1; i <= n; ++ i ) cin >> a[i]; sort(a + 1, a + 1 + n); dp[0][0] = 1; int su[N] {0};su[0]=1;dp[0][0]=1;for(int i = 1; i <= n; ++ i ) {for(int j = a[i]; j <= 5000; ++ j ) { dp[i][j] += su[j-a[i]];// su[j] = (dp[i][j] + su[j]) % mod; }for(int j = 0; j <= 5000; ++ j ) su[j] = (su[j] + dp[i][j]) % mod;}// cout<<dp[1][1]<<endl;int ans = 0; for(int i = 1; i <= n; ++ i ) for(int j = 0; j <= 5000; ++ j ) {ans = (ans + dp[i][j] * max((int)ceil(j * 1.0 / 2), a[i]) % mod) % mod;// cout<<dp[i][j]<<' '<<max((int)ceil(j * 1.0 / 2), a[i])<<endl;}cout<<ans<<endl;
}
signed main() {int ts = 1;  // cin >> ts; while(ts -- ) solve(); return 0; 
}

二、数学公式推导

1、题意:

在这里插入图片描述

2、题解:

非常妙的一道题,直接开始推导:
假设我们划分 a a a 个’L’形, b b b 个2*2连通块。
我们可以得到一个方程组:
T T T 是一个未知的非负整数,满足 a ∗ 3 + b ∗ 4 = T a * 3 + b * 4 = T a3+b4=T
b = ( T − 3 ∗ a ) / 4 b=(T{-}3*a)/4 b=(T3a)/4
f ( a , b ) = f ( a , ( T − 3 ∗ a ) / 4 ) = a ∗ x + b ∗ y = a ∗ x + ( T − 3 ∗ a ) / 4 ∗ y = ( x − 3 ∗ y / 4 ) ∗ a + T ∗ y / 4 f(a, b) = f(a,(T{-}3*a)/4) = a * x + b * y = a * x + (T{-}3*a)/4*y = (x-3*y/4)*a+T*y/4 f(a,b)=f(a,(T3a)/4)=ax+by=ax+(T3a)/4y=(x3y/4)a+Ty/4
我们发现就是一个有关a的一次函数,我们分类讨论根据单调性求即可。

3、代码:
#include<bits/stdc++.h>
#define int long long 
using namespace std; 
const int N = 1e5 + 10; int n,x,y;
signed main() {cin>>n>>x>>y;if(n==2){cout<<max(x,y)<<endl;return 0; }if(x * 4 == 3 * y) {cout<<y*n*n/4<<endl;return 0; } if(x * 4 <= 3 * y) {cout<<n*n/4*y<<endl;}else {int ans=n*n/3*x;if(n*n%3) {ans-=(x-max(x,y));}cout<<ans<<endl;}return 0; 
}

三、

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/327272.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企业如何通过云服务器实现全球连通运营

如果说互联网是一座桥&#xff0c;连接起了全球各地的信息&#xff0c;那云服务器就如同一座高速公路&#xff0c;帮助企业轻松实现跨国家、跨时区的全球运营。 这个听起来像科幻电影的情节其实已经成为了我们现实生活的一部分。现在就来具体看一下如何做到这一点吧。 其一&…

【Linux】Linux——Centos7安装

【Linux】Linux——Centos7安装 新建虚拟机 选择自定义安装下一步 硬件兼容性使用默认最高即可&#xff0c;下一步 选择稍后安装操作系统&#xff0c;下一步 选择客户机操作系统为 Linux &#xff0c;并选择下方版本为所安装 Linux 镜像同版本&#xff0c;下一步 虚拟机名称与…

idea-自我常见配置

1. 主题配置 2. 显示方法分隔符 Editor->General->Appearance 3. 忽略大小写提示 Editor->General->Code Completion 4. 自动导包 Editor->general->Auto Import 5. 取消单行显示Tabs Editor->General->Editor Tabs 效果如下图&#xff1a; 6. 设置…

idea启动Jsp非maven项目时的一些步骤

文章目录 事前准备eclipse项目举例idea打开eclipse项目安装tomcat配置启动项启动测试 一些小问题到不到servlet 事前准备 非社区版idea【否则启动项无法配置】tomcatmysql eclipse项目举例 idea打开eclipse项目 剩下的全部下一步即可 安装tomcat 自己的文章 Javaweb - t…

OpenAI GPT-4

本文翻译整理自&#xff1a;https://openai.com/index/gpt-4-research/ (March 14, 2023) 文章目录 一、关于 GPT-4二、能力视觉输入Visual inputs: chart reasoningSample 2 of 7 操纵性Steerability: Socratic tutorSample 1 of 3 三、局限性四、风险与缓解措施五、训练流程…

caj文件是什么?caj是什么文件?考研学生赶紧收藏!

在学术研究的广阔领域中&#xff0c;尤其是对于那些致力于深入研究、不断拓宽知识边界的考研学子们来说&#xff0c;了解并掌握各种学术资源的获取与利用方法显得尤为重要。其中&#xff0c;CAJ文件作为一种常见的学术文件格式&#xff0c;其重要性和使用频率不容忽视。那么&am…

软件设计师笔记(三)-设计模式和算法设计

本文内容来自笔者学习zst 留下的笔记&#xff0c;都是零碎的要点&#xff0c;查缺补漏&#xff0c;希望大家都能通过&#xff0c;记得加上免费的关注&#xff01;谢谢&#xff01;本章主要以下午题出现形式为主&#xff01; 文章编辑于&#xff1a;2024-5-13 13:43:47 目录 1…

Midjourney Imagine API 申请及使用

Midjourney Imagine API 申请及使用 申请流程 要使用 Midjourney Imagine API&#xff0c;首先可以到 Midjourney Imagine API 页面点击「Acquire」按钮&#xff0c;获取请求所需要的凭证&#xff1a; 如果你尚未登录或注册&#xff0c;会自动跳转到登录页面邀请您来注册和登…

_remote.repositories作用

问题描述 明明我本地有某个依赖但是却还是报错&#xff0c;原因就是存在_remote.repositories且你的远程仓库中找不到该依赖&#xff0c;可能发生在你修改了远程仓库或镜像时。 例子 本地有这个依赖&#xff0c;但是报错。 解决 删除_remote.repositories文件&#xff0…

vue自定义权限指令

定义v-hasPermi指令 /*** v-hasPermi 操作权限处理*/import useUserStore from /store/modules/userexport default {mounted(el, binding, vnode) {const { value } bindingconst all_permission "*:*:*";const permissions useUserStore().permissions&#xff…

Netgear无线路由器漏洞复现(CVE-2019-20760)

漏洞概述 漏洞服务&#xff1a; uhttpd 漏洞类型&#xff1a; 远程命令执行 影响范围&#xff1a; 1.0.4.26之前的NETGEAR R9000设备会受到身份验证绕过的影响 解决建议&#xff1a; 更新版本 漏洞复现 操作环境&#xff1a; ubuntu:22.04 qemu-version&#xff1a; 8.1…

傻瓜化备份/恢复K8S集群Etcd数据

前言&#xff1a; 备份重要数据&#xff0c;简化重复操作&#xff0c;让一指禅、点点点也能完成运维任务。 脚本呈现界面如下&#xff1a; 1、查看Etcd版本 rootmaster:~# cat /etc/kubernetes/manifests/etcd.yaml | grep image: | awk {print $2} registry.aliyuncs.com/goo…

品鉴中的精神内涵:如何通过红酒品味生活的美好与哲学

红酒不仅仅是一种物质享受&#xff0c;更是一种精神体验。在品鉴云仓酒庄雷盛红酒的过程中&#xff0c;我们能够品味到生活的美好与哲学&#xff0c;感受到红酒所蕴含的精神内涵。 红酒的精神内涵源于其酿造过程中所融入的时间和匠心。一瓶上好的红酒需要经过长时间的陈年&…

简单粗暴的翻译英文pdf

背景&#xff1a;看书的时候经常遇到英文pdf&#xff0c;没有合适的翻译软件可以快速翻译全书。这里提供一个解决方案。 Step 1 打开英文pdfCTRLA全选文字CTRLC复制打开记事本CTRLV复制保存为data.txt Step 2 写一个C脚本 // ToolPdf2Html.cpp : 此文件包含 "main&quo…

itextpdf 7生成pdf(主要是文字和表格,支持中文)

我们经常会遇到要导出pdf的需求,方式有很多种 今天的教程是采用itextpdf的方式生成pdf itextpdf是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF文档&#xff0c;而且可以将Html文件转化为PDF文件。 这里先展示一下效果图 首先在pom.xml中引入相关依赖 <dep…

JSR303数据校验 —— @Valid嵌套校验、集合校验

1. 依赖版本 &#xff08;1&#xff09;SpringBoot 3.1.11 &#xff08;2&#xff09;JDK17 2. Valid、Validated 简介 说明&#xff1a;在Spring框架中Valid默认不会对集合&#xff08;List、Set等&#xff09;内部的元素进行校验&#xff0c;需要将Spring提供的Validated注…

JVM调优工具命令详解(JVM调优看这一篇就够了)

Jmap 此命令可以用来查看内存信息,实例个数以及占用内存大小 1 jmap ‐histo 14660 #查看历史生成的实例 2 jmap ‐histo:live 14660 #查看当前存活的实例,执行过程中可能会触发一次full gc 打开log.txt,文件内容如下: num:序号 instances:实例数量 bytes:占用空间大小 class…

学校为何更热衷于使用SOLIDWORKS教育版教学

在当今的教育环境中&#xff0c;SOLIDWORKS教育版因其独特的优势&#xff0c;越来越受到学校的青睐。为什么学校更热衷于使用SolidWorks教育版进行教学呢&#xff1f;本文将从以下几个方面进行阐述。 首先&#xff0c;SOLIDWORKS教育版为学生们提供了一个与实际工程应用紧密结…

如何在Goland中配置一键运行项目

打开goland,点击配置,如下图 点开如下, 选择go构建 上图中有以下几点需要注意&#xff1a; 1.名称&#xff1a;为本条配置信息的名称&#xff0c;可以自定义&#xff0c;也可以使用系统默认的值&#xff1b; 2.运行种类(Run kind)&#xff1a;main包的文件名称可能为其他 设置…

5.13网络编程

只要在一个电脑中的两个进程之间可以通过网络进行通信那么拥有公网ip的两个计算机的通信是一样的。但是一个局域网中的两台电脑上的虚拟机是不能进行通信的&#xff0c;因为这两个虚拟机在电脑中又有各自的局域网所以通信很难实现。 socket套接字是一种用于网络间进行通信的方…