hdu 5225
来源:互联网 发布:剑网三数据互通查询 编辑:程序博客网 时间:2024/06/08 11:29
很精妙的一种方法、
#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>#include<algorithm>#define maxn 110#define mod 1000000007using namespace std;typedef long long LL;typedef unsigned long long ULL;int n,a[maxn],F[maxn],fact[maxn];void Prepare(int n){ fact[0]=1; for(int i=1; i<=n; i++) fact[i]=(LL)fact[i-1]*i%mod,F[i]=(LL)i*(i-1)/2*fact[i]%mod*(1+mod)/2%mod;}void read(){ for(int i=1; i<=n; i++) scanf("%d",a+i);}int work(){ static bool use[maxn]; static int sum[maxn]; int ans=0; memset(sum,0,sizeof(sum)); memset(use,false,sizeof(use)); int cnt=0; for(int i=1; i<=n; i++) { for(int j=1; j<a[i]; ++j) if(!use[j]) { LL val=0; for(int k=1; k<i; ++k) val+=a[k]>j; val+=cnt; for(int k=1; k<=n; ++k) if(k!=j&&!use[k]) { val+=sum[k]; val+=k<j; } val%=mod; ans=(ans+val*fact[n-i]+F[n-i])%mod; } for(int j=1; j<i; ++j) cnt+=a[j]>a[i]; for(int j=a[i]; j>=1; --j) ++sum[j]; use[a[i]]=true; } return ans;}int main(){ Prepare(100); while(cin>>n) { read(); cout<<work()<<endl; } return 0;}
0 0
- hdu 5225
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- hdu
- HDU
- Hdu
- hdu
- hdu-
- hdu
- hdu
- hdu
- 总结项目中常用到得一些宏定义
- mysql常用命令
- 课程设计选题管理系统
- classpath和classpath*的差异
- 湖北24小时在线英语播音咨询
- hdu 5225
- 天弘基金周晓明:余额宝最核心的模式是嵌入式直销
- Java Jtree渲染叶子实现可以添加swing组件
- laravel validate学习笔记
- JavaScript 框架比较
- Spring中Controller和RequestMapping的详解
- getComputedStyle与currentStyle
- [cernRoot]Get graphs from TMultiGraph
- python提示编码错误