結果

問題 No.2402 Dirty Stairs and Shoes
ユーザー batapi0311batapi0311
提出日時 2023-08-04 22:10:21
言語 C++14
(gcc 12.3.0 + boost 1.83.0)
結果
AC  
実行時間 242 ms / 2,000 ms
コード長 3,674 bytes
コンパイル時間 1,844 ms
コンパイル使用メモリ 178,536 KB
実行使用メモリ 29,184 KB
最終ジャッジ日時 2024-05-10 07:20:45
合計ジャッジ時間 5,793 ms
ジャッジサーバーID
(参考情報)
judge3 / judge2
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 2 ms
5,248 KB
testcase_01 AC 3 ms
5,376 KB
testcase_02 AC 2 ms
5,376 KB
testcase_03 AC 111 ms
12,672 KB
testcase_04 AC 14 ms
5,632 KB
testcase_05 AC 242 ms
29,184 KB
testcase_06 AC 57 ms
10,880 KB
testcase_07 AC 15 ms
5,376 KB
testcase_08 AC 32 ms
6,528 KB
testcase_09 AC 82 ms
13,056 KB
testcase_10 AC 89 ms
10,624 KB
testcase_11 AC 48 ms
7,680 KB
testcase_12 AC 21 ms
5,760 KB
testcase_13 AC 104 ms
13,952 KB
testcase_14 AC 202 ms
21,120 KB
testcase_15 AC 68 ms
13,696 KB
testcase_16 AC 36 ms
7,424 KB
testcase_17 AC 130 ms
16,256 KB
testcase_18 AC 91 ms
12,928 KB
testcase_19 AC 162 ms
18,816 KB
testcase_20 AC 128 ms
16,256 KB
testcase_21 AC 3 ms
5,376 KB
testcase_22 AC 59 ms
9,600 KB
testcase_23 AC 33 ms
8,960 KB
testcase_24 AC 58 ms
9,472 KB
testcase_25 AC 152 ms
18,432 KB
testcase_26 AC 58 ms
9,984 KB
testcase_27 AC 158 ms
19,328 KB
testcase_28 AC 106 ms
14,336 KB
testcase_29 AC 56 ms
9,856 KB
testcase_30 AC 4 ms
5,376 KB
testcase_31 AC 165 ms
19,456 KB
testcase_32 AC 58 ms
9,600 KB
testcase_33 AC 2 ms
5,376 KB
testcase_34 AC 41 ms
7,680 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>
#define _USE_MATH_DEFINES
//#include <atcoder/all>
//using namespace atcoder;
//using mint = modint998244353;
//using mint = modint1000000007;
using namespace std;

using ll = long long;
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
#define rep2(i, s, n) for (int i = (s); i < (int)(n); i++)
#define rrep(i,a,b) for(int i=a;i>=b;i--)
#define fore(i,a) for(auto &i:a)

#define V vector<ll>
#define Vi vector<int>
#define Vd vector<double>
#define Vb vector<bool>
#define Vs vector<string>
#define Vc vector<char>
#define VV vector<V>
using P = pair<ll,ll>;
using G = vector<vector<int>>;
template<typename T> using min_priority_queue = priority_queue<T, vector<T>, greater<T>>;
#define all(a) (a).begin(),(a).end()
#define rall(a) (a).rbegin(),(a).rend()
#define INF 1LL << 60
template <typename T>
bool chmax(T &a, const T& b) {
  if (a < b) {
    a = b;  // aをbで更新
    return true;
  }
return false;
}
template <typename T>
bool chmin(T &a, const T& b) {
  if (a > b) {
    a = b;  // aをbで更新
    return true;
  }
  return false;
}

long long combi(long long n, long long k) {
  if (n == k || k == 0)
    return 1;
  else {
    return combi(n - 1, k - 1) + combi(n - 1, k);
  }
}
//整数かどうか
bool isNumber(const string& str)
{
  for (const char &c : str) {
        if (std::isdigit(c) == 0) return false;
    }
    return true;
}
//最大公約数
int gcd(int a, int b){
  if(a%b == 0){
    return b;
  }else{
    return gcd(b, a%b);
  }
}
//最小公倍数
int lcm(int a, int b){
  return a*b / gcd(a, b);
}

//int di[] = {-1,0,1,0};
//int dj[] = {0,-1,0,1};

//s = regex_replace(s, regex("あ"), "う");
/*stiring で char を検索するときは
    s.find(c)!=string::npos
 */


/*//各桁の和
 int wa(int n){
  int sum =0;
  while(n>0){
    sum += n%10;
    n/=10;
  }
  return sum;
}
*/

//階乗
 int ki(int i){
   int k = 1;
   for(int j = 1; j<=i; j++){
     k *= j;
   }
   return k;
 }

/*log_x(b)
double logN(double x, double b) {
    return log(x) / log(b);
}
*/

/*//エラトステネスの篩 main関数内にsolve();を書き込む!!
const ll N = 101010;//求める範囲
Vb isp(N+1,true);
void solve(){
  isp[0] = false;
  isp[1] = false;
  for(ll i = 2; i+i<=N;i++){
    if(isp[i])for(ll j = 2; i*j<=N;j++)isp[i*j] = false;
  }
}
*/
/*
ll modpow(ll x, ll n, ll mod){
 while(n){
   ll resu = 1;
   if(n&1)res = (res * x) %mod;
   x = (x*x)%mod;
   n>>=1;
 }
 return res;
}
*/
/*
//最小二乗法
//aのb乗をmで割ったあまりを返す関数
//変数aはa^1→a^2→a^4→a^8→…と変化
ll power(ll a,ll b, ll m){
  ll p = a,ans = 1;
  rep(i,60){
    ll wari = (1LL<<i);
    if((b/wari)%2==1){
      ans=(ans*p)%m;
    }
    p=(p*p)%m;
  }
  return ans;
}
*/

//vector<int> dx = {1,0,-1,0,1,-1,-1,1};
//vector<int> dy = {0,1,0,-1,1,1,-1,-1};
int dx[4] = { 0, 1, 0, -1 }, dy[4] = { -1, 0, 1, 0 };
//#define mod 998244353
//cout << mint.val() << endl;
//cout << fixed << setprecision(15) << y << endl;
#define yes "Yes"
#define no "No"
#define Yes "YES"
#define No "NO"



bool dp[404040][2];
int main(){
  int n,k,m;
  cin >> n >> k >> m;
  map<int,bool>yg,kr;
  rep(i,m){
    int a;cin >> a;
    yg[a]=true;
  }
  cin >> m;
  rep(i,m){
    int b;cin >> b;
    kr[b]=true;
  }
  //1できれい0で汚い
  dp[0][1]=true;
  dp[0][0]=false;
  rep(i,n)rep(j,2){
    if(dp[i][j] == true){
      if(yg[i+1]==true)dp[i+1][0]=true;
      else if(kr[i+1]==true)dp[i+1][1]=true;
      else dp[i+1][j]=true;
      if(yg[i+k]==true)dp[i+k][0]=true;
      else if(kr[i+k]==true)dp[i+k][1]=true;
      else dp[i+k][j]=true;
    }
  }
  if(dp[n][1])cout << yes << endl;
  else cout << no << endl;
}
0