```cpp
#include<cstdio>
#include<iostream>
#include<fstream>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
#define Set(a) memset(a,0,sizeof(a))
#define F(i,a,b) for(register int i=a,i##end=b;i<=i##end;++i)
#define UF(i,a,b) for(register int i=a,i##end=b;i>=i##end;--i)
#define openf(a) freopen(#a".in","r",stdin);freopen(#a".out","w",stdout)
#define re register
#define ri re int
#define il inline
typedef long long ll;
typedef unsigned long long ull;
template<typename T> inline T rd(T& x)
{
T f=1;x=0;char c=getchar();
for(;!isdigit(c);c=getchar()) if(c=='-') f=-1;
for(; isdigit(c);c=getchar()) x=(x<<3)+(x<<1)+(T)(c-'0');
x*=f;
return x;
}
ll rd(){ll x;rd(x);return x;}
inline int max(int a,int b){return a>b?a:b;}
inline int min(int a,int b){return a<b?a:b;}
const int inf=1<<30;
struct frac
{
public:
ll x,y;//x/y
private:
ll gcd(ll x,ll y){return y==0?x:gcd(y,x%y);}
void yf(){if(y<0)x=-x,y=-y;ll a=gcd(abs(x),y);x/=a,y/=a;}
public:
frac(ll x=0,ll y=1):x(x),y(y){yf();}
double todb(){return (double)x/(double)y;}
frac operator=(frac b){x=b.x,y=b.y;return *this;}
};
frac operator+(frac a,frac b){return frac(a.x*b.y+a.y*b.x,a.y*b.y);}
frac operator-(frac a){return frac(-a.x,a.y);}
frac operator-(frac a,frac b){return a+(-b);}
frac operator*(frac a,frac b){return frac(a.x*b.x,a.y*b.y);}
frac operator/(frac a,frac b){return frac(a.x*b.y,a.y*b.x);}
frac operator+=(frac& a,frac b){return a=a+b;}
frac operator-=(frac& a,frac b){return a=a-b;}
frac operator*=(frac& a,frac b){return a=a*b;}
frac operator/=(frac& a,frac b){return a=a/b;}
bool operator>(frac a,frac b){return a.x*b.y>b.x*a.y;}
bool operator<(frac a,frac b){return b>a;}
bool operator>=(frac a,frac b){return !(b>a);}
bool operator<=(frac a,frac b){return !(a>b);}
bool operator==(frac a,frac b){return !(a<b)&&!(b<a);}
bool operator!=(frac a,frac b){return (a<b)||(b<a);}
const int N=1000;
frac dp[N][N],sum[N];int from[N][N],n,k;
int main()
{
cin>>n>>k;sum[0]=0;
F(i,1,k) dp[i][i]=sum[i]=sum[i-1]+frac(1,i),from[i][i]=i-1;
F(i,1,n) dp[1][i]=1;
F(i,2,k) F(j,i+1,n) F(m,i-1,j-1)
if(dp[i-1][m]+frac(j-m,j)>dp[i][j]) dp[i][j]=dp[i-1][m]+frac(j-m,j),from[i][j]=m;
F(i,1,k){F(j,1,n) printf("%lld/%lld ",dp[i][j].x,dp[i][j].y);cout<<endl;}
return 0;
}
```
by WYXkk @ 2019-10-25 22:18:33
只要你有耐心打表,任何题都可以
by Andysun06 @ 2019-10-25 22:23:34
@[Andysun06](/space/show?uid=70299) 但我已经打完表但找不出规律
by WYXkk @ 2019-10-25 22:24:21
@[WYXkk](/space/show?uid=130151) 只要你有耐心找规律,任何题都可以找到(逃
by Andysun06 @ 2019-10-25 22:26:39
@[Andysun06](/space/show?uid=70299) 那您帮我找找,我generator都给你了(
by WYXkk @ 2019-10-25 22:27:31
这题不算是黑题吧?感觉也不是很难
by Andysun06 @ 2019-10-25 22:34:25
虽然我也不会
by Andysun06 @ 2019-10-25 22:35:57
@[Andysun06](/space/show?uid=70299) ~~我可否问一下如何做到入坑两年只刷红橙的~~
盲猜小号
by He_Ren @ 2019-10-25 22:50:17
@[He_Ren](/space/show?uid=73687) 要有耐心
by Andysun06 @ 2019-10-25 23:19:16
@[He_Ren](/space/show?uid=73687) 打好基础才能往下学
by Andysun06 @ 2019-10-25 23:19:38