HDU 5800 To My Girlfriend(DP)

重带电粒子的能量歧离(energy straggling) 能量歧离,Bethe-Bloch 阅读详情

题意:给定n和s,求f(i,j,k,l,m)表示下标i和j的数必选,k和l不选且选出数的和为s的选法方案数。


思路:dp[i][j][k][l],表示前i个物品,权值和为j,已有k个必选,l个必不选的方案数。

转移:枚举i

1.选,增加权值,增加必选个数。
2.选,增加权值,不增加必选个数。
3.不选,不增加权值,增加不必选个数。
4.不选,不增加权值,不增加必选个数。


代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 1e3+5;
const int mod = 1e9+7;
int dp[maxn][maxn][3][3];
int a[maxn];

int main(void)
{
    int _, n, s;
    cin >> _;
    while(_--)
    {
        memset(dp, 0, sizeof(dp));
        scanf("%d%d", &n, &s);
        for(int i = 1; i <= n; i++)
            scanf("%d", &a[i]);
        dp[1][a[1]][0][0] = 1;
        dp[1][a[1]][1][0] = 1;
        dp[1][0][0][0] = 1;
        dp[1][0][0][1] = 1;
        for(int i = 2; i <= n; i++)
        {
            for(int j = 0; j <= s; j++)
            {
                int tmp = j+a[i];
                //选
                if(tmp <= s)
                {
                    for(int k = 0; k <= 2; k++)
                    {
                        dp[i][tmp][0][k] = (dp[i][tmp][0][k]+dp[i-1][j][0][k])%mod;
                        dp[i][tmp][1][k] = (dp[i][tmp][1][k]+dp[i-1][j][0][k])%mod;
                        dp[i][tmp][1][k] = (dp[i][tmp][1][k]+dp[i-1][j][1][k])%mod;
                        dp[i][tmp][2][k] = (dp[i][tmp][2][k]+dp[i-1][j][1][k])%mod;
                        dp[i][tmp][2][k] = (dp[i][tmp][2][k]+dp[i-1][j][2][k])%mod;
                    }
                }
                //不选
                for(int k = 0; k <= 2; k++)
                {
                    dp[i][j][k][0] = (dp[i][j][k][0]+dp[i-1][j][k][0])%mod;
                    dp[i][j][k][1] = (dp[i][j][k][1]+dp[i-1][j][k][0])%mod;
                    dp[i][j][k][1] = (dp[i][j][k][1]+dp[i-1][j][k][1])%mod;
                    dp[i][j][k][2] = (dp[i][j][k][2]+dp[i-1][j][k][1])%mod;
                    dp[i][j][k][2] = (dp[i][j][k][2]+dp[i-1][j][k][2])%mod;
                }
            }
        }
        ll ans = 0;
        for(int i = 1; i <= s; i++)
            ans = (ans+dp[n][i][2][2])%mod;
        printf("%lld\n", ans*4%mod);
    }
    return 0;
}


leetcode134 加油站 题目如下 在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。 如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。 说明: 如果题目有解,该答案即为唯一答案。 输入数组均为非空数组,且长度相同。 输... 阅读详情

相关推荐

VS Code配置MinGW64编译非线性优化库NLopt

VS Code用MinGW64编译C++代码安装MSYS2软件并配置非线性优化库NLopt和测试引用库代码的完整具体步骤。:若使用非UCRT版本(如传统MinGW64),替换所有路径中的。库文件会自动安装到MSYS2的。

weixin_30777913的博客 902

HDU 5800 To My Girlfriend 【DP】

题意 有n个物品,每个物品的重量是ai,求以下式子: ∑ni=i∑nj=1∑nk=1∑nl=1∑sm=1f(i,j,k,l,m)(i≠j≠k≠l) 其中f(i,jk,l,m)表示在所有物品中必选i和j,且必不选k和l,重量总和为m的选法总数。 分析 设状态dp[i][j][x][y]为选到第i个数时,总重量为j,必选了x个和必不选y个的选法总数。则在这个...

babao9492的博客 163

生信人的一天~HIFI数据+HIC数据组装基因组

HIFI+HIC数据组装基因组!

qq_43337286的博客 9530

HDU5800 To My Girlfriend(DP)

题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5800 Description Dear Guo I never forget the moment I met with you.You carefully asked me: "I have a very difficult problem. Can you teach...

dengliugong3918的博客 150

防火墙学习5---虚拟系统和跟系统通过路由表互访

虚拟系统与跟系统互访可分为虚拟系统访问根系统和跟系统访问虚拟系统。

weixin_48030849的博客 1032

域自适应的理解与想法(Domain Adaptation)

