POJ 3046 Ant Counting(dp----多重集组合数)

在安卓手机Termux中安装完整Ubuntu Linux环境:从配置到实战 Linux容器技术通过在用户空间模拟完整的操作系统环境,实现了资源隔离与便携部署。其核心原理基于PRoot等工具,利用系统调用拦截和路径重定向,在非特权环境下构建独立的根文件系统。这项技术的价值在于为移动设备和资源受限场景提供了轻量级的Linux体验,极大降低了学习与实验的门槛。在应用场景上,它广泛适用于编程学习、服务部署、运维练习以及旧设备再利用。本文聚焦于通过Termux和proot-distro工具,在安卓手机上安装完整的Ubuntu发行版,并配置开发环境,解决息屏断连等常见问题,实现旧手机的‘第二春 阅读详情
题目链接:http://poj.org/problem?id=3046

Ant Counting
Time Limit: 1000MS
Memory Limit: 65536K
Total Submissions: 4763
Accepted: 1816

Description

Bessie was poking around the ant hill one day watching the ants march to and fro while gathering food. She realized that many of the ants were siblings, indistinguishable from one another. She also realized the sometimes only one ant would go for food, sometimes a few, and sometimes all of them. This made for a large number of different sets of ants!

Being a bit mathematical, Bessie started wondering. Bessie noted that the hive has T (1 <= T <= 1,000) families of ants which she labeled 1..T (A ants altogether). Each family had some number Ni (1 <= Ni <= 100) of ants.

How many groups of sizes S, S+1, ..., B (1 <= S <= B <= A) can be formed?

While observing one group, the set of three ant families was seen as {1, 1, 2, 2, 3}, though rarely in that order. The possible sets of marching ants were:

3 sets with 1 ant: {1} {2} {3}
5 sets with 2 ants: {1,1} {1,2} {1,3} {2,2} {2,3}
5 sets with 3 ants: {1,1,2} {1,1,3} {1,2,2} {1,2,3} {2,2,3}
3 sets with 4 ants: {1,2,2,3} {1,1,2,2} {1,1,2,3}
1 set with 5 ants: {1,1,2,2,3}

Your job is to count the number of possible sets of ants given the data above.

Input

* Line 1: 4 space-separated integers: T, A, S, and B

* Lines 2..A+1: Each line contains a single integer that is an ant type present in the hive

Output

* Line 1: The number of sets of size S..B (inclusive) that can be created. A set like {1,2} is the same as the set {2,1} and should not be double-counted. Print only the LAST SIX DIGITS of this number, with no leading zeroes or spaces.

Sample Input

3 5 2 3
1
2
2
1
3

Sample Output

10

Hint

INPUT DETAILS:

Three types of ants (1..3); 5 ants altogether. How many sets of size 2 or size 3 can be made?


OUTPUT DETAILS:

5 sets of ants with two members; 5 more sets of ants with three members


题意:有n中蚂蚁,第i种蚂蚁有N_i个,一共有A个蚂蚁。不同类别的蚂蚁可以相互区分,但同种类别的蚂蚁不能相互区别。从这些蚂蚁中分别取出S,S+1...B个,一共有多少种取法。(解释不清楚,请看题中的Hint)

两个优化,dp[i+1][j]=sigma(dp[i][j-k])=dp[i+1][j-1]+dp[i][j]-dp[i][j-1-Mi]
另外一个就是开滚动数组减小空间复杂度
具体可以看《挑战程序设计竞赛》P68~69

<span style="font-size:18px;">#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
int a[1010];
int dp[1010][100010];
int t,n,s,b;
int mod=1e6;
int main()
{
    while(~scanf("%d %d %d %d",&t,&n,&s,&b))
    {
        int x;
        memset(a,0,sizeof(a));
        for(int i=0;i<n;i++){
            scanf("%d",&x);
            a[x-1]++;
        }
        for(int i=0;i<=t;i++)//一个都不取的方法只有一种
            dp[i][0]=1;
        for(int i=0;i<t;i++){
            for(int j=1;j<=b;j++){
                if(j-1-a[i]>=0){
                    //在取余的情况下,要避免减法运算的结果出现负数
                    dp[i+1][j]=(dp[i+1][j-1]+dp[i][j]-dp[i][j-1-a[i]]+mod)%mod;
                }
                else
                    dp[i+1][j]=(dp[i+1][j-1]+dp[i][j])%mod;
            }
        }
        int ans=0;
        for(int i=s;i<=b;i++)
            ans=(ans+dp[t][i])%mod;
        printf("%d\n",ans);
    }
    return 0;
}
</span>


