幸运抽奖Dp

题目:http://acm.hfut.edu.cn/OnlineJudge/

赛后听人说用背包搞一下,然后就搞了一下,wa到不能忍啊。注意下范围。

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

#include <cstdio>

#include <cstdlib>

#include <cstring>

#include <algorithm>

#include <cmath>

#include <stack>

#include <queue>

#include <vector>

#include <map>

#include <string>

#include <iostream>

using
namespace std;

long
long  dp[60][3000];

int
main()

{

    long
long  n,m,k;

    while(scanf("%I64d%I64d%I64d",&n,&m,&k)!=EOF){

        for(int
i=0;i<=m;i++)

            for(int
j=0;j<=n*(n+1)/2;j++)

            dp[i][j]=0;

        dp[0][0]=1;

        long
long  v=n*(n+1)/2;

        for(int
i=1;i<=n;i++){

            for(int
j=m;j>=1;j--){

                for(int
t=v;t>=i;t--){

                    dp[j][t]+=dp[j-1][t-i];//取了j个物品,达到重量为t的方案数

                    dp[j][t]%=k;

                }

            }

        }

        long
long  ans=0;

        for(int
i=1;i<=v;i++)

            for(int
j=0;j<i;j++){

                ans+=dp[m][i]*dp[m][j];

                ans%=k;//暴力枚举去 m个东西达到的重量 的种类数。

            }

        cout<<ans<<endl;

    }

    return
0;

}

  

时间: 2024-10-13 14:51:42

幸运抽奖Dp的相关文章

幸运抽奖,分解一个千位数求各位数之和

import java.util.Scanner; /** * @author 蓝色以太 * 幸运抽奖 */ public class LuckyDraw { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请输入4位会员卡号:"); int num=sc.nextInt(); int ge=num%10; int shi=num%100/10

java-第四章-实现幸运抽奖功能

import java.util.Scanner; public class A01 { /**  * @param args  */ public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("我行我素购物管理系统>幸运抽奖"); Scanner input = new Scanner (System.in); System.out.println

12.幸运抽奖

import java.util.Scanner; /* * 幸运抽奖:会员号的百位数与系统随机数相同,即为中奖 * */ public class GoodLuck { public static void main(String[] args) { //随机产生一个0-9之间的任意整数 int random=(int)(Math.random()*10); // System.out.println(random); //从控制台接收一个任意的四位数 System.out.println("

第十章 幸运抽奖

一.课程内容回顾 1 控制台程序开发 2 变量与运算符 3 数据类型与数组 4 流程控制语句 二.任务 为某商场开发一套幸运抽奖系统,客户首先注册成为商场会员,会员登录系统,参加抽奖活动 三.主要功能 注册 登录 幸运抽奖 四.综合练习:幸运抽奖 阶段1:实现菜单的输出显示 需求: 输出菜单 选择菜单编号,输出菜单信息 如果编号选择错误,输出"您的输入有误!" 实现 public class LuckyNumber1 { /** * 幸运抽奖-实现基本逻辑的输出显示 */ public

幸运抽奖

package cn.com.bdqn.keke; import java.util.*; public class Test12 { public static void main(String[]args){ int i; int j; boolean a=false; String name1 = ""; String name2 = ""; String jiXu="y"; int miMa1 = 0; int miMa2 = 0; in

Java 幸运抽奖项目

package com.ob.anjou; import java.util.Scanner; public class project_five { public static void main(String[] args) { int i; int x = 0,y=0,id=0; //x为注册的用户名 y为注册的密码 id为随机生成的会员卡号 char cha; boolean yn=false; //yn 为注册标识 boolean ok=false; //ok用于判断登录的账号密码是否

幸运抽奖数据结构

/****** Object: Table [dbo].[Sweepstakes] Script Date: 12/15/2014 08:50:41 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Sweepstakes]( [id] [int] IDENTITY(1,1) NOT NULL, [title] [nvarchar](200) NOT NULL, [detail] [ntext

Android之实现“抽奖大轮盘”

这个实例能够帮助我们学习旋转动画和计时器这两个知识点,废话不多说,上主程序: package com.bear.lotterywheel; import java.util.Timer; import java.util.TimerTask; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.view.Menu; import android.view.

小型抽奖系统的一个总结

package com.Test; import java.util.Arrays; import java.util.Scanner; public class Test2 { /** 主要功能 注册 登录 幸运抽奖 需求说明 输出菜单 选择菜单编号,输出菜单信息 如果编号选择错误,输出“您的输入有误!” 需求说明 系统询问用户是否继续 如果用户选择继续,则可以继续选择菜单,否则程序结束,退出系统 需求说明 输入用户名和密码,系统产生4位随机数作为卡号. 注册成功,显示注册信息并修改注册标识为