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() 获取最大值对应的索 ...
随机推荐
- vc控制台程序关闭事件时的正确处理方式
百度可以找到很多关于这个问题解决的方法 关键控制台API函数:SetConsoleCtrlHandler 在支持C++ 11以上的编译器中,你可以这么做. SetConsoleCtrlHandler( ...
- C#生成编号
//自动生成账单编号 public string GetNewPoID(string Prefix) { string NewPoID = Prefix + DateTime.Now.Year.ToS ...
- 用友低代码开发平台YonBuilder首次亮相DevRun开发者沙龙
2020年的今天,没有人会再质疑企业上云的必要性与价值所在.从高科技行业到传统领域,大大小小的企业都希望走在变革道路前列,通过企业云加快业务数字化转型,更好地维护和管理企业数据. 然而,大多数企业都很 ...
- 使用clion阅读eos源码
配置mingw 安装clion 从github克隆源码 使用clion open打开 在cmake上使用boost: sudo apt-get install libboost-all-dev
- day15 数组
day15 数组 数组 1.什么是数组? 什么是数组? 具备某种相同属性的数据集合 [root@localhost ~]# array_name=(ddd) [root@localhost ~]# d ...
- TLSv1.3 Support:主流 Web 客户端和服务端对 TLSv1.3 的支持情况
TLSv1.3 Support:主流 Web 客户端和服务端对 TLSv1.3 的支持情况 请访问原文链接:https://sysin.org/blog/tlsv1-3-support/,查看最新版. ...
- 内存管理——array new,array delete
1.array new array new就是申请一个数组空间,所以在delete的时候一定不能忘记在delete前加[] delete加上[]符号以后,就相当于告诉系统"我这里是数组对象, ...
- C++ 成绩排名
1004 成绩排名 (20分) 读入 n(>)名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式: 每个测试输入包含 1 个测试用例,格式为 第 1 行:正整数 ...
- 利用unordered_map维护关联数据
在leetcode上刷339题Evaluate Division(https://leetcode.com/problems/evaluate-division/#/description)时在脑中过 ...
- Android 开源框架Universal-Image-Loader加载https图片
解决方案就是 需要 android https HttpsURLConnection 这个类忽略证书 1,找到 Universal-Image-Loader的library依赖包下面com.nostr ...