首页 > 其他分享 >P4859 已经没有什么好害怕的了

P4859 已经没有什么好害怕的了

时间:2023-05-18 09:34:16浏览次数:31  
标签:学姐 le P4859 药片 什么 害怕 糖果 dp

题目描述

学姐 4 了。

有 \(n\) 个糖果和 \(n\) 个药片,它们要进行一一配对。每个糖果或药片都具有互不相同的能量值,要求配对后,糖果比药片能量高的对数,比剩下的对数恰好多 \(k\),求方案数。

数据范围:\(1\le n\le 2000\)。

题解

本来是冲着学姐来的,结果发现自己对容斥理解巨差,甚至想到二项式反演以为不能用。可能是我没有脑子,或者没有脑袋。

考虑一个朴素的三方 dp:将糖果和药片混在一起排序,记 \(f_{i,j,k}\) 表示前 \(i\) 个物品组成了 \(j\) 个糖果-药片对和 \(k\) 个相反的对。没有任何优化空间。

发现我们需要记录 \(j\) 和 \(k\) 是因为一些药片被延后处理,来保证它组成药片-糖果对。如果我们不去约束这一点,也就是只考虑钦定 \(j\) 个糖果-药片对,剩下的任意组合,那么就是自然的平方 dp。

接下来记恰好 \(i\) 个糖果-药片对的方案数为 \(g_i\),则 \(f_i = \sum\limits_{j=i}^n\binom{j}{i}g_j\),二项式反演求出所需要的项即可。

标签:学姐,le,P4859,药片,什么,害怕,糖果,dp
From: https://www.cnblogs.com/kyeecccccc/p/17410929.html

相关文章

  • 什么是反射?它有什么用?
    在Java中,反射是指在运行时检查和操作类、接口、字段、方法等程序结构的能力。通过反射,可以在运行时获取类的信息,创建类的实例,调用类的方法,访问和修改类的字段等。反射实现先定义一个需要被反射的类对象User:publicclassUser{publicStringname="张三";privat......
  • 什么是 Angular 应用的 browser Application bundles 和 server Application bundle
    我们在使用yarnrun启动Angular应用时,注意到browserApplication和serverApplicationbundle的生成:在Angular应用程序中,应用程序包含两个主要的部分:客户端应用程序和服务器应用程序。客户端应用程序是在Web浏览器中运行的Angular应用程序,而服务器应用程序是在服......
  • 什么是 Angular Ivy Partial compilation mode
    compilingwithAngularsourcesinIvypartialcompilationmode.AngularIvypartialcompilationmode是AngularIvy编译器的一种模式,它是为了优化Angular应用程序的性能而引入的。在这种模式下,编译器只会重新编译那些发生变化的部分,而不会重新编译整个应用程序。这种......
  • 36、Collection 和 Collections 有什么区别?
    (1)Collection是最基本的集合接口,Collection派生了两个子接口list和set,分别定义了两种不同的存储方式。(2)Collections是一个包装类,它包含各种有关集合操作的静态方法(对集合的搜索、排序、线程安全化等)。此类不能实例化,就像一个工具类,服务于Collection框架。———————————......
  • 24、hashcode是什么?有什么作用?
    Java中Object有一个方法:publicnativeinthashcode();(1)hashcode()方法的作用hashcode()方法主要配合基于散列的集合一起使用,比如HashSet、HashMap、HashTable。当集合需要添加新的对象时,先调用这个对象的hashcode()方法,得到对应的hashcode值,实际上hashmap中会有一个table保存......
  • 25、java 中操作字符串都有哪些类?它们之间有什么区别?
    (1)StringString是不可变对象,每次对String类型的改变时都会生成一个新的对象。(2)StringBuilder线程不安全,效率高,多用于单线程。(3)StringBuffer线程安全,由于加锁的原因,效率不如StringBuilder,多用于多线程。不频繁的字符串操作使用String,操作频繁的情况不建议使用String。StringB......
  • 27、在 Java 中,为什么不允许从静态方法中访问非静态变量?
    静态变量属于类本身,在类加载的时候就会分配内存,可以通过类名直接访问;非静态变量属于类的对象,只有在类的对象产生时,才会分配内存,通过类的实例去访问;静态方法也属于类本身,但是此时没有类的实例,内存中没有非静态变量,所以无法调用。......
  • 13、接口和抽象类有什么区别?
    (1)接口接口使用interface修饰;接口不能实例化;类可以实现多个接口;①java8之前,接口中的方法都是抽象方法,省略了publicabstract。②java8之后;接口中可以定义静态方法,静态方法必须有方法体,普通方法没有方法体,需要被实现;(2)抽象类抽象类使用abstract修饰;抽象类不能被实例化;抽象类只能......
  • 15、BIO、NIO、AIO 有什么区别?
    (1)同步阻塞BIO一个连接一个线程。JDK1.4之前,建立网络连接的时候采用BIO模式,先在启动服务端socket,然后启动客户端socket,对服务端通信,客户端发送请求后,先判断服务端是否有线程响应,如果没有则会一直等待或者遭到拒绝请求,如果有的话会等待请求结束后才继续执行。(2)同步非阻塞NIONIO......
  • 17、什么是反射?
    所谓反射,是java在运行时进行自我观察的能力,通过class、constructor、field、method四个方法获取一个类的各个组成部分。在Java运行时环境中,对任意一个类,可以知道类有哪些属性和方法。这种动态获取类的信息以及动态调用对象的方法的功能来自于反射机制。......