codeforces 849A A.Odds and Ends
来源:互联网 发布:淘宝店买什么好 编辑:程序博客网 时间:2024/05/23 19:15
http://codeforces.com/problemset/problem/849/A
题意:给你一个序列,然后让你判断这个序列能不能分成这样奇数个的子序列,这些子序列满足以奇数为起点,以奇数为终点,如果能分成这样的序列输出Yes,否则输出No。
思路:xjb搜就行了,先打一个奇数长度的奇数表,暴力dfs,判断在所有的情况下,有没有一种情况满足条件,如果有就‘Yes’,否则‘NO’.
#include <iostream>
#include <cstdio>
#include <string>
#define maxn 110
using namespace std;
bool flag;
int n;
int a[maxn],odd[maxn];
void dfs(int s,int left,int len,int cnt) //left剩余的长度,len当前枚举的长度
{
if(!left)return;
//printf("%d%d %d %d\n",s,left,len,cnt);
if(left&1)
{
if((a[s]&1)&&(a[n]&1))
{
if((cnt+1)&1)
{
flag=true;
//printf("cnt+1=%d\n",cnt+1);
}
}
return;
}
if(flag)return;
for(int i=1;i<=50;i++)
{
if(s+odd[i]>n||a[s]%2==0||a[s+odd[i]-1]%2==0)continue;
dfs(s+odd[i],left-odd[i],odd[i],cnt+1);
}
}
int main()
{
for(int i=1;i<=50;i++)
odd[i]=2*i-1;
while(scanf("%d",&n)!=EOF)
{
flag=false;
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
dfs(1,n,n,0);
if(flag)
printf("Yes\n");
else printf("No\n");
}
return 0;
}
- codeforces 849A A.Odds and Ends
- Codeforces 849 A Odds and Ends
- CodeForces-849A Odds and Ends
- codeforces 849A Odds and Ends
- A. Odds and Ends
- Codeforces 849A. Odds and Ends 结论题,水题
- Codeforeces 849A Odds and Ends
- Codeforces Round #431 (Div. 2) A Odds and Ends
- Codeforces Round #431 (Div. 2) A. Odds and Ends
- Codeforces Round #431 (Div. 2) A. Odds and Ends 题解
- CodeForces 431# div.2 A Odds and Ends 暴力 贪心
- Codeforces Round #431 (Div. 2) 849A Odds and Ends(思维)
- Codeforces Round #431 (Div. 2) A. Odds and Ends(找规律)
- A. Odds and Ends Codeforces Round #431 (Div. 2)(水题)
- Codeforces Round #431 (Div. 2) A、Odds and Ends B、Tell Your World C、From Y to Y
- odds and ends
- cfA. Odds and Ends
- Codeforces849A Odds and Ends
- 【九度OJ】1187:最小年龄的3个职工
- 【DP】51Nod 1052 最大M子段和
- 阅读源码流程
- 工厂模式
- PHP的最大递归层数
- codeforces 849A A.Odds and Ends
- 我的自我评价·担忧·困惑·反思(不断更新)
- Android 性能优化学习笔记.
- 17.9.1日报
- 利用CoreAnimation实现一个时间的进度条
- srs-bench 针对特定业务性能测试并发推流 解决方案
- javaWEB项目中webSocket的简单应用
- 5. Longest Palindromic Substring
- JAVA入门第一式