Two progressions(CodeForces-125D)【鸽巢原理】
题意:将一列数划分为两个等差数列。
思路:首先,我要吹爆鸽巢原理!!!真的很强大的东西!!!
加入能完成题设操作,则前三个数中,必有至少两个数在同一序列,枚举三种情况(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
Two progressions(CodeForces-125D)【鸽巢原理】的更多相关文章
- CodeForces 125D【鸽巢原理】
哇塞?开始的三个数其中两个数一定能确定一个序列.(鸽巢原理) #include <bits/stdc++.h> using namespace std; typedef long long ...
- Codeforces Round #648 (Div. 2) E. Maximum Subsequence Value(鸽巢原理)
题目链接:https://codeforces.com/problemset/problem/1365/E 题意 有 $n$ 个元素,定义大小为 $k$ 的集合值为 $\sum2^i$,其中,若集合内 ...
- Codeforces.618F.Double Knapsack(构造 鸽巢原理)
题目链接 \(Description\) 给定两个大小为\(n\)的可重集合\(A,B\),集合中的元素都在\([1,n]\)内.你需要从这两个集合中各选一个非空子集,使它们的和相等.输出方案. \( ...
- Codeforces 1188C DP 鸽巢原理
题意:定义一个序列的beauty值为序列中元素之差绝对值的最小值,现在给你一个数组,问所有长度为k的子序列的beauty值的和是多少? 思路:(官方题解)我们先解决这个问题的子问题:我们可以求出bea ...
- ACM数论之旅14---抽屉原理,鸽巢原理,球盒原理(叫法不一又有什么关系呢╮(╯▽╰)╭)
这章没有什么算法可言,单纯的你懂了原理后会不会运用(反正我基本没怎么用过 ̄ 3 ̄) 有366人,那么至少有两人同一天出生(好孩子就不要在意闰年啦( ̄▽ ̄")) 有13人,那么至少有两人同一月 ...
- 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 ...
- POJ 3370. Halloween treats 抽屉原理 / 鸽巢原理
Halloween treats Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 7644 Accepted: 2798 ...
- POJ 2356. Find a multiple 抽屉原理 / 鸽巢原理
Find a multiple Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7192 Accepted: 3138 ...
- cf319.B. Modulo Sum(dp && 鸽巢原理 && 同余模)
B. Modulo Sum time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
随机推荐
- FOFA 批量采集url 图形化界面编写
这是脚本 # coding:utf- import requests,re import time import sys import getopt import base64 guizhe='' s ...
- jinja2-模版简介
一 简介 在Flask中,调用render_template来对模版进行渲染,使用render_template,只需要导入这个API就可以,from flask import render_temp ...
- 2019balsn两道web和2019巅峰极客一道web记录
遇到3道有点意思的web,记录一下~ web1 题目地址:http://warmup.balsnctf.com/ 源码如下所示: <?php if (($secret = base64_deco ...
- 区间dp括号匹配
POJ2955 匹配则加一,不需要初始化 //#include<bits/stdc++.h> #include<iostream> #include<cstdio> ...
- selenium 隐式等待报错 value must be a non-negative integer
笔者运行代码使用selenium的隐式等待时出现报错: from selenium import webdriver # 从selenium导入webdriver import time driver ...
- [转][C#]AutoFac 使用方法总结
AutoFac使用方法总结:Part I 转自:http://niuyi.github.io/blog/2012/04/06/autofac-by-unit-test/ AutoFac是.net平台下 ...
- cookie和session的区别及其原理
1.为什么要有cookie/session? HTTP是一种无状态的协议,为了分辨链接是谁发起的,需自己去解决这个问题.不然有些情况下即使是同一个网站每打开一个页面也都要登录一下.而Session和C ...
- react native Expo完全基于ScrollView实现的下拉刷新和上拉触底加载
我直接封装成了一个组件 props参数为 static propTypes = { style:PropTypes.object, // 样式 refreshing:PropTypes.bool.is ...
- HttpServletRequest&HttpServletResponse对象
HttpServletRequest&HttpServletResponse对象不是由我们来创建的,而是由tomcat服务器创建,那么我们就可以直接来使用这两个 对象 A: HttpServl ...
- Scrapy - 小说爬虫
实例解析 - 小说爬虫 页面分析 共有三级页面 一级页面 大目录 二级页面 章节目录 三级界面 章节内容 爬取准备 一级界面 http://www.daomubiji.com/ 二级页面xpath 直 ...