代替思考(インターバル交差点、貪欲)

ケビンは、単に、長さnのバイナリ文字列の形で牛の米国同定オリンピック(USAICO)に彼の不本意な結果をreceviedました。ケビンの文字列の各文字は、それ以外の場合はオリンピック-'1' 0 『正しく識別牛とは』のn個の質問の中にケビンのスコアを表します。

しかし、すべてが失われることはありません。ケビンは、代替思考の大きな支持者であり、彼のスコアは、代わりに彼のポイントの合計であることの、彼の文字列の最長の交互のサブシーケンスの長さであるべきと考えています。ここでは、どの2つの連続した要素が等しいしない、必ずしも連続したサブシーケンスとして文字列の交互のシーケンスを定義します。例えば、{0、1、0、1}、{1,0,1}、及び{1、0、1、0}が交互している配列、一方{1、0、0}と{0、1、0 、1、1}はありません。

ケビンは、彼があることを卑劣な少しpuffballされ、彼のスコアを向上させるためにUSAICOデータベースに侵入していく所存です。微妙であるためには、彼は正確に一つのサブストリング、つまり、彼のスコアの連続した空でない部分文字列を取り、その逆の1と副「にその部分文字列で0の」すべてを変更反転することを決定しました。このような操作の後、ケビンは彼の文字列が持ち得る可能な限り最長の交流サブシーケンスの長さを知りたいです。
入力
最初の行は、オリンピックN(1≤N≤100 000)上の質問の数を含んでいます。

次の行はUSAICOにケビンの結果を表す長さNのバイナリ文字列を含みます。

出力
出力単一の整数、ケビンは、単一の部分文字列をひっくり返す後、彼の文字列で作成できることをできるだけ長い交互のサブシーケンスの長さ。


インプット
8
10000011
出力
5
入力
2
01
出力
2
メモ
最初のサンプルでは、ケビンは太字「10000011」サブストリング反転及び長さ5の交互のシーケンスを有し、「10011011」に彼の文字列を変えることができ「10011011」。

第二のサンプルでは、ケビンは反転することができ 、文字列全体をしても同じスコアを持っている。
トピック分析:
このタイトルでは実際には変換についての質問の多くは、何よりも異なる細部を取るよりも、多くの基本的な質問に変換することができることを知っているかもしれません。
問題は、それだけの時間で正確なので、質問には必要ありません温度が温度変化間隔が交差する最初の人と二人の間で変化するか含まれている場合は、二人が満足しなければならない、というように、一人一人を置き換えます端部の周りに間隔で交換これは最も正確であるため、交換が付加されていない場合は、左端点が無限の増減、詳細情報を表示するためのコードであり、エンドポイント、左と右のエンドポイント、、、最大値、最小値、右点をとります。

#include<iostream>
using namespace std;
int main()
{
    int q;
    cin>>q;
    while(q--)
    {
        int n,m;
        cin>>n>>m;
        int t,x,y;
        int l=m,r=m,time=0,flag=1;
        for(int i=1;i<=n;i++)
        {
            cin>>t>>x>>y;
            l-=(t-time);
            r+=(t-time);
            time=t;
            if(x>r||y<l) {flag=0;}//出现不满意直接标记
            l=max(l,x);//更换左右端点
            r=min(r,y);
        }
        if(flag) cout<<"YES"<<endl;
        else cout<<"NO"<<endl;
    }
    return 0;
}
公開された43元の記事 ウォン称賛42 ビュー9531

おすすめ

転載: blog.csdn.net/amazingee/article/details/104650757