#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
int main()
{
freopen("C:\\Users\\Ambition\\Desktop\\in1.txt","r",stdin);
int a, b, x, y, ans = INT_MAX, step = 0;
cin >> a >> b >> x >> y;
vector<pii> attack = {{-x, 0}, {0, -x}, {-y, -y}};
queue<pii> q;
q.push({a, b});
set<pii> vis;
vis.insert({a,b});
while(!q.empty()){
step++;
int qsize = q.size();
//cout << qsize << endl;
for(int i = 0; i < qsize; i++){
auto cur = q.front();
q.pop();
if(cur.first <= 0 && cur.second <= 0){
goto ok;
}
for(int i = 0; i < 3; i++){
auto next = cur;
next.first += attack[i].first;
next.second += attack[i].second;
if(!vis.count(next) ){
q.push(next);
vis.insert(next);
if(next.first <= 0 && next.second <= 0){
goto ok;
}
}
}
}
}
ok:
cout << step << endl;
return 0;
}
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
freopen("C:\\Users\\Ambition\\Desktop\\in2.txt","r",stdin);
string s;
while(cin >> s){
cout << s << endl;
int n = s.size();
if(n <= 1) {
cout << 0 << endl;
continue;
}
//dp[i] 前i个字符可以获得最大分数
vector<int> dp(n, 0);
dp[0] = 0;
if(abs(s[0] - s[1]) <= 1){
dp[1] = s[0] + s[1] - 'a' - 'a' + 2;
}
for(int i = 1; i + 1 < n; i++){
dp[i] = max(dp[i], dp[i-1]);
if(abs(s[i] - s[i-1]) <= 1){
int v = s[i] + s[i - 1] - 'a' - 'a' + 2;
if(i-2>=0)
dp[i] = max(dp[i], dp[i-2] + v);
}
if(abs(s[i] - s[i+1]) <= 1){
int v = s[i] + s[i + 1] - 'a' - 'a' + 2;
dp[i+1] = max(dp[i + 1], dp[i - 1] + v);
} else {
dp[i] = max(dp[i], dp[i-1]);
}
}
cout << dp[n-1] << endl;
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
freopen("C:\\Users\\Ambition\\Desktop\\in1.txt","r",stdin);
int n;
cin >> n;
for(int i = 1; i <= n; i++){
if(i % 2 == 0) cout << i << " ";
}
for(int i = 1; i <= n; i++){
if(i % 2 == 1) cout << i << " ";
}
return 0;
}
我完全没有考虑向左走,但是不知道为什么还是ac了。不知道有没有大佬可以解释一下
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int INF = 0x3f3f3f3f;
void print(vector<vector<int>>& ma){
for(auto & row : ma){
for(auto &e : row){
cout << e << "\t";
}
cout << "\n";
}
}
int main() {
freopen("C:\\Users\\Ambition\\Desktop\\in4.txt","r",stdin);
int n, m, ans = INT_MAX;
cin >> n >> m;
vector<vector<int>> ma(n, vector<int>(m, 0));
for(auto & row : ma){
for(auto &e : row){
cin >> e;
}
}
vector<vector<int>> dp(n, vector<int>(m, INF));
dp[0][0] = 0;
for(int i = 1; i < n; i++){
dp[i][0] = dp[i-1][0] + 1;
if(ma[i][0] != ma[i-1][0]){
dp[i][0]++;
}
}
for(int j = 1; j < m; j++){
dp[0][j] = dp[0][j - 1] + 1;
if(ma[0][j] != ma[0][j-1]){
dp[0][j]++;
}
}
//print(dp);
for(int i = 1; i < n; i++){
for(int j = 1; j < m; j++){
if(ma[i][j] == ma[i-1][j]){
dp[i][j] = min(dp[i][j], dp[i-1][j] + 1);
} else {
dp[i][j] = min(dp[i][j], dp[i-1][j] + 2);
}
if(ma[i][j] == ma[i][j - 1]){
dp[i][j] = min(dp[i][j], dp[i][j - 1] + 1);
} else {
dp[i][j] = min(dp[i][j], dp[i][j - 1] + 2);
}
}
}
print(dp);
cout << dp[n-1][m-1] << endl;
return 0;
}