哇塞?开始的三个数其中两个数一定能确定一个序列。(鸽巢原理)

#include <bits/stdc++.h>
using namespace std;
typedef long long LL; const int N=3e4+10; int a[N],n;
bool vis[N]; void print(vector<int>v)
{
int sz = v.size();
for(int i=0; i<sz; i++)
printf("%d ",v[i]);
puts("");
} bool check(vector<int>v)
{
if(!v.size())
return false;
if(v.size()==1||v.size()==2) return true; int d=v[1]-v[0];
for(int i=2; i<v.size(); i++)
if(v[i]-v[i-1]!=d)
return false;
return true;
} bool solve(int l,int r)
{
vector<int>v1,v2;
memset(vis,false,sizeof(vis));
int d=a[r]-a[l];
int last=-1,get=a[l];
for(int i=1; i<=n; i++)
if(a[i]==get)
{
get+=d;
v1.push_back(a[i]);
last=i;
}
else vis[i]=1;
for(int i=1; i<=n; i++)
if(vis[i])
v2.push_back(a[i]);
if(check(v2))
{
print(v1);
print(v2);
return true;
}
vis[last]=1;
v1.pop_back();
v2.clear();
for(int i=1; i<=n; i++)
if(vis[i])
v2.push_back(a[i]);
if(check(v2))
{
print(v1);
print(v2);
return true;
}
return false;
} int main()
{
scanf("%d",&n);
for(int i=1; i<=n; i++)
scanf("%d",&a[i]);
if(n==2)
printf("%d\n%d",a[1],a[2]);
else if(!solve(1,2)&&!solve(2,3)&&!solve(1,3))
printf("No solution");
return 0;
}

CodeForces 125D【鸽巢原理】的更多相关文章

  1. Codeforces Round #648 (Div. 2) E. Maximum Subsequence Value(鸽巢原理)

    题目链接:https://codeforces.com/problemset/problem/1365/E 题意 有 $n$ 个元素,定义大小为 $k$ 的集合值为 $\sum2^i$,其中,若集合内 ...

  2. Codeforces.618F.Double Knapsack(构造 鸽巢原理)

    题目链接 \(Description\) 给定两个大小为\(n\)的可重集合\(A,B\),集合中的元素都在\([1,n]\)内.你需要从这两个集合中各选一个非空子集,使它们的和相等.输出方案. \( ...

  3. Codeforces 1188C DP 鸽巢原理

    题意:定义一个序列的beauty值为序列中元素之差绝对值的最小值,现在给你一个数组,问所有长度为k的子序列的beauty值的和是多少? 思路:(官方题解)我们先解决这个问题的子问题:我们可以求出bea ...

  4. ACM数论之旅14---抽屉原理,鸽巢原理,球盒原理(叫法不一又有什么关系呢╮(╯▽╰)╭)

    这章没有什么算法可言,单纯的你懂了原理后会不会运用(反正我基本没怎么用过 ̄ 3 ̄) 有366人,那么至少有两人同一天出生(好孩子就不要在意闰年啦( ̄▽ ̄")) 有13人,那么至少有两人同一月 ...

  5. Wunder Fund Round 2016 (Div. 1 + Div. 2 combined) F. Double Knapsack 鸽巢原理 构造

    F. Double Knapsack 题目连接: http://www.codeforces.com/contest/618/problem/F Description You are given t ...

  6. POJ 3370. Halloween treats 抽屉原理 / 鸽巢原理

    Halloween treats Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7644   Accepted: 2798 ...

  7. POJ 2356. Find a multiple 抽屉原理 / 鸽巢原理

    Find a multiple Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7192   Accepted: 3138   ...

  8. cf319.B. Modulo Sum(dp && 鸽巢原理 && 同余模)

    B. Modulo Sum time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

  9. poj 2356 Find a multiple(鸽巢原理)

    Description The input contains N natural (i.e. positive integer) numbers ( N <= ). Each of that n ...

随机推荐

  1. Java的TCP网络编程

    服务端代码: package socket; import java.io.BufferedReader; import java.io.IOException; import java.io.Inp ...

  2. 分享知识-快乐自己:SpringBoot集成热部署配置(一)

    摘要: 热部署与热加载: ava热部署与Java热加载的联系和区别: 1):Java热部署与热加载的联系: 1.不重启服务器编译/部署项目 2.基于Java的类加载器实现 2):Java热部署与热加载 ...

  3. struts2--Basic(一)

    Struts是流行和成熟的基于MVC设计模式的WEB应用程序框架. 帮助我们减少在运用MVC设计模式来开发Web应用的时间. 1.下载添加jar包 2. 准备配置文件 web.xml <filt ...

  4. MySQL--开发技巧(一)

    Inner Join: Left Outer Join: Right Outer Join: Full Join: Cross Join: SELECT t1.attrs ,t2.attrs FROM ...

  5. Java中日期和时间的相关问题

    1.java.lang.System类 System类提供的public static long currentTimeMillis()用来返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位 ...

  6. Android: 一个两点触控的案例

    下面是一个两点触控的案例代码: package com.zzj; import android.app.Activity; import android.os.Bundle; import andro ...

  7. ONVIF测试方法及工具

    设备是否支持ONVIF验证1 ONVIF Test Tool安装1.1PC安装环境要求:装有Microsoft .Net Framework 3.5或以上版本.1.2安装源文件请见:ONVIF Con ...

  8. Uva10366

    模拟乱搞 要说算法的话...乱搞算法? #include<iostream> #include<cstring> #include<algorithm> #incl ...

  9. python中如何定义main方法

    我们有时写的python模块需要自己测试, 简单方法就是定义main函数, 然后测试自己的模块接口. def main():      test_yourCode() if __name__ == & ...

  10. javaScript之this的五种情况

    this一直是JavaScript研究的难题,特别是在笔试和面试中的各种程序分析问题中,也常常会被问到.下面来看一看this被运用的五中情况: (1)       纯粹的函数调用 函数最普通用法,此时 ...