乐曲创作
来源:互联网 发布:mac 命令行卸载软件 编辑:程序博客网 时间:2024/05/17 05:07
题目描述
小可可是音乐学院的一名学生,他需要经常创作乐曲完成老师布置的作业。
可是,小可可是一个懒惰的学生。所以,每次完成作业时,他不会重新创作一首新的乐曲,而是去修改上一次创作过的乐曲作为作业交给老师。小可可的乐曲由N个音调不同的音符组成,分别记为音符1…N。因此,他创作的乐曲是由1…N的一个排列构成,例如N=5时,他创作的乐曲可能为:2,1,3,5,4。但是,小可可每一次会按照一定的要求修改上一次创作的乐曲。他规定,修改过后的乐曲必须与上一次创作的乐曲的悦耳值相同。所谓悦耳值就是他所创作的乐曲,也就是1…N的排列中逆序对的个数。逆序对是指对于1…N的一个排列A1,A2,…,An中的两个数Ai,Aj,满足i
#include<bits/stdc++.h>#define N 500005#define ll long long#define inf 10000000using namespace std;inline int read(){ int x=0,f=1;char ch=getchar(); while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();} while (ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f;}int t[N],p[N],mx[N],a[N];ll sum[N];int n;inline ll calc(ll n){return (n*(n-1))>>1;}inline bool cmp(int a,int b){return a>b;}inline int lowbit(int x){return x&-x;}int query(int x){ int ans=0; for (int i=x;i;i-=lowbit(i)) ans+=t[i]; return ans;}void update(int x){ for (int i=x;i<=n;i+=lowbit(i)) t[i]++;}void work(int pos,ll num){ sort(a+pos,a+n+1); for (int i=pos;i<n;i++) { ll tmp=calc(n-i); if (tmp<num) { swap(a[i],a[i+num-tmp]); sort(a+i+1,a+n+1,cmp); for (int i=1;i<n;i++) printf("%d ",a[i]); cout<<a[n]; return; } } for (int i=1;i<n;i++) printf("%d ",a[i]);cout<<a[n];}int main(){ n=read(); for (int i=1;i<=n;i++) a[i]=read(); for (int i=n;i;i--) { p[i]=query(a[i]-1); sum[i]=sum[i+1]+p[i]; mx[i]=max(mx[i+1],a[i]); update(a[i]); } a[n+1]=inf; for (int i=n-1;i;i--) if (calc(n-i)+p[i]+1>=sum[i]&&p[i]<sum[i]&&mx[i]>a[i]) { int pos=n+1; for (int j=i+1;j<=n;j++) if (a[j]>a[i]&&a[j]<a[pos]) pos=j; swap(a[i],a[pos]); work(i+1,sum[i]-p[i]-1); return 0; } return 0;}
阅读全文
0 0
- 乐曲创作
- 乐曲创作
- 乐曲创作
- 【JZOJ 3873】 乐曲创作
- 【NOIP2014八校联考】乐曲创作(music) (详细证明)
- 【JZOJ3873】【NOIP2014八校联考第4场第2试10.20】乐曲创作(music)
- 【NOIP2014八校联考第4场第2试10.20】乐曲创作
- 【JZOJ3873】【NOIP2014八校联考第4场第2试10.20】乐曲创作(music)
- jzoj. 3873. 【NOIP2014八校联考第4场第2试10.20】乐曲创作(music)
- jzoj 3873. 【NOIP2014八校联考第4场第2试10.20】乐曲创作(music) 构造题+树状数组+线段树
- 乐曲速度标记
- 汇编乐曲编程
- [COGS902]乐曲主题
- Matlab编写乐曲
- 乐曲识别(版本检测)
- 汇编语言实现乐曲程序实践
- 自我创作
- 论文创作
- Lua 函数
- Android:如何快速对系统重启问题进行归类
- 一般线性模型、混合线性模型、广义线性模型
- 解决ueditor百度富文本编辑器图片可以上传但是在线管理图片无法显示
- jmeter与session(2)
- 乐曲创作
- 调用Python的print函数出问题
- 淘宝开店考试试题以及50题答案
- String—增删查改
- Lua 运算符
- CodeFroces 827A.String Reconstruction
- 基础java面试题梳理
- linux上gcc编译问题---math库函数
- C++ new的三种用法详细解析