dp
kosf_
这个作者很懒,什么都没留下…
展开
-
[LIS]最长上升子序列
题目思路找第二个数组在第一个数组中出现的下标,然后对下标找最长上升子序列代码#include<bits/stdc++.h>using namespace std;#define int long long#define lowbit(x) x&(-x)int n;int a[100010],b[100010],dp[100010],bit[100010];map<int,int> mp;void add(int x,int d){ for(int i原创 2022-04-15 20:21:16 · 378 阅读 · 0 评论 -
【状压dp】icpc网络赛第二场 K-Meal
题目nnn个人,一个人有nnn个菜,依次拿菜,每个菜的喜爱值为aija_{ij}aij,拿走概率为aij∑j=1naij\frac{a_{ij}}{\sum_{j=1}^{n}a_{ij}}∑j=1naijaij,求所有菜被拿走的概率思路状压ans[i][j]ans[i][j]ans[i][j]表示拿了iii种菜,拿到其中jjj类型这个菜的概率f[x]f[x]f[x]表示拿的状态为xxx这种的总概率代码在这里插入代码片#include<cstdio>#include&l原创 2021-10-03 00:29:32 · 219 阅读 · 0 评论 -
cf D Up the Strip
题目添加链接描述代码D1D_1D1 nsqrtnnsqrtnnsqrtn做法:整除分块:using namespace std;const int INF = 0x3f3f3f3f;int dp[200010];signed main(){ ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); int n,m; cin>>n>>m; int pre=0; dp[n]=1; for(int i=n;i>原创 2021-08-25 21:11:20 · 115 阅读 · 0 评论 -
[dp]P2789 直线交点数
题目题目代码#include<cstdio>#include<cstring>#include<cmath>#include<cstdlib>#include<cctype>#include<ctime>#include<iostream>#include<string>#include<map>#include<queue>#include<stack&g原创 2021-08-08 22:26:13 · 175 阅读 · 0 评论 -
【dp】codeforces C. Planar Reflections
题目题目链接思路dp[i][j]dp[i][j]dp[i][j]表示层数为iii衰变年龄为jjj的答案数转移方程式为:dp[i][j]=d[i−1][j]+dp[n−i][j−1]dp[i][j]=d[i-1][j]+dp[n-i][j-1]dp[i][j]=d[i−1][j]+dp[n−i][j−1]dp[i][j]dp[i][j]dp[i][j]的答案数可以由在穿过这层后,还剩i−1i-1i−1层,衰变年龄为jjj的答案数和往回走,还剩n−in-in−i层,衰变年龄为j−1j-1j−1粒子答原创 2021-03-30 19:05:12 · 155 阅读 · 0 评论 -
[状压dp] poweroj 2911: 送外卖的小鸽鸽Mannix
题目题目链接:https://www.oj.swust.edu.cn/problem/show/2911一个人要从0开始给k个地方送外卖最后回到起始点 求怎么送路程最短思路先处理图,把每个点之间的距离都用dij跑出来存下。最后用状压dp,dp[i][j]dp[i][j]dp[i][j]表示用状态iii到达jjj的最小路径代码#include<cstdio>#include<cstring>#include<cmath>#include<cstdl原创 2020-10-29 15:32:40 · 141 阅读 · 0 评论 -
[唯一分解+分组dp] 2020ccpc威海 L
题目一个钟表有n个指针,每一个指针有t个刻度每个刻度。所有制真的刻度不能超过d,求所有指针合起来的不同方向最多有多少种。思路每个指针的不同方向种类即他们的lcmlcmlcm题意转换为:求MAX(lcm(t1,t2,t3,t4,...,tn))MAX(lcm(t_1,t_2,t_3,t_4,...,t_n))MAX(lcm(t1,t2,t3,t4,...,tn))t1+t2+t3+t4+...+tn<=bt_1+t_2+t_3+t_4+...+t_n<=bt1+t2+t3原创 2020-10-29 14:15:52 · 175 阅读 · 0 评论 -
[dp] cf 1437C. Chef Monocarp
题目http://codeforces.com/contest/1437/problem/C思路dp[i][j]dp[i][j]dp[i][j]表示第iii分钟前拿了jjj个盘子的最小代价递推式:dp[i][j]=min(dp[i−1][j],dp[i−1][j−1]+abs(a[j]−i))dp[i][j]=min(dp[i-1][j],dp[i-1][j-1]+abs(a[j]-i))dp[i][j]=min(dp[i−1][j],dp[i−1][j−1]+abs(a[j]−i))代码#in原创 2020-10-28 23:55:44 · 165 阅读 · 0 评论