【POJ - 3046】Ant Counting(多重集组合数) Ant Counting 直接翻译了 Descriptions 贝西有T种蚂蚁共A只,每种蚂蚁有Ni只,同种蚂蚁不能区分,不同种蚂蚁可以区分,记Sum_i为i只蚂蚁构成不同的集合的方案数,问Sum_k(S≤k≤B)之和。Input第一行4个整数T、A、S、B。 接下来A行,每行一个整数,代表这只蚂蚁的种类。Output输出Sum_k(S≤k≤B)之和。 (数据范围见原文) Sample Inpu... 阅读详情

相关推荐

NUS-WIDE-10K数据集制作

NUS-WIDE是一个多标签数据集,数据集中一共包含26,9648个样本,可以分为81个类。最近在做跨模态检索项目,发现有很多论文里面都用到了NUS-WIDE-10K数据集,但是在网上也没有搜索到相关的数据集下载链接或者是数据集制作代码,所以自己动手写了一个NUS-WIDE-10K数据集的制作代码。 1.介绍 我在网上找到的最早关于NUS-WIDE-10K数据集描述的论文是:Cross-modal Retrieval with Correspondence Autoencoder。描述如下:作者选择了N

weixin_44012382的博客 4200

POJ_3046_Ant_Counting_(动态规划,多重集组合数)

描述 http://poj.org/problem?id=3046 n种蚂蚁,第i种有ai个,不同种类的蚂蚁可以相互区分,但同一种类的蚂蚁不能相互区分,从这些蚂蚁中取出s,s+1,s+2,...,b-1,b个,问每种取的方式的取法数之和. 原型:多重集组合数: n种物品,第i种有ai个.不同种类的物品可以相互区分,但同一种类的物品不能相互区分.从这些物品中取出m个,有多少种...

aquz77529的博客 167

Petalinux 2021.1 + Vivado 2021 实战:手把手教你为Zynq板卡移植Linux并搞定AXI DMA驱动

本文详细介绍了基于Petalinux 2021.1和Vivado 2021工具链,为Zynq开发板移植Linux系统并开发AXI DMA驱动的全流程。从环境配置、硬件设计到驱动适配与性能优化,提供了实战避坑技巧和版本特异性问题的解决方案,帮助开发者快速构建高速数据传输系统。

weixin_42641741的博客 386

POJ3046 Ant Counting

有T种蚂蚁,编号为1-T。每一种蚂蚁有Ni只蚂蚁。现在从蚂蚁中取出一些只组成大小分别为S....B的集合。问方法总数。 解法:计数Dp中的多重集组合数问题。  模板题。只是统计取出S..B个的方法总数。最后做个相加即可。 但是需要计算数据范围蚂蚁总共有1000*100只。在dp中用到滚动数组作为优化。 #include&lt;cstdio&gt; #include&lt;iostream...

ChenKunn的博客 329

EtherCAT丢包问题深度解析:从原理到实战排查指南

在工业自动化与运动控制领域,实时通讯网络的稳定性是系统可靠运行的基石。EtherCAT(以太网控制自动化技术)作为一种高性能工业以太网协议,其核心在于独特的“飞读飞写”机制和纳秒级的分布时钟同步,以实现多设备间的精准协同。然而,物理链路干扰、配置不当或硬件性能瓶颈都可能导致数据帧丢失,破坏时钟同步,进而引发伺服抖动、定位精度下降乃至生产线停机。本文聚焦于EtherCAT丢包这一典型故障,结合SSC(Slave Stack Code Tool)从站协议栈开发与实时系统调优等工程实践,系统阐述其成因、影响及一套

weixin_32050773的博客 341

雷电模拟器+Auto.js避坑指南:用桥接模式解决PC与模拟器连接超时问题

本文详细解析了雷电模拟器与Auto.js联调中的桥接模式应用,解决PC与模拟器连接超时问题。通过桥接模式配置、高频故障排查及多开环境下的高阶配置,提升开发效率与稳定性,特别适合需要稳定网络连接的Auto.js开发者。

weixin_28836989的博客 632

codeforces 991 E. Bus Number (含重复元素的排列组合+dfs)

题目:http://codeforces.com/contest/991/problem/E 题意:有一串数,每个数都出现cnt[i]次 (为解释题意方便,这部分是需要自己计算一下的),对他进行排列组合,要求原数列中的每个数都需要出现&gt;=1次,但不能超过cnt[i]次,且0不能放在开头,(在符合前面要求的前提下新数列长度是任意的),问这样的组合数。 思路: 1.计算每个数字的cnt[i...

