1371 - Energetic Pandas
| Time Limit: 2 second(s) | Memory Limit: 32 MB |
There are n bamboos of different weights Wi. There are n pandas of different capacity CAPi. How many ways the pandas can carry the bamboos so that each panda carries exactly one bamboo, every bamboo is carried by one panda and a panda cannot carry a bamboo that is heavier than its capacity. Two ways will be considered different if at least one panda carries a different bamboo.
Input
Input starts with an integer T (≤ 100), denoting the number of test cases.
Each case starts with a line containing an integer n (1 ≤ n ≤ 1000) denoting the number of pandas and bamboos. The next line contains n space separated distinct integers denoting the weights of be bamboos. The next line contains n space separated distinct integers denoting the capacities for the pandas. The weights and the capacities lie in the range [1, 109].
Output
For each case, print the case number and the number of ways those pandas can carry the bamboos. This number can be very big. So print the result modulo 1000 000 007.
Sample Input |
Output for Sample Input |
|
3 5 1 2 3 4 5 1 2 3 4 5 2 1 3 2 2 3 2 3 4 6 3 5 |
Case 1: 1 Case 2: 0 Case 3: 4 |
1 #include<stdio.h>
2 #include<algorithm>
3 #include<iostream>
4 #include<string.h>
5 #include<queue>
6 #include<stack>
7 using namespace std;
8 typedef long long LL;
9 int ans[10000];
10 int bns[10000];
11 int dns[10000];
12 int cn[10000];
13 int aa[10000];
14 int bb[10000];
15 const int N=1e9+7;
16 int main(void)
17 {
18 int k,i,j;
19 scanf("%d",&k);
20 int ca;
21 int n;
22 for(ca=1; ca<=k; ca++)
23 {
24 scanf("%d",&n);
25 int cnt=0;
26 memset(cn,0,sizeof(cn));
27 for(i=0; i<n; i++)
28 {
29 scanf("%d",&ans[i]);
30 dns[cnt++]=ans[i];
31 }
32 for(i=0; i<n; i++)
33 {
34 scanf("%d",&bns[i]);
35 dns[cnt++]=bns[i];
36 }
37 sort(dns,dns+2*n);
38 for(i=0; i<n; i++)
39 {
40 int l=0;
41 int r=2*n-1;
42 int id=0;
43 while(l<=r)
44 {
45 int mid=(l+r)/2;
46 if(dns[mid]>=ans[i])
47 {
48 id=mid;
49 r=mid-1;
50 }
51 else l=mid+1;
52 }
53 ans[i]=id;
54 }
55 sort(ans,ans+n);
56 for(i=0; i<n; i++)
57 {
58 int l=0;
59 int r=2*n-1;
60 int id=0;
61 while(l<=r)
62 {
63 int mid=(l+r)/2;
64 if(bns[i]<=dns[mid])
65 {
66 id=mid;
67 r=mid-1;
68 }
69 else l=mid+1;
70 }
71 bns[i]=id;
72 cn[id]++;
73 }
74 int gg=0;
75 for(i=0; i<3000; i++)
76 {
77 if(cn[i]>0)
78 {
79 aa[gg]=i;
80 bb[gg++]=cn[i];
81 }
82 }
83 LL sum=1;
84 int cc=gg-1;
85 LL pp=0;
86 for(i=n-1; i>=0; i--)
87 {
88
89 while(aa[cc]>=ans[i]&&cc>=0)
90 {
91 pp=(pp+bb[cc]);
92 cc --;
93 }
94 if(pp>0)
95 {
96 sum=(sum*pp)%N;
97 pp-=1;
98 }
99 else
100 {
101 sum=0;
102 break;
103 }
104 }printf("Case %d: ",ca);
105 printf("%lld\n",sum);
106 }
107 return 0;
108 }
1371 - Energetic Pandas的更多相关文章
- \(\rm LightOJ 1371 - Energetic Pandas 简单计数+组合\)
http://www.lightoj.com/volume_showproblem.php?problem=1371 题意:给你n根竹子,和n只熊猫(XD),每个熊猫只能选择重量不大于它的竹子,问有几 ...
- BNU 13289 Energetic Pandas DP
Energetic Pandas There are n bamboos of different weights Wi. There are n pandas of different capa ...
- 五、Pandas玩转数据
Series的简单运算 import numpy as np import pandas as pd s1=pd.Series([1,2,3],index=['A','B','C']) print(s ...
- pandas基础-Python3
未完 for examples: example 1: # Code based on Python 3.x # _*_ coding: utf-8 _*_ # __Author: "LEM ...
- 10 Minutes to pandas
摘要 一.创建对象 二.查看数据 三.选择和设置 四.缺失值处理 五.相关操作 六.聚合 七.重排(Reshaping) 八.时间序列 九.Categorical类型 十.画图 十一 ...
- 利用Python进行数据分析(15) pandas基础: 字符串操作
字符串对象方法 split()方法拆分字符串: strip()方法去掉空白符和换行符: split()结合strip()使用: "+"符号可以将多个字符串连接起来: join( ...
- 利用Python进行数据分析(10) pandas基础: 处理缺失数据
数据不完整在数据分析的过程中很常见. pandas使用浮点值NaN表示浮点和非浮点数组里的缺失数据. pandas使用isnull()和notnull()函数来判断缺失情况. 对于缺失数据一般处理 ...
- 利用Python进行数据分析(12) pandas基础: 数据合并
pandas 提供了三种主要方法可以对数据进行合并: pandas.merge()方法:数据库风格的合并: pandas.concat()方法:轴向连接,即沿着一条轴将多个对象堆叠到一起: 实例方法c ...
- 利用Python进行数据分析(9) pandas基础: 汇总统计和计算
pandas 对象拥有一些常用的数学和统计方法. 例如,sum() 方法,进行列小计: sum() 方法传入 axis=1 指定为横向汇总,即行小计: idxmax() 获取最大值对应的索 ...
随机推荐
- Python中的随机采样和概率分布(一)
Python(包括其包Numpy)中包含了了许多概率算法,包括基础的随机采样以及许多经典的概率分布生成.我们这个系列介绍几个在机器学习中常用的概率函数.先来看最基础的功能--随机采样. 1. rand ...
- [Emlog主题] Monkey V3.0 优化修改
原作者博客:https://blog.dyboy.cn/ Monkey V3.0 优化修改版 修改说明: 背景颜色修改(按个人喜好可自行修改,仿PCQQ午夜巴黎皮肤) 搜索框按钮样式优化,不那么突兀了 ...
- Scala(二)【基本使用】
一.变量和数据类型 1.变量 语法:val / var 变量名:变量类型 = 值 val name:String = "zhangsan" 注意 1.val定义的变量想到于java ...
- tomcat结合nginx
相信很多人都听过nginx,这个小巧的东西慢慢地在吞食apache和IIS的份额.那究竟它有什么作用呢?可能很多人未必了解. 说到反向代理,可能很多人都听说,但具体什么是反向代理,很多人估计就不清楚了 ...
- 【编程思想】【设计模式】【结构模式Structural】享元模式flyweight
Python版 https://github.com/faif/python-patterns/blob/master/structural/flyweight.py #!/usr/bin/env p ...
- 【Linux】【Shell】【text】Vim
文本编辑器: 文本:纯文本,ASCII text:Unicode: 文本编辑种类: 行编辑器:sed 全屏编辑器:nano, vi vi: Visual Interface vim: Vi IMpro ...
- Linux 易错小结
修改文件夹(递归修改)权限 chmod -R 777 /html Linux查看进程的4种方法 第一种: ps aux ps命令用于报告当前系统的进程状态.可以搭配kill指令随时中断.删除不必要的程 ...
- SQL错误总结
ORA-00918: column ambiguously defined 异常原因: select 查询的字段在from的两张表中都存在,导致数据库无法区别需要查询的字段来自于哪张表 以下是例子 s ...
- 基于Web的质量和测试度量指标
直观了解软件质量和测试的完整性 VectorCAST/Analytics可提供便于用户理解的web仪表盘视图来显示软件代码质量和测试完整性指标,让用户能够掌握单个代码库的趋势,或对比多个代码库的度量指 ...
- Markdown随时记录
Markdown学习 推荐文本编译器 Typora 标题(支持六级) 一级标题:# + 空格 + 内容 二级标题:## + 空格 + 内容 三级标题:### + 空格 + 内容 . . . 字体 粗体 ...