首页 > 其他分享 >2024.09.13练习总结

2024.09.13练习总结

时间:2024-09-13 21:48:25浏览次数:9  
标签:... 13 int text 练习 2024.09 sim 区间 DP

没有参与比赛练习,所以没有赛时总结。


$ T1, T2 $

比较简单,似乎是签到题。


$ T3 $
题意不是很懂。
首先将题目中的要求转换为人话:
当两个区间有交,他们必须长度相同。
注意到题目中说有 $ n $ 个人要上下电梯,且每站只会有一个人的状态改变。
那么不难发现对于一段区间 $ [l, r] $ 中的位置 $ i $,如果它是另一个区间的左端点或右端点的话,那么这个区间一定是 $ [i - len + 1, i] $ 或 $ [i, i + len - 1] $。
所以每组两两相交的区间应该形如:

$ [l, r], [l + 1, r + 1]...[l + k, r + k] $

于是考虑 DP,设 $ f_i $ 表示前 $ i $ 层楼是否有解。
目标就是求出 $ f_{2n} $。
转移方程不难想到,即为

$ f_i = (f_{j - 1} \text{ & } check(i, j)) \text{ | } ... (1 < j < i \text{ && } 2 \text{ | } i − j + 1)$

但是,没有代码实现...


$ T4 $

比较常用的一个技巧是当钦定一个平均数 $ x $ 时,我们将所有数都减去 $ x $。
然后直接转化为选数使数和为 $ 0 $,而此处的又一个常用技巧是将和为 $ 0 $,转化为负数与正数和的绝对值相等。
考虑 DP,设 $ f_{i, j} $ 表示在 $ [1, i] $ 之间选,使最后数和为 $ j $。
是一个多重背包 DP,考虑用前缀和将其优化到 $ O(n ^ 3k) $

对于 $ j = 0 \sim i - 1 $,直接赋为 $ f_{i - 1, j} $ 即可。

对于 $ j = i \sim sum $,前缀和地求出 $ f_{i, j} $。

最后,对于 $ j = (k + 1) \times i \sim sum $,减去 $ f_{i, j - (k + 1) \times i} $ 即可。

#include <bits/stdc++.h>
#define int long long

using namespace std;

const int N = 110, M = 1000010;

int n, k, m;
int f[N][M];
int res[N];

signed main()
{
	cin >> n >> k >> m;
	
	int sm = 0;
	f[0][0] = 1;
	for (int i = 1; i <= n; i ++ )
	{
		sm += i * k; 
		for (int j = 0; j < i; j ++ ) f[i][j] = f[i - 1][j];
		for (int j = i; j <= sm; j ++ ) (f[i][j] = f[i - 1][j] + f[i][j - i]) %= m;
		for (int j = sm; j >= (k + 1) * i; j -- ) (f[i][j] = f[i][j] - f[i][j - (k + 1) * i] + m) %= m;
	}
	
	for (int i = 1; i <= n; i ++ )
	{
		for (int x = 0; x <= sm; x ++ )
			(res[i] += f[i - 1][x] * f[n - i][x] % m) %= m;
		(res[i] *= (k + 1)) %= m;
		res[i] -- ;
		res[i] = (res[i] + m) % m;
	}
	
	for (int i = 1; i <= n; i ++ ) cout << res[i] << '\n';
	
	return 0;
}

标签:...,13,int,text,练习,2024.09,sim,区间,DP
From: https://www.cnblogs.com/MafuyuQWQ/p/18412910