hxc2101的博客 497

从原理图到PCB:基于Allegro的8槽PXIe背板高速设计实战

本文详细介绍了基于Allegro软件进行8槽PXIe背板高速设计的完整实战流程。从理解规范、原理图设计、PCB布局规划,到高速PCIe差分对与精密时钟的布线艺术,再到电源与地处理以及最终的设计验证与生产文件输出,系统性地阐述了确保背板信号完整性、电源完整性和系统稳定性的关键技术与工程实践。

weixin_28312391的博客 203

POJ 3046 Ant Counting(dp—多重集组合数问题)

 Ant Counting Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3753 Accepted: 1475 Description Bessie was poking around the ant h

Chunzhen的博客 1656

基于Xilinx XDMA 的PCIE通信

基于Xilinx XDMA 的PCIE通信 概述:   想实现基于FPGA的PCIe通信,查阅互联网各种转载…基本都是对PCIe的描述,所以想写一下基于XDMA的PCIe通信的实现(PCIe结构仅做简单的描述(笔记),了解详细结构移至互联网)。实践实践!!! 说明: 参考文档: PCI Express Base Specification Revision 3.0 PCI Express Base Specification Revision 5.0 pg195-pcie-dma PCI Express体系

Crazzy_M的博客 1万+

EPLAN 电气制图(六):电机正反转副勾主电路绘制

【插入】→【设备】→选择 “SIE.3RV2011-1AA15”(Q1)和 “SIE.1TL0001-1DB3”(M1),放置于图纸左侧。生成端子排 X3:【端子排导航器】→新建编号 “1-20”,部件 “PXC.3211814”,放置于电机上方,功能文本标注 “电机端子”。属性设置:双击结构盒,在 “显示设备标识符” 中输入位置代号(如 “+ 柜外”),并在 “格式” 选项卡中调整线型与颜色。实用技巧:勾选【选项】→【设置】→【图形的编辑】中的 “绘制带有空白区域的结构盒”,可使元件布局更清晰。

电工 2030

POJ - 3046 Ant Counting dp(多重集组合数)

传送门:POJ3046 题意:有T种数,每种数有Ni个,问能组成不同的且元素个数属于[S,B]范围的集合共多少个。 思路:大白P69例题,dp[i][j]表示从前i种物品中取出j个的组合总数,主要是有一个部分和问题的优化,想不到就会超时。 代码: #include #define ll long long #define pb push_back #define fi first #def

WA是一笔财富 455

【读代码】从claude skills到superpowers项目

最近claude skills成了大热门,今天一起看下GitHub 上的开源技能框架,他将“工作流”封装为“技能” (Skills)。本文尝试剖析该项目的技能粒度定义、多技能关联架构、应用逻辑等。与传统的 Function Calling 不同,Superpowers 中的 Skill 定义粒度并非“原子操作”,而是**“认知模式” (Cognitive Mode) 或“工作阶段”**。

kakaZhui的博客 1918

POJ - 3046 Ant Counting(多重集组合数DP)

Ant Counting Time Limit: 1000MS   Memory Limit: 65536KB   64bit IO Format: %lld & %llu Submit Status Description Bessie was poking around the ant hill one day watching

MR CODER 449

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Ant Counting POJ - 3046【dp-多重集组合数-模板】

题意简述:有t种蚂蚁 ,a个蚂蚁 每个蚂蚁属于一个种类 不同类蚂蚁可以区分 同类蚂蚁不可以区分 求这些蚂蚁组成大小为s s+1…b集合的组合数 多重集组合数模板 n种物品,第i种物品有ai个,不同种类物品可以互相区分但是相同种类无法区分。从这些物品中取出m个,求方案数。 ——方法来源于《挑战程序设计竞赛》P68-69 注意这里的物品种类编号是从0~n-1的 Code Vie...

岂曰无衣,与子同袍 333

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

POJ 3046 Ant Counting ( 多重集组合数 && 经典DP )

题意 :有 n 种蚂蚁,第 i 种蚂蚁有ai个,一共有 A 个蚂蚁。不同类别的蚂蚁可以相互区分,但同种类别的蚂蚁不能相互区别。从这些蚂蚁中分别取出S,S+1...B个,一共有多少种取法。 分析 : 实际就是要解决 => 从 n 种物品中取出 m 个有多少种取法 ( 同种无法区分 ) 计数问题的 DP 定义必须保证不重复计数 这里定义 dp[i+1][j] =&gt...

