题目链接
有趣的构造题,就是要构造一个矩阵,使得dp出来的结果为0,实际最大值为k,也就是终点的值为k但是终点左边和上边的点dp结果为一个比k大的数且为2n次方,这样最终dp出来的结果就是0,由于k<=100000我们取这个数字为217;直接上代码8.
#include<bits/stdc++.h>
#define ll long long
#define inf 0x3f3f3f3f
using namespace std;
int n,t;
int k;
int main()
{
int tmp=1<<17;
cin>>k;
cout<<3<<" "<<2<<endl;
cout<<tmp+k<<" "<<k<<endl;
cout<<tmp<<" "<<k+tmp<<endl;
cout<<tmp<<" "<<k<<endl;
}
本文探讨了一种构造矩阵的方法,使动态规划(dp)计算出的结果为0,而实际最大值为预设值k。通过设定矩阵特定位置的值,确保终点左边和上边的点dp结果为比k大的2的n次方数,从而巧妙地解决了一类构造题。代码示例展示了如何实现这一构造。
2479

被折叠的 条评论
为什么被折叠?



