求助各位大佬
查看原帖
求助各位大佬
338992
恋爱王子楼主2020/8/30 18:48

WAWA

#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];
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(a<b){
		if(y-b>a)dfs(now+1,0,b+a);
		else dfs(now+1,a-(y-b),y);
	}
	else{
		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;
}

#2

99 100 100 171

3

my answer 28

2020/8/30 18:48
加载中...