首页 > 其他分享 >CF626F. Group Projects

CF626F. Group Projects

时间:2023-08-03 10:57:19浏览次数:29  
标签:ch Group int 1ll 205 getchar CF626F Projects mod

我是傻逼。

哈哈,现在还想不到拆贡献,小丑一个。

人的输入顺序不重要,先排个序。这个 \(\text{max}-\text{min}\) 可以看作两两之差的和。定义 \(f_{i,j,k}\) 表示考虑前 \(i\) 个人,有 \(j\) 个组没有确定最大值,目前不和谐度之和为 \(k\) 的方案数,转移分四种情况:

  • 单独构成完整的一组;

  • 成为新的一组的最小值;

  • 成为一组的中间值;

  • 成为一组的最大值;

这是 \(\mathcal{O}(n^2k)\) 的。

点击查看代码
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int mod=1e9+7;
inline int read(){
	int x=0,f=1;char ch=getchar();
	while (!isdigit(ch)){if (ch=='-') f=-1;ch=getchar();}
	while (isdigit(ch)){x=x*10+ch-48;ch=getchar();}
	return x*f;
}
int a[205],f[205][205][1005];
signed main(){
	int n=read(),m=read();
	for(int i=1;i<=n;i++)a[i]=read();
	sort(a+1,a+n+1);f[0][0][0]=1;
	for(int i=1;i<=n;i++){
		for(int j=0;j<=n;j++){
			for(int k=0;k<=m;k++){
				if(k>=(a[i]-a[i-1])*j)f[i][j][k]=(f[i][j][k]+f[i-1][j][k-(a[i]-a[i-1])*j])%mod;
				if(k>=(a[i]-a[i-1])*j)f[i][j][k]=(f[i][j][k]+1ll*f[i-1][j][k-(a[i]-a[i-1])*j]*j%mod)%mod;
				if(j-1>=0&&k>=(a[i]-a[i-1])*(j-1))f[i][j][k]=(f[i][j][k]+1ll*f[i-1][j-1][k-(a[i]-a[i-1])*(j-1)])%mod;
				if(j+1<=n&&k>=(a[i]-a[i-1])*(j+1))f[i][j][k]=(f[i][j][k]+1ll*f[i-1][j+1][k-(a[i]-a[i-1])*(j+1)]*(j+1)%mod)%mod;
			}
		}
	}
	int ans=0;
	for(int i=0;i<=m;i++)ans=(ans+f[n][0][i])%mod;
	printf("%d\n",ans);
	return 0;
}

标签:ch,Group,int,1ll,205,getchar,CF626F,Projects,mod
From: https://www.cnblogs.com/xx019/p/17602687.html

相关文章

  • hive同时使用where,group by,having,order by的执行顺序
    hive中分组排序过滤使用顺序。where,groupby,having,orderby同时使用,执行顺序为(1)where过滤数据(2)对筛选结果集groupby分组(3)对每个分组进行select查询,提取对应的列,有几组就执行几次(4)再进行having筛选每组数据(5)最后整体进行orderby排序所有需要先groupby再having......
  • SQL语句使用group by时注意事项
    1、groupby语句用来与聚合函数(COUNT、SUM、AVG、MIN、MAX)联合使用得到一个列或多个列2、having只能在groupby之后(即使用having的前提条件是分组)3、如果过使用where和having,那么where在前4、当一个语句同时出现where、groupby、having、orderby的时候,执行顺序和编写顺序......
  • groupmod
    groupmod更改群组识别码或名称补充说明groupmod命令更改群组识别码或名称。需要更改群组的识别码或名称时,可用groupmod指令来完成这项工作。语法groupmod(选项)(参数)选项-g<群组识别码>:设置欲使用的群组识别码;-o:重复使用群组识别码;-n<新群组名称>:设置欲使用的群组名称......
  • groupmems
    groupmems管理用户主要组的成员补充说明groupmems命令允许用户管理他/她自己的组成员列表,而不需要超级用户权限。groupmems实用程序适用于将其用户配置为以他们自己的名义主组(即来宾/来宾)的系统。只有作为管理员的超级用户可以使用groupmems来更改其他组的成员资格。语法......
  • Linux group & user All In One
    Linuxgroup&userAllInOnegroupaddgroupmodgroupdeluseraddusermoduserdel用户组groupadderic@rpi4b:~$groupadd-h用法:groupadd[选项]组选项:-f,--force如果组已经存在则成功退出......
  • MySQL Group Replication 搭建
    目录参考资料环境准备说在前面单服务器部署1windows要求与限制1.1下载并解压mysql5.7.311.2创建数据库文件保存目录data1.3添加配置文件1.4初始化数据1.5依次启动3个实例1.6调整root用户名密码1.7创建复制使用的用户凭证1.8引导组复制1.9验证报错参考资料https......
  • 【Azure 环境】AAD 注册应用获取AAD Group权限接口遇 403 : Attempted to perform an u
    问题描述通过AzureAD的注册应用获取到Token后,访问AADGroup并查看日志信息时候,遇见了 {"error":{"code":"UnauthorizedAccessException","message":"Attemptedtoperformanunauthorizedoperation."}}Python代码--使用AAD注册应用获取Tokenimportre......
  • openGauss学习笔记-21 openGauss 简单数据管理-GROUP BY子句
    openGauss学习笔记-21openGauss简单数据管理-GROUPBY子句GROUPBY语句和SELECT语句一起使用,用来对相同的数据进行分组。您可以对一列或者多列进行分组,但是被分组的列必须存在。21.1语法格式SELECT{*|[column,...]}[FROMfrom_item[,...]][WHEREcondition][......
  • 【项目实战】Kafka 重平衡 Consumer Group Rebalance 机制
    ......
  • MySQL group by分组后,将每组所得到的id拼接起来
    背景需要将商品表中的sku按照spu_id分组后,并且得到每个spu下的sku_id,需要使用到group_concat函数selectspu_id,count(*),group_concat(idSEPARATOR',')asidsfromproduct_skuwherecategory='tv'groupbyspu_id;group_concat函数group_concat函数,实现分组查......