济南NOIP冬令营 选拔(select)
选拔(select)
Time Limit:2000ms Memory Limit:128MB
题目描述
LYK对n个女生有好感。第i个女生的身高为ai。
LYK要在这些女生中选拔出一个女生来作为他的女朋友。选拔当然要排队咯。于是LYK想让这n个女生排成一行。
但LYK觉得对于两个身高相同的女生,谁排在前谁排在后其实让整个队列看上去并没有什么差别。
LYK想知道有多少个有差别的队列。
输入格式(select.in)
第一行一个数n表示女生个数。
第二行有n个数ai表示第i个女生的身高。
输出格式(select.out)
一个数表示答案。
输入样例
3
1 2 2
输出样例
3
数据范围
对于40%的数据n<=5,。
对于60%的数据n<=20。
对于80%的数据n<=1000。
对于100%的数据n<=10000,1<=ai<=n。
#define LL long long #include<iostream>
#include<algorithm>
#include<cstring>
#include<iomanip>
#include<cstdio>
using namespace std; const int MAXN=;
const int DLEN=;
const int WIDE=; class BigNum
{
public:
BigNum(){memset(NUM,,sizeof(NUM));LEN=;}
BigNum(const BigNum &A){memcpy(NUM,A.NUM,sizeof(NUM));LEN=A.LEN;}
BigNum(int n){memset(NUM,,sizeof(NUM));NUM[]=n;LEN=;while(NUM[LEN-]>=WIDE){NUM[LEN]+=NUM[LEN-]/WIDE;NUM[LEN-]%=WIDE;LEN++;}}
LL NUM[MAXN],LEN;
}; void Output(const BigNum T)
{
cout<<T.NUM[T.LEN-];
for(int i=T.LEN-;i>=;i--)
{
cout.width(DLEN);
cout.fill('');
cout<<T.NUM[i];
}
} BigNum Mult(BigNum A,int n)
{
BigNum C(A);
int i,tmp,k=;
for(i=;i<C.LEN||k;i++)
{
tmp=C.NUM[i]*n+k;
k=tmp/WIDE;
C.NUM[i]=tmp%WIDE;
}
C.LEN=i;
return C;
} BigNum Div(BigNum A,int n)
{
BigNum C(A);
int k=;
for(int i=C.LEN-;i>=;i--)
{
k=k*WIDE+C.NUM[i];
C.NUM[i]=k/n;
k%=n;
}
while(C.NUM[C.LEN-]==) C.LEN--;
return C;
} int n;
int a[];
BigNum A(); int main()
{
freopen("select.in","r",stdin);
freopen("select.out","w",stdout);
scanf("%d",&n);
for(int i=;i<=n;i++)
{
int x;
scanf("%d",&x);
a[x]++;
}
for(int i=;i<=n;i++)
A=Mult(A,i);
for(int i=;i<=;i++)
if(a[i]>)
{
for(int j=;j<=a[i];j++)
A=Div(A,j);
}
Output(A);
return ;
}
模板题
一开始高精度开小了,爆80。。。
济南NOIP冬令营 选拔(select)的更多相关文章
- cogs 2752. [济南集训 2017] 数列运算
2752. [济南集训 2017] 数列运算 ★★☆ 输入文件:sequenceQBXT.in 输出文件:sequenceQBXT.out 简单对比时间限制:1 s 内存限制:512 ...
- OI 刷题记录——每周更新
每周日更新 2016.05.29 UVa中国麻将(Chinese Mahjong,Uva 11210) UVa新汉诺塔问题(A Different Task,Uva 10795) NOIP2012同余 ...
- SQL数据库知识二(Day 25)
又到了总结知识的时候了,今天主要把SQL数据库给简单的学完了,明天开始就要开始学ADO.NET的知识了.好了,话不多说,还是看一下今天都学了哪些内容. 1 字符串类型的知识点 --类型的使用 --截 ...
- sql写法,子节点名称拼接上级节点名称
with T(id,[name],pid) as(select 1,N'中国',-1 union allselect 2,N'山东',1 union allselect 3,N'济南',2 union ...
- 最全的ORACLE-SQL笔记
-- 首先,以超级管理员的身份登录oracle sqlplus sys/bjsxt as sysdba --然后,解除对scott用户的锁 alter user scott account unloc ...
- Matplotlib数据可视化(6):饼图与箱线图
In [1]: from matplotlib import pyplot as plt import numpy as np import matplotlib as mpl mpl.rcParam ...
- 清北 Noip 2016 考前刷题冲刺济南班
2016 10 29 周六 第一天 %%%,%ZHX大神 上午,60分, 下午,爆零orz 2016 10 30 周天 第二天 炒鸡倒霉的一天 %%%,%ZHX大神 据大神第一天的题最简单. 上午,和 ...
- noip济南清北冲刺班DAY2
题解: 贪心+dp 30% N<=5 5!枚举一下 20% 高度没有的时候,高度花费就不存在了,将ci排序, 从小到大挨个跳.另外,20% 准备跳楼没有花费,那么跳 楼的高度一定是从小到大, ...
- noip济南清北冲刺班DAY1
上午 T1 立方数 题目描述 LYK定义了一个数叫“立方数”,若一个数可以被写作是一个正整数的3次方,则这个数就是立方数,例如1,8,27就是最小的3个立方数. 现在给定一个数P,LYK想要知道这个数 ...
随机推荐
- 1104 Sum of Number Segments(20 分)
Given a sequence of positive numbers, a segment is defined to be a consecutive subsequence. For exam ...
- python大战机器学习——模型评估、选择与验证
1.损失函数和风险函数 (1)损失函数:常见的有 0-1损失函数 绝对损失函数 平方损失函数 对数损失函数 (2)风险函数:损失函数的期望 经验风险:模型在数据集T上的平均损失 根据大 ...
- Gym 101047M Removing coins in Kem Kadrãn
给定一个序列,只能拿走D,隔壁的会翻转,问能否全部拿走. 注意到如果能拿走的话,拿D的顺序是没关系的.模拟即可 #include <cstdio> #include <cstdlib ...
- js中的onclick事件传参需要注意的问题
如果参数是数值类型可以直接传,如果是字符串类型需要在字符串前后加上双引号,双引号需要转义 如 onclick="test(0)"; 直接传值 参数为数值 onclick=&quo ...
- arch安装软件提示包损坏
错误:lib32-libjpeg6-turbo: signature from "Colin Keenan <colinnkeenan@gmail.com>" is u ...
- android 开发-系统设置界面的实现
具体与Preference的用法类似,这里就不做过多解释,直接贴示例代码,需要在res下新建xml文件夹,在xml文件夹下添加xml文件. xml:(注意:root节点是:PreferenceScre ...
- sublime格式化HTML+CSS插件--HTML-CSS-JS Prettify
介绍 在工作中经常会下载不同项目的源码,可能是压缩的原因,其中一些代码的格式十分的乱,这样就会导致阅读起来十分的不方便,所以下面介绍一个sublime的插件:HTML-CSS-JS Prettify ...
- C 碎片六 函数
一.程序编译执行过程 程序的编译执行过程分为4个阶段:预处理阶段.编译阶段.汇编阶段.连接阶段 1. 预处理阶段:预处理器(cpp)处理以头文件.宏.条件编译(字符#开头)等内容的替换.此阶段不进行语 ...
- spring boot 基础 多环境配置
对于多环境的配置,各种项目构建工具的思路基本上一致,都是通过配置多份不同环境的配置文件来区分. 1. 首先我们先创建不同环境下的属性文件,截图如下: application.properties 是 ...
- Servlet高级部分Listener
监听器的使用场景: ①:统计在线人数 ②:实现单一登录[一个账号只能在一台机器上登录] Servlet中的8大监听器: 1. ServletContextListener [接口方 ...