这幅图是域适应非常有名的一篇论文中的插图,被很多文章转载。 什么是领域自适应? Domain Adaptation是迁移学习中很重要的一部分内容,目的是把分布不同的源域和目标域的数据,映射到一个特征空间中,使其在该空间中的距离尽可能近。于是在特征空间中对source domain训练的目标函数,就可以迁移到target domain上,提高target domain上的准确率。 上面的图主要的思想来源于GAN,上图由三部分组成:特征映射网络 标签分类网络和和域判别网络 其中,source domain的数.

yuanxue18的博客 5982

To My Girlfriend HDU - 5800 dp

那个式子可以想成有两个物品必拿,有两个物品必不拿,最后体积小于等于m的方案数 也是同样想到了n^3的dp,必然会T,走进死沟,看了题解,才想到... 不要考虑太多,对每个物品,有四种拿的状态,拿,必定拿,不拿,必定不拿 这样就裸的转移就可以了 #include using namespace std; int a[1005]; long long dp[2][1005]

jerans的博客 285

四旋翼黑科技揭秘:如何利用PX4隐藏的角加速度数据提升控制性能

本文深入探讨了如何利用PX4飞控中隐藏的角加速度数据,结合增量非线性动态逆(INDI)控制方法,显著提升四旋翼无人机的控制性能。通过实战教程,指导开发者从数据订阅、INDI原理到代码实现,构建响应更快、鲁棒性更强的控制回路,有效应对突风与快速机动。

lake5的博客 721

hdu 5800 To My Girlfriend + dp

