计蒜客:Floppy Music

 题目大意:开始点未定,有多个操作,将点向左或者向右移动d个单位长度,是否存在在一个开始点符合要求。

代码:

#include <iostream>
#include <bits/stdc++.h>
 
using namespace std;
 
bitset <20005> a,b;
 
int main()
{
    int n;
    cin>>n;
    int flag1=1;
    while(n--){
        int t,m;
        cin>>t>>m;
        //int a,b;
        int flag=0;
        a.reset();
        b.reset();
        for(int i=0;i<=t;i++){
            a.set(i),b.set(i);
        }
        for(int i=0;i<m;i++)
        {
            int l,r;
            scanf("%d%d",&l,&r);
            a=((a>>(r-l))|(a<<(r-l)))&b;
        }
        for(int i=0;i<=t;i++)
        {
            //cout<<a[i]<<endl;
            if(a[i]==1)
                flag=1;
        }
        if(flag==0)
            flag1=0;
        //cout << "Hello world!" << endl;
    }
    if(flag1==1)
        cout<<"possible"<<endl;
    else
        cout<<"impossible"<<endl;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/xyqqwer/article/details/81223934