wave
题意:求有多少个1~n的排列满足:

其中n<=50
解:
贼神的一道题。
如何处理绝对值?
从小到大按顺序放数,可以拆掉绝对值。
如果你放的旁边有个空隙,那么贡献-i,如果旁边有个数,贡献+i
然后你设的是f[i][j][k][s]表示前i个数,有j+1段数(j个间隔),两端点状态为k(0~2分别表示都没有放数,放了一个,放了两个),目前贡献为s的方案数。
所以要求的就是f[n][0][2][m]
考虑转移:我们可以把i放在某个间隔里,三种情况。还可以放在两端,4种情况。
#include <cstdio>
#include <algorithm> typedef long long LL;
const int N = , MO = 1e9 + , D = ; int n;
LL f[][N][][]; inline void add(LL &a, const LL &b) {
a += b;
while(a >= MO) {
a -= MO;
}
while(a < ) {
a += MO;
}
return;
} int main() { freopen("wave.in", "r", stdin);
freopen("wave.out", "w", stdout);
int m;
scanf("%d%d", &n, &m); LL ans = ; f[][][][D - ] = ; // 1 in mid
f[][][][D - ] = ; // 1 in edge
for(int i = ; i < n; i++) {
for(int j = ; j <= (n + ) >> ; j++) {
for(int k = ; k < ; k++) {
for(int s = ; s < ; s++) {
if(!f[i & ][j][k][s]) {
continue;
}
LL t = f[i & ][j][k][s];
//printf("%d %d %d %d = %lld\n", i, j, k, s - D, t);
// f[i][j][k][s] -> ?
if(k < ) { // i+1 in edge
add(f[(i + ) & ][j][k + ][s + i + ], t * ( - k)); // merge
add(f[(i + ) & ][j][k][s], t * ( - k)); // edge
add(f[(i + ) & ][j + ][k + ][s - i - ], t * ( - k)); // end
if(j + ( - k) + i < n - ) {
add(f[(i + ) & ][j + ][k][s - ((i + ) << )], t * ( - k)); // split
//printf("%d %d %d %d %d \n", i + 1, j + 1, k, s - ((i + 1) << 1) - D, f[i + 1][j + 1][k][s - ((i + 1) << 1)]);
}
}
// i+1 in mid
if(j) {
add(f[(i + ) & ][j][k][s], t * j * ); // edge
add(f[(i + ) & ][j - ][k][s + ((i + ) << )], t * j); // merge
if(j + ( - k) + i < n - ) { // split
add(f[(i + ) & ][j + ][k][s - ((i + ) << )], t * j);
}
}
f[i & ][j][k][s] = ;
}
}
}
} printf("%lld", f[n & ][][][m + D]);
return ;
}
AC代码
空间不够,要滚动。然后每次要清零。当前价值可能为负所以要加一个偏移量。
相同的套路还有相邻的两个数贡献为max/min,几乎一模一样。
wave的更多相关文章
- RIFF和WAVE音频文件格式
RIFF file format RIFF全称为资源互换文件格式(Resources Interchange File Format),是Windows下大部分多媒体文件遵循的一种文件结构.RIFF文 ...
- IEEE 802.11p (WAVE,Wireless Access in the Vehicular Environment)
IEEE 802.11p(又称WAVE,Wireless Access in the Vehicular Environment)是一个由IEEE 802.11标准扩充的通讯协定.这个通讯协定主要用在 ...
- Wave - 花たん 音乐
Wave 歌手:花たん 所属专辑:Flower 間違えて宇宙終わって(宇宙因为一个错误而终结了) 青信号はいつも通り(通行的灯号一如往常的) 飛んでまた止まって(又再停止传播) また 飛びそうだ(然后 ...
- Web 播放声音(AMR 、WAVE)
最近甚是苦闷,属于边学边做,跳进了很多坑,别提有多惨了,不过结果还是不错滴,纵观前后,一句话足以概括 “痛并快乐着” ~~~ ok,我少说废话,下面来总结下 Web 播放声音一些注意事项. 说到 We ...
- 多媒体(2):WAVE文件格式分析
目录 多媒体(1):MCI接口编程 多媒体(2):WAVE文件格式分析 多媒体(3):基于WindowsAPI的视频捕捉卡操作 多媒体(4):JPEG图像压缩编码 多媒体(2):WAVE文件格式分析
- UVa 488 - Triangle Wave
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=94&page=s ...
- modelsim 中 WAVE窗口中能不能只显示变量名,而不显示路径
可以的,在wave窗口左下角有一个黑色的logo,你点击它就可以省电路径,只显示port名称,再点击就切换回来了,如图红色圈圈标记的logo,你可以试试!
- C# 获取wave文件信息【转】
public class WaveHelper { /// <summary> /// 数据流 /// </summary> private Stream m_WaveData ...
- 【转载】PMC/PEC Boundary Conditions and Plane Wave Simulation
原文链接 PMC/PEC Boundary Conditions and Plane Wave Simulation (FDTD) OptiFDTD now has options to use Pe ...
- wave文件(*.wav)格式、PCM数据格式
1. 音频简介 经常见到这样的描述: 44100HZ 16bit stereo 或者 22050HZ 8bit mono 等等. 44100HZ 16bit stereo: 每秒钟有 44100 次采 ...
随机推荐
- K8S入门学习
一.k8s是个什么鬼? k8s全名:kubernetes 它是一个工具,在linux上管理应用生命周期的一个工具. 二.k8s有什么卵用? 1.当你把项目部署到服务器集群上,一台服务器挂了,k8s它可 ...
- Python:matplotlib绘制直方图
使用hist方法来绘制直方图: 绘制直方图,最主要的是一个数据集data和需要划分的区间数量bins,另外你也可以设置一些颜色.类型参数: plt.hist(np.random.randn(1 ...
- SpringBoot之修改单个文件后立刻生效
问题: 在使用SpringBoot进行开发时,如果修改了某个文件比如前端页面html,不能立刻起效. 解决: 在idea中打开修改后的文件,使用快捷键Ctrl+Shift+F9 进行重新编译,然后刷新 ...
- 八、.net core 通过数据库配置文件连接操作数据库
一.创建DotNetCore项目 直接创建core项目并不勾选docker支持 二.nuget进行连接MySQL程序集的下载安装 1.MySql.Data.EntityFrameworkCore方式 ...
- easyui 自动动态合并单元格
.......onLoadSuccess : function(data) { if (data.rows.length > 0) { //调用mergeCellsByField()合并单元格 ...
- 想要配置文件生效 需要通过添加到web.xml加载到内存中
想要配置文件生效 需要通过添加到web.xml加载到内存中
- PlaNet,使用图像输入来学习世界模型
Google AI团队与DeepMind合作,上周宣布了一个名为PlaNet的新的开源“Deep Planning”网络. PlaNet是一个人工智能代理,它只使用图像输入来学习世界模型,并使用这些模 ...
- windows 动态库的封装以及调用
1.一个程序从源文件编译生成可执行文件的步骤:预编译 --> 编译 --> 汇编 --> 链接(1)预编译,即预处理,主要处理在源代码文件中以“#”开始的预编译指令,如宏展开.处 ...
- Editor markdown编辑器
代码示例网址:http://pandao.github.io/editor.md/examples/index.html 引入文件 <link rel="stylesheet" ...
- CrawlSpider爬取拉钩
CrawlSpider继承Spider,提供了强大的爬取规则(Rule)供使用 填充custom_settings,浏览器中的请求头 from datetime import datetime imp ...