传送门:hdu 5800 To My Girlfriend 题意:给定n个物品,其中i,j必选,l,m必不选,问组成体积为s的方法一共有多少种 思路:定义dp[i][j][s1][s2],表示前i种物品能够构成的体积为j,其中有s1种定为必选,s2种定为不必选;因为递推到第i层时,只与第i-1层有关,所以把第一维降到2来省内存。然后就是dp[i][j][s1][s2]=dp[i-1][j][s...

weixin_30251587的博客 124

广工计组实验f2一位全加器

一位全加器实验

weixin_63692154的博客 2847

OmniBox2.0.X版本 一站式影视订阅与多端播放平台文档

OmniBox 是一站式影视订阅与多端播放平台:你可以用 JS 或 Python 按 OmniBox 规范自建爬虫源,在后台把多个爬虫源自由组合成订阅,然后在网页、手机、电视等全平台的客户端里使用。只要客户端支持 TVBox、猫源、UZ、Emby 等协议,即可无缝对接。同时支持电视直播源、六大平台直播间和网盘源视频在线观看,通过 Docker 一键部署。

欢迎来到鸾姝淡月博客,专为程序员和编程爱好者打造的技术博客。我们分享编程语言趋势、开发工具、编程哲学、职业发展等,助你掌握新技术,优化技能,激发编程热情。 1928

hdu5800 To My Girlfriend(dp)

hdu5800题目给定n个数,其中选定若干数,这若干数的权值和为m,且这些数中没有下标为i,j的数,有下标为k,l的数的集合个数。思路dp[i][j][s1][s2],代表的是前i个物品,总权值为j,已有s1个必选,s2必不选的方案数。有四种转移方式,记得最后*4。代码#include <iostream> #include <cstdio> #include <cstdlib> #include

天道酬勤 329

DPI — 业务识别技术

目录 文章目录目录DPI 的业务识别技术类型特征识别Protocol 特征Payload 特征关联识别行为识别 DPI 的业务识别技术类型 DPI 的关键技术是能够高效的识别出网络上的各种应用类型。 浅报文检测是通过端口号来识别应用类型的。如:检测到端口号为 80 时,则认为是 HTTP 协议。但实际上,为了应用的安全性考虑通常不会使用默认端口来暴露业务能力。此时采用 L2 ~ L4 层的传统检测方法已无能为力了。 而 DPI 技术与我们熟知的防病毒软件在某些方面比较类似,即:其能识别的应用类型必须是系统已

烟云的计算 3518

HDU 5800 To My Girlfriend(计数DP)

[题目链接][题意] 有n个物品,每个物品的价值为aia_i,设f(i,j,k,l,m)f(i,j,k,l,m)表示从n个物品中取若干个,满足第i,j个物品必取,第k,l个物品必不取,价值总和为m的方案数,求 ∑i=1n∑j=1n∑k=1n∑l=1n∑m=1sf(i,j,k,l,m)(i,j,k,l各不相同) \sum_{i=1}^n\sum_{j=1}^n\sum_{k=1}^n\sum_{l

MikeZHW的博客 596

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

HDU 5800 - To My Girlfriend-四维DP

求前n个数里,子集和为0到S,必选2个必不选两个的方案数 dp[i][j][s1][s2] 表示前i个数选的子集和为j,并且 s1个必选,s2个必不选 转移比较简单,要滚动数组 因i,j,k,l可以互换,所以答案*4 #include #include #include #include #include #include #include #incl

缺氧 463

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

[HDU 5800] To My Girlfriend (计数DP)

HDU - 5800 有 nn个物品,f(i,j,k,l,m)f(i,j,k,l,m)为选定 ii,jj,不选 kk,ll, 总权值为 m的方案数 求 ∑i=1n∑j=1n∑k=1n∑l=1n∑m=1sf(i,j,k,m)\displaystyle\sum_{i=1}^{n}\sum_{j=1}^{n}\sum_{k=1}^{n}\sum_{l=1}^{n}\sum_{m=1}^{s

MisDeer's blog 431

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

HDU 5800 To My Girlfriend(单调DP)

【题目链接】http://acm.hdu.edu.cn/showproblem.php?pid=5800 【题目大意】   给出一个容量上限s,f[i][j][k][l][m]表示k和l两个物品不能选,i和j两个物品必选,最终质量为m的方案数。求这些方案数的总和。 【题解】   令dp[i][j][s1][s2]表示前i个物品填了j的体积,有s1个物品选为为必选,s2个...

weixin_30532987的博客 92

HDU 5800 To My Girlfriend DP

Problem Description Dear Guo I never forget the moment I met with you.You carefully asked me: "I have a very difficult problem. Can you teach me?".I replied with a smile, "of course"."I have n items, ...

weixin_30306905的博客 134

hdu5800To My Girlfriend+DP

Problem Description Dear GuoI never forget the moment I met with you.You carefully asked me: “I have a very difficult problem. Can you teach me?”.I replied with a smile, “of course”.”I have n items, t

xtulollipop 517

hdu5800 To My Girlfriend(DP)

思路:令dp[i][j][s1][s2]为前i个物品选了j体积,选了s1个必选,s2个一定不选的方案数,然后就转移好了,其实就相当于一个普通的背包然后多加两维,很多想不懂怎么弄状态的其实都可以通过多加维数来确定,自己太菜比赛时候硬是推不出来.... #include using namespace std; #define LL long long const int maxn = 10

围巾的ACM博客 562

HDU 5800 To My Girlfriend(dp)

∑ni=1∑nj=1∑nk=1∑nl=1∑sm=1f(i,j,k,l,m)(i,j,k,laredifferent)\sum_{i=1}^{n}\sum_{j=1}^{n}\sum_{k=1}^{n}\sum_{l=1}^{n}\sum_{m=1}^{s}f(i,j,k,l,m)\quad (i,j,k,l\quad are\quad different) 意思是让你找集合的数量,使得集合里有两个

Miracle_ma的专栏 515

HDU5800 To my girlfriend(DP)

补一补老早老早以前的坑。。。 【题目描述】 有 n 个物品,第 i 个物品的重量为 ai 。设 f(i,j,k,l,m) 为满足以下约束的物品集合数量: 集合中所有物品的重量和恰好为 m 。 集合包含物品 i 和物品 j 。 集合不包含物品 k 和物品 l 。 给出一个正整数 s ,求: 答案对1e9+7取模。 【输入格式】 第一行,两个正整数 n,s 。 第二行,n 个正...

Michael_GLF的博客 190

HDU-5800-To My Girlfriend-DP

题意:f(i,j,k,l,m)表示必选a[i],a[j]必不选a[k],a[l],加起来总和为m的个数。求1 思路:显然是一个DP 设dp[i][j][s1][s2] 为选前i个数字,总和为j,确定必选的s1个,确定必不选的s2个,的个数 显然dp[i][j][s1][s2]=dp[i-1][j][s1][s2]+dp[i-1][j][s1][s2-1]+dp[i-1][j-a[i]][s1

lyc1635566ty的博客 338

HDU5800 To My Girlfriend 背包计数dp

分析:首先定义状态dp[i][j][s1][s2]代表前i个物品中,选若干个物品,总价值为j 其中s1个物品时必选,s2物品必不选的方案数 那么转移的时候可以考虑,第i个物品是可选可可不选的 dp[i][j][s1][s2]+=dp[i-1][j][s1][s2]+dp[i-1][j-a[i]][s1][s2] 或者...

weixin_30455365的博客 115
上一篇: HDU 5442 Favorite Donut (最大表示法+KMP || 后缀数组)
下一篇: codevs 1069 关押罪犯 (并查集)
cillyb
博客等级 码龄11年 225粉丝 497原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值