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() 获取最大值对应的索 ...
随机推荐
- Flannel 启动报错
[root@ ~]#: kubectl logs -f kube-flannel-plcbl -n kube-system kube-flannel I0601 16:58:55.456862 1 m ...
- 动态生成多个选择项【c#】
<asp:CheckBoxList ID="cbxLabelList" runat="server" RepeatColumns="10&quo ...
- Learning Spark中文版--第五章--加载保存数据(2)
SequenceFiles(序列文件) SequenceFile是Hadoop的一种由键值对小文件组成的流行的格式.SequenceFIle有同步标记,Spark可以寻找标记点,然后与记录边界重新 ...
- ubuntu18.10搜狗输入法的安装
记录一下 1.卸载ibus ubuntu默认使用ibus管理输入法,官方推荐使用fcitx.我们先卸载ibus sudo apt-get remove ibus 清除ibus配置,如果没有设置 sud ...
- JavaIO——内存操作流、打印流
我们之前所做的都是对文件进行IO处理,实则我们也可以对内存进行IO处理.我们将发生在内存中的IO处理称为内存流. 内存操作流也可分为两类:字节内存流和字符内存流. (1)ByteArrayInputS ...
- EBS 抓trace 文件
如果要对FORM的操作做TRACE操作,可以使用 帮助->诊断->跟踪 中启用跟踪功能来实现. 但是如果要实现对并发请求的trace,需要在 系统管理员->并发->方案-> ...
- 【Linux】【Database】【MySQL】使用percona搭建高可用的MySQL数据库
1. 简介 1.1. 官方文档: 数据库架构:https://docs.openstack.org/ha-guide/shared-database.html 1.2. 本次使用的的是Percona ...
- 过滤敏感词工具类SensitiveFilter
网上过滤敏感词工具类有的存在挺多bug,这是我自己改用的过滤敏感词工具类,目前来说没啥bug,如果有bug欢迎在评论指出 使用前缀树 Trie 实现的过滤敏感词,树节点用静态内部类表示了,都写在一个 ...
- 使用OPC与PLC通讯 一
总结自己在opc与自控开发的经验.首先介绍OPC DA模式下的OPC各种操作. 在使用opc时需要引用到 OPCDAAuto.dll 这个类库. 在项目引用后需要注册这个类库,否则程序跑起来会报错,& ...
- pthread_cond_signal与pthread_cond_wait详解
转:http://blog.chinaunix.net/uid-11572501-id-3456343.html //pthread_cond_signal 只发信号,内部不会解锁,在Linux 线程 ...