~~Id 好评(~~
by ✨杨柳白皮✨ @ 2020-08-30 18:51:19
~~Id 好评(~~
by myee @ 2020-08-30 18:52:30
@[恋爱王子](/user/338992) || $\text{if}$ 判断是多余的。
```cpp
#include<bits/stdc++.h>
using namespace std;
template<class code>inline code read(const code &a){
code x=0;short w=0;char ch=0;
while(!isdigit(ch)){w|=ch=='-';ch=getchar();}
while(isdigit(ch)){x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
return w?-x:x;
}
void pr(register int x){
if(x<0){putchar('-');x=-x;}
if(x>=10)pr(x/10);
putchar(x%10+48);
}
int x,y,k,m,ans=214747;
bool f[105][105][105];
inline void dfs(register int now,register int a,register int b){
if(now>k){ans=min(ans,abs(a+b-m));return;}
if(f[a][b][now]==1)return;//{ans=min(ans,abs(a+b-m));return;}
f[a][b][now]=1;
dfs(now+1,x,b);
dfs(now+1,a,y);
dfs(now+1,0,b);
dfs(now+1,a,0);
if(y-b>a)dfs(now+1,0,b+a);
else dfs(now+1,a-(y-b),y);
if(x-a>b)dfs(now+1,a+b,0);
else dfs(now+1,x,b-(x-a));
}
int main(){
x=read(x),y=read(y),k=read(k),m=read(m);
dfs(1,0,0);
printf("%d",ans);
return 0;
}
```
by JK_LOVER @ 2020-08-30 18:58:00
~~id好评~~
by JK_LOVER @ 2020-08-30 18:58:17
@[JK_LOVER](/user/227824) 但现在80了
```
#include <cstdio>
#include <cctype>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <map>
#include <queue>
#include <stack>
#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4.1,sse4.2,avx,avx2,popcnt,tune=native")
#pragma GCC optimize(2)
#include <immintrin.h>
#include <emmintrin.h>
using namespace std;
template<class code>inline code read(const code &a){
code x=0;short w=0;char ch=0;
while(!isdigit(ch)){w|=ch=='-';ch=getchar();}
while(isdigit(ch)){x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
return w?-x:x;
}
void pr(register int x){
if(x<0){putchar('-');x=-x;}
if(x>=10)pr(x/10);
putchar(x%10+48);
}
int x,y,k,m,ans=214747;
//bool f[105][105][105];
bool f[105][105];
inline void dfs(register int now,register int a,register int b){
if(now>k)return;
ans=min(ans,abs(a+b-m));
if(f[a][b]==1)return;
//if(f[a][b][now]==1)return;
//f[a][b][now]=1;
f[a][b]=1;
dfs(now+1,x,b);
dfs(now+1,a,y);
dfs(now+1,0,b);
dfs(now+1,a,0);
if(y-b>=a)dfs(now+1,0,b+a);
else dfs(now+1,a-(y-b),y);
if(x-a>=b)dfs(now+1,a+b,0);
else dfs(now+1,x,b-(x-a));
}
int main(){
x=read(x),y=read(y),k=read(k),m=read(m);
dfs(1,0,0);
printf("%d",ans);
return 0;
}
```
by 恋爱王子 @ 2020-08-30 18:59:37
@[JK_LOVER](/user/227824) 哦,不用了,谢谢您
by 恋爱王子 @ 2020-08-30 19:00:45
@[恋爱王子](/user/338992) 我发的代码可过,要不再看看?
by JK_LOVER @ 2020-08-30 19:00:48