Submission #1140256

#TimeUsernameProblemLanguageResultExecution timeMemory
1140256xnqsLamps (JOI19_lamps)C++20
100 / 100
174 ms147324 KiB
#include <iostream> #include <fstream> #include <vector> #include <queue> #include <utility> #include <algorithm> #include <cstring> int x; std::string str[2]; int dp[1000005][3][3]; int sol(int pos, int last_xor, int last_op) { if (pos==x) { return 0; } if (dp[pos][last_xor][last_op]!=-1) { return dp[pos][last_xor][last_op]; } int& ret = (dp[pos][last_xor][last_op] = 0x3f3f3f3f); for (int i = 0; i < 2; i++) { for (int j = 0; j < 3; j++) { int cost = 0; if (last_xor!=i&&i>0) { ++cost; } if (last_op!=j&&j>0) { ++cost; } int this_bit = ((j>0) ? (j-1) : (str[0][pos]-'0')); this_bit ^= i; if (this_bit == str[1][pos]-'0') { ret = std::min(ret, sol(pos+1,i,j)+cost); } } } return ret; } int main() { std::cin >> x >> str[0] >> str[1]; memset(dp,-1,sizeof(dp)); std::cout << sol(0,0,0) << "\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...