157

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

POJ 3046 Ant Counting (dp 多重集组合数)

differ from the White Book

Re-moved 425

POJ 3046 Ant Counting(多重集组合数)(基础组合dp)

Ant Counting Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6467   Accepted: 2397 Description Bessie was poking around the ant hill one day watching the ant

albertluf的博客 308

POJ -- 3046、Ant Counting (多重集组合数,计数类dp)

题目vj链接 题面: 题意: 有 TTT 种物品,第 iii 种物品有 nin_ini​ 个。 从中选出若干个物品组成一个集合,问集合大小位于区间 [S,B][S,B][S,B] 的不同的集合有多少个。 两个集合相同当且仅当两个集合相同种类的物品个数一样。 题解: 我们设 dp[i][j]dp[i][j]dp[i][j] 为选择了前 iii 种物品且集合大小为 jjj 时不同的方案数。 转移方程显然: dp[i][j]=∑k=0min(j,ni)dp[i−1][j−k]dp[i][j]=\sum\limi

_Griefs 245

[POJ3046] [USACO2005Nov,Silver] Ant Counting [多重集组合数][dp/生成函数]

[Link\frak{Link}Link] 题意:n\frak{n}n种物品,第i\frak{i}i种物品有ai\frak{a_i}ai​个。同种物品完全一致。求取m\frak{m}m个物品的不同取法数。 按照套路,F(i,j)\frak{F(i,j)}F(i,j)表示前i\frak{i}i种物品取了j\frak{j}j个的取法数。 那么考虑第i\frak{i}i种物品取了多少个,之前取了...

最后一次修改 344

[多重集组合数] 计数dp Ant Counting POJ - 3046 白书习题 //(题解推导公式未补完)

poj.org/problem?id=3046 题意: 给出T种数字(蚂蚁)//同数字 同种类 统计时 1 1 2 和 1 2 1 是一样的 每种各有N[i]个 然后用这些数字构成一些序列, 长度在S 到 B 内 组合总数 直接上白书 的多重集组合数 除了用滚动数组减内存 其实我觉得这题比较难理解 书上那个公式具体怎么算的了 dp[ i + 1 ][ j ] =dp[ i + 1 ][...

蒟蒻的最后的倔强 338

Ant Counting POJ - 3046 多重集组合数

t种物品,每种物品有a[i]个,从中取出s个,s+1…b个,取法数相加有多少种?(同种物品没有区别)就是挑战上的多重集组合数n种物品,每种物品a[i]个,从中取出m个,取法有多少? 定义dp[i+1][j] := 从前i种物品种取j个,有多少种取法; 要在i种物品中取出j个,可以在i-1中物品种取j个,第i种物品不取 或者从前i-1中物品中取j-k个,k<=min(a[i], j),第i种物品

litmxs的博客 459

【详解】Ant Counting POJ - 3046 ⭐⭐⭐ 【多重集组合数】

Ant Counting POJ - 3046 贝西有T种蚂蚁共A只,每种蚂蚁有Ni只,同种蚂蚁不能区分,不同种蚂蚁可以区分,记Sumi为i只蚂蚁构成不同的集合的方案数,问Sumk(S≤k≤B)之和。 Input 第一行4个整数T、A、S、B。 接下来A行,每行一个整数,代表这只蚂蚁的种类。 Output 输出Sumk(S≤k≤B)之和。 (数据范围见原文) Examples Sample In...

Suprit's blog 813

POJ 3046 Ant Counting——多重集组合数+滚动数组

这道题是多重集组合数的裸体,但必须使用滚动数组才可以通过,否则内存超出限制

随意凯的博客 298

Ant Counting POJ - 3046

给出T个蚂蚁种类,一共A只蚂蚁,要求算出蚂蚁按照S只到B只组队的组合数 Sample Input 3 5 2 3 1 2 2 1 3 Sample Output 10 思路:多重集组合数问题,dp[i][j] = i 种蚂蚁按照 j 只排列的组合总数 if(j-1-a[i] >= 0) dp[i][j] = dp[i][j-1] + dp[i-1][j...

songziyuan_的博客 335
上一篇: POJ 3181 Dollar Dayz(dp)
下一篇: POJ 2392 Space Elevator(多重背包)
hellohelloC
博客等级 码龄12年 15粉丝 107原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值