2018宁夏邀请赛I题 bubble sort(思维题
2024-08-30 10:44:02
https://vjudge.net/problem/Gym-102222I
居然补到个防ak,刚开始不知道啥是循环左移右移(只能移一次),不好想。。
题意:以冒泡排序为背景 给你n,k 问在1~n的n个数的全排列中有几个能经过k次遍历就排好序了(这里排好序是指最长上升子序列长度至少为n-1
for(int i=1;i<n;++i) if(a[i]>a[i+1]) swap(a[i],a[i+1]) 这算一次遍历
结果%mod(也给出来了
结果%mod(也给出来了
题解:冒泡k趟之后,新序列的第i项是原序列前min(i+k,n)项中未在新序列前i-1项中出现过的最小值。新序列的LIS>=n-1相当于在序列1,2,...,n中选择至多一个区间循环左移或右移。
于是可以枚举新序列,算出每个新序列元素在原序列中可能的位置个数,利用乘法原理计算方案数。
模拟下1,2,3,4,5,假设k=1
bit[4]=2^4是12345对应的原序列数量,此时就是sorted
接下来看almost sorted,
左移时,区间长度是2,3,4,假设len=2的话21345,13245,12435,len=3的话23145,13425...
右移时,2重复了不用算,3,4算一下就行了。
最后由于后k个已经定了,刚才算的原串数量还要扩倍。。例如k=2只算了12345没算12354...
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
int T,n,k,mod;
LL bit[55];
int main()
{
scanf("%d",&T);
for (int z=1;z<=T;++z)
{
scanf("%d%d%d",&n,&k,&mod);
printf("Case #%d: ",z);
if (k>=n)
{
LL ans=1;
for (int i=1;i<=n;++i) ans=ans*i%mod;
printf("%lld\n",ans);
continue;
}
bit[0]=1;
for (int i=1;i<=n;++i) bit[i]=1LL*bit[i-1]*(k+1)%mod;
LL ans=0;
//sorted
ans=bit[n-k];
//left shift
for (int len=2;len<=n-k;++len)
ans+=1LL*(n-k-len+1)*bit[n-k-1]%mod,ans%=mod;
//right shift
for (int len=3;len<=n-k;++len)
ans+=1LL*(n-k-len+1)*bit[n-k-len+1]%mod,ans%=mod;
//last k
for (int i=1;i<=k;++i) ans=ans*i%mod;
printf("%lld\n",ans);
}
return 0;
}
最新文章
- spring mvc 获取页面日期格式数据
- Android中自定义属性(attrs.xml,TypedArray的使用)
- PHP中使用redis执行lua脚本示例
- 【转载】C++ IO库
- 2015苹果WWDC开发者大会
- curl Protocol &#39;http not supported or disabled in libcurl
- Eralng 小知识点
- Java基础知识强化之集合框架笔记17:List集合的特有的遍历功能
- Cracking the coding interview--Q1.1
- Just Finish it up UVA - 11093
- xml的xPath解析规则
- 【c#】RabbitMQ学习文档(四)Routing(路由)
- MT【320】依次动起来
- Pytorch报错记录
- python zeros用法实例
- go基础之数组和切片
- 解决微软surface pro在某些情况下wifi转输速度过慢的问题 - z
- 自学Aruba7.1-Aruba安全认证-WPA2-PSK认证(web页面配置)
- elasticsearch 口水篇(8)分词 中文分词 ik插件
- 元素高度、宽度获取 style currentStyle getComputedStyle getBoundingClientRect
热门文章
- jmeter Linux环境执行总报错 cannot allocate memory
- 11. Java常用类
- 【POJ - 3258】River Hopscotch(二分)
- Linux及Windows下ActiveMQ下载与安装教程
- tensorflow学习笔记——使用TensorFlow操作MNIST数据(2)
- Python 命令行之旅 —— 初探 argparse
- powerdesign进军(三)--mysql驱动配置
- 就当我在扯淡,宇宙的bug
- 偏差和方差以及偏差方差权衡(Bias Variance Trade off)
- MyBatis的parameterType传入参数类型