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了......还是要虚心学习, 然后遇到题抽象出来, 找到满足条件的充要条件或者必要条件, 这是第一个想法, 然后证明正确性 , 如果没办法证明正确性再找别的方法....不应该一开始就瞎几把想.....自己还是要多见题, 多开开眼界

  • 相关阅读:
    gcc/g++动态链接库和静态库的链接顺序
    linux文件描述符--转载
    mysql之test表
    linux之eventfd()
    spring data jpa实现多条件查询(分页和不分页)
    List的remove方法里的坑
    启动Spring boot报错:nested exception is java.sql.SQLException: Field 'id' doesn't have a default value
    CentOS下yum安装jdk
    CentOS下yum安装mysql
    Redis有序Set、无序Set的使用经历
  • 原文地址:https://www.cnblogs.com/FriskyPuppy/p/7466498.html
Copyright © 2011-2022 走看看