Interesting Sequence(有趣的数列)[Special judge]

题目概述:是否存在一个长度为n的整数数列,其任意连续p项之和为正数而任意连续q项之和为负数?

方法:连续项a[i],a[i+1]...a[j]和的性质容易联想到以前n项和的方式表达,即s[j]-s[i],简洁明了。

由此发现只需求一个满足要求的s[0]~s[n]。

其中s[i+p]-s[i]>0,s[i]-s[i-q]<0。即s[i]

同理有s[i]>s[i-p],s[i+q]。

这是拓扑排序的雏形。

更幸运的是,由于需要存在初始s[i]最大(拓扑排序起点),即要求存在i,使得s[i+p],s[i-q]不存在,故i+p>n,i-q<0,=>p+q>=n+2。

这表明s[i+p],s[i-q]最多只有一个存在(每个节点最多只有一个入度)。

s[i-p],s[i+q]也最多只有一个存在(每个节点最多只有一个出度)。

因此拓扑排序时只要删除一个入度就能进队列,无需额外记录节点入度。

代码:

#include

#include

using namespace std;

 

//sort记录s[i]的大小,

//sort[i]>sort[j]=>s[i]>s[j],

//sort[i]-sort[0]=s[i]-s[0]=s[i],

//a[i]=sort[i]-sort[i-1]。

int sort[1000001];

 

int main(){

int t,n,p,q,m,i,j;

 queue mq;

 scanf("%d",&t);

while(t--){

  scanf("%d %d %d",&n,&p,&q);

 

  if(p+q

   printf("Impossible\n");

   continue;

  }

 

  m=n;

  for(i=n-p+1;i<=q-1;i++)

   mq.push(i);

 

  while(!mq.empty()){ //拓扑排序

   i=mq.front();

   mq.pop();

   sort[i]=m--;

   if(i-p>=0)

   
mq.push(i-p);

  

   else if(i+q<=n)

   
mq.push(i+q);

  

  }

 

  if(m==-1){

   for(i=1;i<=n-1;i++)

   printf("%d
",sort[i]-sort[i-1]);

  
printf("%d\n",sort[n]-sort[n-1]);

  }

  else

   printf("Impossible\n");

 

 }

 

 return 0;

}

74.Interesting Sequence(有趣的数列)(拓扑排序)的更多相关文章

  1. nyoj 349 (poj 1094) (拓扑排序)

    Sorting It All Out 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 An ascending sorted sequence of distinct ...

  2. POJ 1094:Sorting It All Out拓扑排序之我在这里挖了一个大大的坑

    Sorting It All Out Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 29984   Accepted: 10 ...

  3. 洛谷P2017 [USACO09DEC]晕牛Dizzy Cows [拓扑排序]

    题目传送门 晕牛Dizzy Cows 题目背景 Hzwer 神犇最近又征服了一个国家,然后接下来却也遇见了一个难题. 题目描述 The cows have taken to racing each o ...

  4. [USACO09DEC]晕牛Dizzy Cows (拓扑排序)

    https://www.luogu.org/problem/P2017 题目背景 Hzwer 神犇最近又征服了一个国家,然后接下来却也遇见了一个难题. 题目描述 The cows have taken ...

  5. 拓扑排序 POJ2367Genealogical tree[topo-sort]

    ---恢复内容开始--- Genealogical tree Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4875   A ...

  6. ACM/ICPC 之 拓扑排序范例(POJ1094-POJ2585)

    两道拓扑排序问题的范例,用拓扑排序解决的实质是一个单向关系问题 POJ1094(ZOJ1060)-Sortng It All Out 题意简单,但需要考虑的地方很多,因此很容易将code写繁琐了,会给 ...

  7. 2016"百度之星" - 初赛(Astar Round2A)Gym Class(拓扑排序)

    Gym Class  Accepts: 849  Submissions: 4247  Time Limit: 6000/1000 MS (Java/Others)  Memory Limit: 65 ...

  8. ACM: poj 1094 Sorting It All Out - 拓扑排序

    poj 1094 Sorting It All Out Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%lld & ...

  9. [ACM_模拟] POJ 1094 Sorting It All Out (拓扑排序+Floyd算法 判断关系是否矛盾或统一)

    Description An ascending sorted sequence of distinct values is one in which some form of a less-than ...

随机推荐

  1. Django之ModelForm(一)

    要说ModelForm,那就先说Form吧! 先给出一个Form示例: models.py from django.db import models class UserType(models.Mod ...

  2. python 输出 a+b

    AC代码: 单组输入: s=input().split() print(int(s[0])+int(s[1]))

  3. jquery 生成二维码

    jquery的二维码生成插件qrcode,在页面中调用该插件就能生成对应的二维码 <!DOCTYPE html> <html> <head> <meta ch ...

  4. php常用函数——数组函数

    php常用函数——数组函数

  5. docker安装总结 linux红帽系列

    由于Docker限制分为两个版本CE和EE,所以之前yum里面的docker是老版本,需要先进行卸载,现在的包名叫做docker-ce yum remove docker docker-common ...

  6. 【题解】BZOJ 3600: 没有人的算术——替罪羊树、线段树

    题目传送门 题意 具体的自己去上面看吧...反正不是权限题. 简单来说,就是定义了一类新的数,每个数是0或者为 \((x_L, x_R)\) ,同时定义比较大小的方式为:非零数大于零,否则按字典序比较 ...

  7. 设计模式之笔记--享元模式(Flyweight)

    享元模式(Flyweight) 定义 享元模式(Flyweight),运用共享技术有效地支持大量细粒度的对象. 类图 描述 Flyweight:抽象享元类,是所有的具体享元类的基类,为子类规定出需要实 ...

  8. Error -27796: Failed to connect to server "ip地址": [10060] Connection timed out

    如果出现Error -27796: Failed to connect to server "ip地址": [10060] Connection timed out 这样的错误,如 ...

  9. bootstrap使用前注意点和盒子模型

    bootstrap注意事项: https://getbootstrap.com/docs/4.0/getting-started/introduction/#quick-start 盒子模型: htt ...

  10. jquery文档

    http://jquery.cuishifeng.cn/selected_1.html