zoukankan      html  css  js  c++  java
  • Codeforces 849 A Odds and ends 思维

      题目链接: http://codeforces.com/contest/849/problem/A

      题目描述: 给你一串01, 问你能不能拆成奇数个每个串长度为奇数的以1开头和结尾的子串

      解题思路: 这题很惭愧啊.....是昨天晚上的A题, 我想过很多的解法, 想过贪心, 想过搜索, 但是没有一个想到点子上.....正确的想法是, 如果一个串符合已知条件, 也就是这个串的长度是奇数个奇数相加, 是奇数, 而此时分成了一块......也就是说如果一个串是奇数是分成奇数个奇数的必要条件.......所以说我们只需要判断整个串是不是满足条件即可, 就是长度是否是奇数, 开头结尾是不是同时为1.....
      代码: 

    #include <iostream>
    #include <cstdio>
    #include <string>
    #include <vector>
    #include <cstring>
    #include <iterator>
    #include <cmath>
    #include <algorithm>
    #include <stack>
    #include <deque>
    #include <map>
    #define lson l, m, rt<<1
    #define rson m+1, r, rt<<1|1
    #define mem0(a) memset(a,0,sizeof(a))
    #define sca(x) scanf("%d",&x)
    #define de printf("=======
    ")
    typedef long long ll;
    using namespace std;
    
    const int maxn = 105;
    int a[maxn];
    
    int main(){
        int n;
        sca(n);
        mem0(a);
        for( int i = 1; i <= n; i++ ) {
            sca( a[i] );
            a[i] = a[i]&1;
        }
        if( !a[1] || !a[n] ) {
            printf( "No
    " );
        }
        else {
            if( n & 1 ) {
                printf( "Yes
    " );
            }
            else {
                printf( "No
    " );
            }
        }
        return 0;
    }
    View Code

      思考: 这题给了我很大的教训......本来以为自己变强了....自信满满的去打CF, 没想到最后连A题都没做出来......以后我要打CF了......还是要虚心学习, 然后遇到题抽象出来, 找到满足条件的充要条件或者必要条件, 这是第一个想法, 然后证明正确性 , 如果没办法证明正确性再找别的方法....不应该一开始就瞎几把想.....自己还是要多见题, 多开开眼界

  • 相关阅读:
    待解决问题集锦
    蓝桥杯--- 历届试题 连号区间数(水题)
    蓝桥杯---历届试题 翻硬币 (水题)
    nyoj 678 最小K个数之和
    hdoj 2 括号配对问题【数组模拟实现+STL实现】
    hdoj 1016 Prime Ring Problem
    nyoj 62 笨小熊
    nyoj 47 过河问题
    nyoj 456 邮票分你一半
    nyoj 171 聪明的kk
  • 原文地址:https://www.cnblogs.com/FriskyPuppy/p/7466498.html
Copyright © 2011-2022 走看看