相关文章

  • 2024.9.13训练记录
    下午ARC104模拟短时赛:T1、T2:T1签到题。T2签到题,\(O(n^2)\)乱做。但是实际上可以空间换时间开桶到\(O(n)\)。也非常简单。T3:考场没有做出。思考的关键在于想到可以对于区间单独判断是否满足条件。知道了如何判断区间是否满足条件后,可以做一次\(O(n)\)的\(dp\)。每次枚......
  • 学习笔记 韩顺平 零基础30天学会Java(2024.9.13)
    P545TreeMap源码解读     TreeSet的k-v其中的v是一个静态的对象,但是TreeMap的v是可以变化的     TreeMap使用默认构造器取出的顺序和添加的顺序是不一样的,但是有构造器实现了Comparator接口的匿名内部类,可以按顺序排序P546Collections工具类1P547Collect......
  • 8200-1312 蒸汽轮机数字调速器控制
    特性和功能集成图形前面板HMI屏幕多语言屏幕(包括中文),便于操作员使用、诊断和控制大屏幕允许轻松导航和图标查看参数和性能操作员和工程师可在本地查看实时趋势带有当前操作点视图的图形蒸汽图,用于提取和进入可配置的标签名称,可轻松识别连接内部“涡轮机模拟器”,用于在系统......
  • 第一章课堂练习
    1.使用HBuilder编写符合以下要求的文档:网页标题为“网页学习”,在浏览器窗口中显示“欢迎大家一起开始学习网页制作”。完成效果。其中网页所有文字的颜色为blue,背景颜色为#99fff;水平分割线粗细为5,颜色为#ff3333。<!DOCTYPEhtml><html><head><title>网页学习</title>......
  • 基于SpringBoot的学生网上选课系统(11355)
     有需要的同学,源代码和配套文档领取,加文章最下方的名片哦一、项目演示项目演示视频二、资料介绍完整源代码(前后端源代码+SQL脚本)配套文档(LW+PPT+开题报告)远程调试控屏包运行三、技术介绍Java语言SSM框架SpringBoot框架Vue框架JSP页面Mysql数据库IDEA/Eclipse开发四、项......
  • 9.13 模拟赛(炼石计划 11 月 04日 CSP-S 十连测 #7)
    炼石计划11月04日CSP-S十连测#7【补题】-比赛-梦熊联盟(mna.wang)复盘基本上一眼秒了T1,先写这题。在8:30写完了对拍。用了将近一个小时。然后放到桌面2就没管,一直拍到了比赛结束。T2什么牛魔题面???出题人学过语文吗???T3把题读懂了,但是一直不能正确模拟出样例1,......
  • 南沙csp-j/s一对一家教陈老师解题:1334:【例2-3】围圈报数
    ​【题目描述】有n个人依次围成一圈,从第1个人开始报数,数到第m个人出列,然后从出列的下一个人开始报数,数到第m个人又出列,…,如此反复到所有的人全部出列为止。设n个人的编号分别为1,2,…,n,打印出列的顺序。【输入】nn和mm。【输出】出列的顺序。【输入样例】417【输出样例】......
  • 南沙csp-j/s一对一家教陈老师解题:1317:【例5.2】组合的输出
    ​ 【题目描述】排列与组合是常用的数学方法,其中组合就是从n个元素中抽出r个元素(不分顺序且r≤n),我们可以简单地将n个元素理解为自然数1,2,…,n,从中任取r个数。现要求你用递归的方法输出所有组合。例如n=5,r=3,所有组合为:123 124 125 134 135 14......
  • java学习9.13
    将java测试卷重新完成,测试完后基本完成需求,无明显BUG结合课堂上去写这个java测试卷,总的来说,之前没有独立写过类似项目+限时是比较大的问题。如果之前没有经历类似的情况,很多功能都是第一次用,那么就会导致出现bug而不知道如何去改,并且加上时间限制,如果时间全花在改bug上,又无法完......
  • 0913
    亲爱的出租车大人你好让我嘎掉的方式有很多种但绝不是像是要开出80公里一样猛踩油门后又在车轮区区位移80厘米后猛踩刹车我承认你的双脚很灵活可以自如的做到刹车和油门但是我宁可你把这种灵活用在用你的双脚控制方向盘上也不愿意你用在花式踩在我前后移动的胃上当然你的......