这套题为嘛这么多dp!!!把我杀了吧
虽然有的dp比较简单吧 虽然有某个题可以用其他做法躲避dp吧
但是我dp巨菜的事实又暴露了呀!
跑步训练
简单的模拟题,跟着题目来就好
还是带上代码吧
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
typedef long long LL;
#define PI acos(-1)
#define INF 2147483647
#define eps 1e-7
#define L 100005
#define Fo(i,a,b) for(LL i=(a); i<=(b); i++)
#define Ro(i,b,a) for(LL i=(b); i>=(a); i--)
#define Ms(a,b) memset((a),(b),sizeof(a))
#define _ceil(_,__) (_+(__-1))/__
#define debug(_) cout<
#define type(_) typeid(_).name()
inline LL read() {
LL x = 0, f = 1;char c = getchar();
while (!isdigit(c)) {
if (c == '-')f = -f;c = getchar(); }
while (isdigit(c)) x = (x << 1) + (x << 3) + (c ^ 48ll), c = getchar();
return x * f;
}
LL x = 10000 , m , flag;
int main() {
//freopen("data.txt","r",stdin);
flag = 1;
while(1) {
if(x==0) {
cout<<m;
return 0;
}
if(flag==1) {
if(x<600) {
m+=x/10;
flag=2;
x = 0;
continue;
} else {
m+=60;
flag=2;
x-=600;
continue;
}
} else {
x+=300;
m+=60;
flag=1;
}
}
return 0;
}
合并检测
数学题
题解传送门
分配口罩
不用dp 直接深搜就可
代码如下
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
typedef long long LL;
#define PI acos(-1)
#define INF 2147483647
#define eps 1e-7
#define L 100005
#define Fo(i,a,b) for(LL i=(a); i<=(b); i++)
#define Ro(i,b,a) for(LL i=(b); i>=(a); i--)
#define Ms(a,b) memset((a),(b),sizeof(a))
#define _ceil(_,__) (_+(__-1))/__
#define debug(_) cout<
#define type(_) typeid(_).name()
inline LL read() {
LL x = 0, f = 1;char c = getchar();
while (!isdigit(c)) {
if (c == '-')f = -f;c = getchar(); }
while (isdigit(c)) x = (x << 1) + (x << 3) + (c ^ 48ll), c = getchar();
return x * f;
}
int ans = INF , num[16]={
0, 9090400, 8499400, 5926800, 8547000, 4958200,
4422600, 5751200, 4175600, 6309600, 5865200, 6604400, 4635000,
10663400, 8087200, 4554000};
void dfs(int x , int d1 , int d2) {
if(x>15) {
ans = min(ans , abs(d1-d2));
return ;
}
dfs(x+1,d1+num[x],d2);
dfs(x+1,d1,d2+num[x]);
}
int main() {
// freopen("data.txt","r",stdin);
dfs(0,0,0);
cout<<ans;
return 0;
}
矩阵
好像是个dp题 / 卡特兰数(数论题)
反正是一个不会的题
卡特兰数题解
dp题解
完美平方数
这题实在是暴力不出来啊啊啊啊
解码
字符串模拟水题
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
typedef long long LL;
#define PI acos(-1)
#define INF 2147483647
#define eps 1e-7
#define L 100005
#define Fo(i,a,b) for(LL i=(a); i<=(b); i++)
#define Ro(i,b,a) for(LL i=(b); i>=(a); i--)
#define Ms(a,b) memset((a),(b),sizeof(a))
#define _ceil(_,__) (_+(__-1))/__
#define debug(_) cout<
#define type(_) typeid(_).name()
inline LL read() {
LL x = 0, f = 1;char c = getchar();
while (!isdigit(c)) {
if (c == '-')f = -f;c = getchar(); }
while (isdigit(c)) x = (x << 1) + (x << 3) + (c ^ 48ll), c = getchar();
return x * f;
}
LL len;
string s;
int main() {
// freopen("data.txt","r",stdin);
cin>>s;
len = s.length();
Fo(i,0,len-1) {
if(s[i+1]>='1'&&s[i+1]<='9') {
Fo(j,1,s[i+1]-'0')
cout<<s[i];
i++;
continue;
}
cout<<s[i];
}
return 0;
}
走方格
第一遍写的bfs 发现会T 后来看正解:dp!!!(杀了我吧
bfs代码(写的时候不要写vis数组 要不然答案不对哦)
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
typedef long long LL;
#define PI acos(-1)
#define INF 2147483647
#define eps 1e-7
#define L 100005
#define Fo(i,a,b) for(LL i=(a); i<=(b); i++)
#define Ro(i,b,a) for(LL i=(b); i>=(a); i--)
#define Ms(a,b) memset((a),(b),sizeof(a))
#define _ceil(_,__) (_+(__-1))/__
#define debug(_) cout<
#define type(_) typeid(_).name()
inline LL read() {
LL x = 0, f = 1;char c = getchar();
while (!isdigit(c)) {
if (c == '-')f = -f;c = getchar(); }
while (isdigit(c)) x = (x << 1) + (x << 3) + (c ^ 48ll), c = getchar();
return x * f;
}
struct Node {
int x , y;
};
queue<Node>q;
LL n , m , dx[2]={
1,0} , dy[2]={
0,1} , ans;
void bfs(int sx , int sy) {
q.push({
sx,sy});
while(!q.empty()) {
Node u = q.front();
q.pop();
if(u.x==n&&u.y==m) {
ans++;
continue;
}
Fo(i,0,1) {
int tx , ty;
tx = u.x+dx[i];
ty = u.y+dy[i];
if(tx<=0||tx>n||ty<=0||ty>m||(tx%2==0&&ty%2==0))
continue;
q.push({
tx,ty});
}
}
}
int main() {
// freopen("data.txt","r",stdin);
scanf("%lld%lld",&n,&m);
if(n%2==0&&m%2==0) {
printf("0");
return 0;
}
bfs(1 , 1);
printf("%lld",ans);
return 0;
}
简单dp
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
typedef long long LL;
#define PI acos(-1)
#define INF 2147483647
#define eps 1e-7
#define L 100005
#define Fo(i,a,b) for(LL i=(a); i<=(b); i++)
#define Ro(i,b,a) for(LL i=(b); i>=(a); i--)
#define Ms(a,b) memset((a),(b),sizeof(a))
#define _ceil(_,__) (_+(__-1))/__
#define debug(_) cout<
#define type(_) typeid(_).name()
inline LL read() {
LL x = 0, f = 1;char c = getchar();
while (!isdigit(c)) {
if (c == '-')f = -f;c = getchar(); }
while (isdigit(c)) x = (x << 1) + (x << 3) + (c ^ 48ll), c = getchar();
return x * f;
}
LL n , m , f[35][35];
int main() {
// freopen("data.txt","r",stdin);
scanf("%lld%lld",&n,&m);
if(n%2==0&&m%2==0)
printf("0");
else {
f[1][1] = 1;
Fo(i,1,n)
Fo(j,1,m) {
if(i==1&&j==1) continue;
if(i%2==1||j%2==1)
f[i][j] = f[i-1][j] + f[i][j-1];
}
printf("%lld",f[n][m]);
}
return 0;
}
整数小拼接
真的不会 待更
一篇看不懂的题解
超级胶水
类似于……石子合并吧 感觉是个区间dp(反正我不会
网络分析
带权并查集
忘记了 还是待更。。。
这套题的确做的不太好
可能心态或者的确好多知识盲点
啊啊啊 要好好复习了呀