根据条件,某些位置的数字就可以确定了。确定过程中如果有冲突,则无解。

如果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的更多相关文章

  1. hdu 5719 Arrange 贪心

    Arrange Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Proble ...

  2. hdu 5719(Arrange)(冷静分析)

    A数组显示从0到i的最小值B数组显示从0到i的最大值由此可得:A数组是单调不增的(怎么也会不使得最小值变大)B数组是单调不减的.设premin和premax为i位以前的最小值和最大值.可以得出以下几点 ...

  3. hdu 5719 BestCoder 2nd Anniversary B Arrange 简单计数问题

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5719 题意:一个数列为1~N的排列,给定mn[1...n]和mx[1...n],问有符合的排列数为多少 ...

  4. BestCoder 2nd Anniversary/HDU 5719 姿势

    Arrange Accepts: 221 Submissions: 1401 Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 262144/2 ...

  5. HDU 3743 Frosh Week (线段树+离散化)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3743 Frosh Week Time Limit : 2000/1000ms (Java/Other) ...

  6. HDU 1712 分组背包

    ACboy needs your help Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  7. HDU 1043 & POJ 1077 Eight(康托展开+BFS+预处理)

    Eight Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 30176   Accepted: 13119   Special ...

  8. HDU 5835 Danganronpa(弹丸论破)

     Danganronpa(弹丸论破) Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Other ...

  9. hdu 1043 Eight 经典八数码问题

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1043 The 15-puzzle has been around for over 100 years ...

随机推荐

  1. 网络通信框架Apache MINA

    Apache MINA(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络 ...

  2. 杭电21题 Palindrome

    Problem Description A palindrome is a symmetrical string, that is, a string read identically from le ...

  3. js 中null 和 undifined

    1.一个重要问题 null == undifined (true) ; null === undefined (false) 为什么是这样的呢? undifined是未赋值的基本数据类型,未定义: n ...

  4. bootsraps ch1

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...

  5. OC-之AFNetworking

    AFNetworking介绍与用法: http://cocoadocs.org/docsets/AFNetworking/2.4.1/index.html

  6. 将当天时间转换为unix时间戳

    /** * @return * * @Title: getDate * @Description: TODO(时间戳转换为String类型的日期数据) * @param @param unixDate ...

  7. android异步Http框架

    首先在GitHub上下载异步Http框架代码以及相关文档: 将jar包放入lib包中即可: 接下来分别实现get.post.文件上传功能实现: 代码实现如下: AsyncHttpClient clie ...

  8. 【转】解决Windows不能在本地计算机启动apache tomcat

    http://blog.163.com/ftskwsg@126/blog/static/5623853020094494117827/ 这个方法解决了我的问题. 在windows下以服务的方式启动时提 ...

  9. Django:之BBS项目

    首先新建一个BBSProject项目,在建一个app,把app导入到项目中. 在项目BBSProject中的settings.py中, INSTALLED_APPS = [ 'django.contr ...

  10. android动态LinearLayout

    在onCreate函数中: mLinearlayout= new LinearLayout(this); mLinearlayout.setOrientation(LinearLayout.VERTI ...