洛谷2524 Uim的情人节礼物·其之弐解题报告
2015-09-20 10:49
615 查看
先说一下,这道题思路明显。
洛谷2524 Uim的情人节礼物·其之弐本题地址: http://www.luogu.org/problem/show?pid=2524
题目描述
前传:详见洛谷P2525 //为什么前传在后传的后面?
Uim成功地按照顺序将礼物送到了N个妹子的手里并维持她们的和谐。
Uim现在想知道,他最终选择的顺序是所有给N个妹子送礼顺序中、字典序第几小的。
输入输出格式
输入格式:
第一行一个整数N,表示有N个数。
第二行一个整数X,表示给出的排列。
输出格式:
一个整数,表示是第几小的字典序。
输入输出样例
输入样例#1:
3
231
输出样例#1:
4
说明
1<=N<=9
输入的排列没有空格
但是,当初提了好几遍都是WA因为后面有这么几句没有空格!!!
好吧,其实没有空格也是很容易解决的——只要用字符串读入。。。然后存。。。其实就是康托展开。。。题目说的很明显,就是字典序。。。
我得说当初学的时间没有认真学。。。。还得去研究一下
代码如下
#include<iostream> #include<cmath> #define ff(i,s) for(int i=s;i<n;i++) //宏,,,据说可以压缩代码,但我没看出。。。 using namespace std; int n,number=1,z=1,tot=1,a[10],t; int main() { cin>>n; //其实完全没必要有n,只需要用strlen()函数就行了。。。还有表在意用ch来表示字符串 char ch[10]; cin>>ch; ff(i,0)a[i]=ch[i]-48; //数字=机内存储数-48或-‘0’ for(int i=n-2;i>=0;i--) //好,下面就是康托展开。其实就是一位一位的计算。和就是字典序 { number=number*(z++); t=0; for(int j=i+1;j<n;j++) { if(a[j]<a[i]) t++; } tot+=t*number; } cout<<tot; }
相关文章推荐
- iOS 完全复制UIView
- UIBarButtonItem随着屏幕切换变化的问题
- 修改系统TabBar上图片和文字的颜色
- Android UI高级控件之ArrayAdapter
- iOS - UIButton(UIEdgeInsets)/设置button上的文字和图片上下垂直居中对齐
- 基于UIControl控件实现ios点赞功能
- JUnit4.8.2来源分析-2 org.junit.runner.Request
- Volley框架解析(七)-----Request解析
- 3.3.1 SequenceMatcher对象
- 3.3.1 SequenceMatcher对象
- stack实现queue ; list实现stack
- Unique Binary Search Trees 解答
- 如何自己写xuetr(一) 每次改变的驱动名和服务名
- Unique Paths II 解答
- Unique Paths 解答
- hdoj 1047 Integer Inquiry(几个大数连续加)
- Permutation Sequence (略)
- QuickCalc | 快计算
- CryptoGUI | 文件加解密
- UGUI 锚点坑