• SRM 538 div2


      客观原因很多,但我不想找了。水平在那摆着。。。。以后做比赛尽量找一个安静的点环境,比如实验室。昨晚一题没做出来,今天回头又翻了翻

    300pt:

    其实是道水题,很水很水的题。。。先统计出L,R所能到达的最远位置。然后把'?'补给大的。如果dis(L) = dis(R) 则补给第一个出现的。

    View Code
    #include <vector>
    #include <list>
    #include <map>
    #include <set>
    #include <queue>
    #include <deque>
    #include <stack>
    #include <bitset>
    #include <algorithm>
    #include <functional>
    #include <numeric>
    #include <utility>
    #include <sstream>
    #include <iostream>
    #include <iomanip>
    #include <cstdio>
    #include <cmath>
    #include <cstdlib>
    #include <ctime>

    using namespace std;


    class LeftOrRight {
    public:
    int maxDistance(string p) {
    int t = 0, mw = 0, fir = -1, ml = 0, mr = 0;
    int i, n = p.size();
    for(i = 0; i < n; ++i) {
    if(p[i] == 'L') {
    if(fir == -1) fir = 0;
    t--;
    ml = min(ml, t);
    } else if(p[i] == 'R') {
    if(fir == -1) fir = 1;
    t++;
    mr = max(ml, t);
    } else if(p[i] == '?') {
    mw ++;
    }
    }
    ml *= -1;
    if(ml == mr) {
    if(fir == 0) return ml + mw;
    else return mr + mw;
    }
    return max(ml, mr) + mw;
    }
    };

    500pt

    zjut_DD大神的证明:如果只有上下左右四个方向可走的话,从某点出发到外面绕一圈回来,总路程一定是偶数。那么根据题目的意思,如果结束的时候还走到原点(0,0)的话,就是一个圈了。那么就只需要枚举那条缺失的路。

    所以关键代码只有两行:

    for(i = 0; i < x.size(); ++i)    if((abs(x[i] + y[i])%2) == wantParty)   return "CAN";
    return "CANNOT";


    1000pt

    求教。还是那么的弱。。。T_T


  • 相关阅读:
    SDOI2017 树点染色
    ZROI week1
    ZROI week3
    BZOJ 4545
    ZROI week2
    组合数问题
    JSOI2016 独特的树叶
    TJOI2015 组合数学
    Beginning Storyboards in iOS 5 Part 2
    孕妇不能吃的东东
  • 原文地址:https://www.cnblogs.com/vongang/p/2410029.html
Copyright © 2020-2023  润新知