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() 获取最大值对应的索 ...
随机推荐
- kubernetes部署 etcd 集群
本文档介绍部署一个三节点高可用 etcd 集群的步骤: etcd 集群各节点的名称和 IP 如下: kube-node0:192.168.111.10kube-node1:192.168.111.11 ...
- JForum论坛安装以及部署
转载链接:https://blog.csdn.net/jhyfugug/article/details/79467369 首先安装JForum之前,先准备好安装环境Windows7+JDK+Tomca ...
- C++面试基础篇(一)
1. static关键字的作用 (1)全局静态变量 在全局变量前面加上关键字static, 全局变量就定义为一个全局静态变量 在静态存储区,在整个程序运行期间一致存在. 初始化:未初始化的全局静态变量 ...
- c#GridView
分页: 1.先把属性AllowPaging设置为true, 2.pagesize为每一页的行数,PageSize="15". 3.OnPageIndexChanging=" ...
- Python中的随机采样和概率分布(二)
在上一篇博文<Python中的随机采样和概率分布(一)>(链接:https://www.cnblogs.com/orion-orion/p/15647408.html)中,我们介绍了Pyt ...
- HDFS04 HDFS的读写流程
HDFS的读写流程(面试重点) 目录 HDFS的读写流程(面试重点) HDFS写数据流程 网络拓扑-节点距离计算 机架感知(副本存储节点的选择) HDFS的读数据流程 HDFS写数据流程 客服端把D: ...
- A Child's History of England.17
CHAPTER 6 ENGLAND UNDER HAROLD HAREFOOT, HARDICANUTE, AND EDWARD THE CONFESSOR Canute left three son ...
- HTML5 基础内容(元素/属性/格式化)
HTML基础 1.HTML元素 1.1 元素指的是开始标签到结束标签的所有代码. 1.2 元素的内容是开始标签与结束标签之间的内容. 1.3大多数HTML元素可用有属性. 1.4标签可以拥有属性为元素 ...
- C++之error: cannot bind non-const lvalue reference of type ‘myString&’ to an rvalue of type ‘myString’
先看代码(不想看代码可以直接看代码后的问题描述) //header.h #ifndef _HEADER_H #define _HEADER_H #define defaultSize 128 #inc ...
- Gradle安装与配置
一.Gradle安装 1.Gradle安装 (1)先安装JDK/JRE (2)Gradle下载官网 Gradle官网 (3)解压安装包到想安装到的目录.如D:\java\gradle-5.2.1 (4 ...