题意:将一列数划分为两个等差数列。

思路:首先,我要吹爆鸽巢原理!!!真的很强大的东西!!!

    加入能完成题设操作,则前三个数中,必有至少两个数在同一序列,枚举三种情况(a1 a2,a2 a3,a1 a3分别为等差数列的前两项)。

    注:枚举情况时,如果操作失败,则将已成功生成的等差数列末项划分到另一个数列试试。(稍作思考即可)

代码如下:

#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int n,arr[],book[]; bool judge(){
int ps,gap;
int t1=,t2;
while(t1<=n&&book[t1]) t1++;
t2=t1+;
if(t1>n)
return false;
while(t2<=n&&book[t2]) t2++;
if(t2>n)
return true;
gap=arr[t2]-arr[t1];
ps=t2;
for(int i=t2+;i<=n;i++)
if(!book[i]){
if(arr[i]-arr[ps]==gap)
ps=i;
else
return false;
}
return true;
}
int main(){
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%d",&arr[i]);
if(n==)
printf("%d\n%d",arr[],arr[]);
else {
int x[]={arr[]-arr[],arr[]-arr[],arr[]-arr[]};
int flag=;
for(int i=;i<;i++){
int st=,tmp=arr[];
memset(book,,sizeof(book));
if(i==){
book[]=book[]=;
st=;
tmp=arr[];
}
else if(i==)
book[]=book[]=;
else
book[]=book[]=;
for(int ii=st;ii<=n;ii++)
if(arr[ii]==tmp+x[i]){
book[ii]=;
tmp=arr[ii];
}
if(judge()){
flag=;
break;
}
else {
int p=n;
while(!book[p])
p--;
book[p]=;
if(judge()){
flag=;
break;
}
}
}
if(flag){
for(int i=;i<=n;i++)
if(book[i])
printf("%d ",arr[i]);
printf("\n");
for(int i=;i<=n;i++)
if(!book[i])
printf("%d ",arr[i]);
}
else printf("No solution");
}
return ;
}

By xxmlala

最新文章

  1. JavaScript 智能社 拖拽
  2. 贪吃蛇的java代码分析(二)
  3. Java实时读取日志文件
  4. var和dynamic的区别及如何正确使用dynamic ?
  5. ubuntu下安装wine1.8和阿里旺旺
  6. [python]python元类
  7. C# 杂项
  8. ServerMediaSession::generateSDPDescription分析
  9. Inaccurate values for &ldquo;Currently allocated space&rdquo; and &ldquo;Available free space&rdquo; in the Shrink File dialog for TEMPDB only
  10. SharePoint2013 SharePoint-Hosted 模式 分页方法
  11. Delphi PChar与String互转
  12. Ubuntu 14.10安装mentohust
  13. java中&lt;T&gt; T和T的区别
  14. MySQL:事务的隔离性
  15. wireshark配合jmeter测试webservice接口
  16. 【java编程】String拼接效率探究
  17. docker link 过时不再用了?那容器互联、服务发现怎么办?
  18. linux系统编程之文件与IO(三):利用lseek()创建空洞文件
  19. FineUI分组显示弹框最新的在最上边
  20. java基础---JDK、JRE、JVM的区别和联系

热门文章

  1. 7月清北学堂培训 Day 4
  2. 第二章实战补充:Python操作Mysql
  3. RES协议和断网访问URL出现的错误页面
  4. WebService基础学习
  5. Git 命令行使用
  6. Visual Studio Team Systems
  7. Docker-compose的安装和使用
  8. in mind (不是 切记 的意思)
  9. 【python画图】
  10. Spring Aop(八)——advisor标签