HDU 5719 Arrange
根据条件,某些位置的数字就可以确定了。确定过程中如果有冲突,则无解。
如果B中出现了递增,C中出现了递减,则无解。
对于每一个未确定的a[i],ans需要更新,ans=ans*((c[i]-b[i]+1)-(i-1))%MOD;
如果计算ans过程中,出现了(c[i]-b[i]+1)-(i-1)<=0,则也是无解。
#include<cstdio>
#include<cstring>
#include<cmath>
#include<vector>
#include<map>
#include<queue>
#include<stack>
#include<algorithm>
using namespace std; long long MOD=;
const int maxn=+;
int T,n;
int a[maxn],b[maxn],c[maxn];
int tmp1[maxn],tmp2[maxn];
bool f[maxn];
long long h[maxn]; int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
for(int i=;i<=n;i++) scanf("%d",&b[i]);
for(int i=;i<=n;i++) scanf("%d",&c[i]); memset(a,-,sizeof a);
memset(tmp1,-,sizeof tmp1);
memset(tmp2,-,sizeof tmp2); tmp1[]=b[];
for(int i=;i<=n;i++) if(b[i]<b[i-]) tmp1[i]=b[i]; tmp2[]=c[];
for(int i=;i<=n;i++) if(c[i]>c[i-]) tmp2[i]=c[i]; bool fail=;
for(int i=;i<=n;i++)
if(tmp1[i]!=-&&tmp2[i]!=-&&tmp1[i]!=tmp2[i]) fail=; for(int i=;i<=n;i++) if(b[i]>b[i-]||c[i]<c[i-]) fail=; if(fail) { printf("0\n"); continue;} for(int i=;i<=n;i++)
{
if(tmp1[i]!=-) a[i]=tmp1[i];
if(tmp2[i]!=-) a[i]=tmp2[i];
} long long ans=;
for(int i=;i<=n;i++)
{
if(a[i]!=-) continue;
if((c[i]-b[i]+)-(i-)<=) ans=;
ans=ans*((c[i]-b[i]+)-(i-))%MOD;
}
printf("%lld\n",ans);
}
return ;
}
HDU 5719 Arrange的更多相关文章
- hdu 5719 Arrange 贪心
Arrange Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) Proble ...
- hdu 5719(Arrange)(冷静分析)
A数组显示从0到i的最小值B数组显示从0到i的最大值由此可得:A数组是单调不增的(怎么也会不使得最小值变大)B数组是单调不减的.设premin和premax为i位以前的最小值和最大值.可以得出以下几点 ...
- hdu 5719 BestCoder 2nd Anniversary B Arrange 简单计数问题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5719 题意:一个数列为1~N的排列,给定mn[1...n]和mx[1...n],问有符合的排列数为多少 ...
- BestCoder 2nd Anniversary/HDU 5719 姿势
Arrange Accepts: 221 Submissions: 1401 Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 262144/2 ...
- HDU 3743 Frosh Week (线段树+离散化)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3743 Frosh Week Time Limit : 2000/1000ms (Java/Other) ...
- HDU 1712 分组背包
ACboy needs your help Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- HDU 1043 & POJ 1077 Eight(康托展开+BFS+预处理)
Eight Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 30176 Accepted: 13119 Special ...
- HDU 5835 Danganronpa(弹丸论破)
Danganronpa(弹丸论破) Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Other ...
- hdu 1043 Eight 经典八数码问题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1043 The 15-puzzle has been around for over 100 years ...
随机推荐
- 网络通信框架Apache MINA
Apache MINA(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络 ...
- 杭电21题 Palindrome
Problem Description A palindrome is a symmetrical string, that is, a string read identically from le ...
- js 中null 和 undifined
1.一个重要问题 null == undifined (true) ; null === undefined (false) 为什么是这样的呢? undifined是未赋值的基本数据类型,未定义: n ...
- bootsraps ch1
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...
- OC-之AFNetworking
AFNetworking介绍与用法: http://cocoadocs.org/docsets/AFNetworking/2.4.1/index.html
- 将当天时间转换为unix时间戳
/** * @return * * @Title: getDate * @Description: TODO(时间戳转换为String类型的日期数据) * @param @param unixDate ...
- android异步Http框架
首先在GitHub上下载异步Http框架代码以及相关文档: 将jar包放入lib包中即可: 接下来分别实现get.post.文件上传功能实现: 代码实现如下: AsyncHttpClient clie ...
- 【转】解决Windows不能在本地计算机启动apache tomcat
http://blog.163.com/ftskwsg@126/blog/static/5623853020094494117827/ 这个方法解决了我的问题. 在windows下以服务的方式启动时提 ...
- Django:之BBS项目
首先新建一个BBSProject项目,在建一个app,把app导入到项目中. 在项目BBSProject中的settings.py中, INSTALLED_APPS = [ 'django.contr ...
- android动态LinearLayout
在onCreate函数中: mLinearlayout= new LinearLayout(this); mLinearlayout.setOrientation(LinearLayout.VERTI ...