看了题目名字深切怀疑出题人是不是失恋了,然后出题折磨我们。然后这题就愉快的打了个暴力,最后莫名其妙wa20,伤心.....

其实这题正解不是很难想,如果说把暴力的DP搞出来,正解也差不到哪去了,

我们发现此题中暴力的话

一层枚举D即天数,另一层枚举当前给过的饼干数j,然后还有一层枚举上一层的饼干数,(当然还可以通过前缀和删去一维)

但是我们观察数据范围,发现D及其的大!!!!!!!

显然枚举中不能出现D

有一条显然的性质,如果你有N块饼干,那么最多给N天,每天给一块就会给完。

那么我们第一维枚举至N,表示每一天一定给

最后统计答案时(i:1~N)f[i][N]*C(D,i);即可

(本题中D过大,所以不能用逆元,改用递推O(n)求,*(D-i)时要取模,不然会暴)

 1 #include<iostream>
2 #include<cstdio>
3 #include<cstring>
4 #include<string>
5 #include<cmath>
6 #include<algorithm>
7 #define ll long long
8 using namespace std;
9 #define MAXN 2010
10 const ll mod=998244353;
11 ll f[MAXN][MAXN];
12 ll N,D,M;
13 ll ni[MAXN],ni_c[MAXN];
14 ll a[MAXN][MAXN];
15 ll max1(ll x,ll y)
16 {
17 return (x>y)?x:y;
18 }
19 ll min1(ll x,ll y)
20 {
21 return (x<y)?x:y;
22 }
23 void work()
24 {
25 f[0][0]=1;a[0][0]=1;
26 for(ll i=1;i<=N;++i)
27 {
28 ll R=min(N,(M-1)*i);
29 for(ll j=1;j<=N;++j)
30 {
31 a[i-1][j]=(a[i-1][j-1]+f[i-1][j]+mod)%mod;
32 }
33 for(ll j=i;j<=R;++j)
34 {
35 ll L=max1(i-1,j-M+1);
36 /*for(ll k=L;k<=j-1;++k)
37 {
38 f[i][j]=(f[i][j]+f[i-1][k])%mod;
39 }*/
40 f[i][j]=(f[i][j]%mod+(a[i-1][j-1]-a[i-1][L-1]+mod)%mod+mod)%mod;
41 //printf("f[%lld][%lld]=%lld\n",i,j,f[i][j]);
42 }
43 }
44 ll sum=0ll;ll ans=1ll;
45 for(ll i=1;i<=N;++i)
46 {
47 if(i>D)continue;
48 ans=(ans*((D-i+1)%mod)+mod)%mod;
49 sum=(sum+(f[i][N]*(ans*ni_c[i]%mod+mod)+mod)%mod+mod)%mod;
50 //printf("f=%lld C=%lld\n",f[i][N],C(D,i));
51 }
52 printf("%lld\n",sum%mod);
53 }
54 int main()
55 {
56 // freopen("text.in","r",stdin);
57 // freopen("wa.out","w",stdout);
58 ni_c[1]=1;ni[1]=1;
59 ni_c[0]=1;ni[0]=1;
60 for(ll i=2;i<=2000;++i)
61 {
62 ni[i]=((mod-mod/i)*ni[mod%i])%mod;
63 ni_c[i]=(ni_c[i-1]*ni[i])%mod;
64 }
65 while(cin>>N>>D>>M)
66 {
67 if(N==0&&D==0&&M==0)break;
68 memset(f,0,sizeof(f));
69 memset(a,0,sizeof(a));
70 work();
71 }
72 }

【模拟7.19】那一天我们许下约定(组合数学,DP)的更多相关文章

  1. [CSP-S模拟测试]:那一天我们许下约定(DP+组合数学)

    题目传送门(内部题2) 输入格式 每个测试点有多组测试数据.对于每组数据,有一行共三个整数$N$,$D$,$M$含义如题.输入结束标识为$“0 0 0”$ (不含引号). 输出格式 对于每组数据,输出 ...

  2. HZOJ 20190719 那一天我们许下约定(dp+组合数)

    这个题目背景真的是让我想起了当年... 不说了,言归正传,这题,一眼看去30分暴力还是很好拿的,但我因为考试时的心态问题没有处理好细节爆了零. 30分暴力的普遍思路的复杂度应该是$O(nmd)$的,但 ...

  3. NOIP模拟测试6「那一天我们许下约定(背包dp)·那一天她离我而去」

    那一天我们许下约定 内部题,题干不粘了. $30分算法$ 首先看数据范围,可以写出来一个普通dp #include<bits/stdc++.h> #define ll int #defin ...

  4. 「模拟8.19 A嚎叫..(set) B主仆..(DFS) C征程..(DP+堆优化)」

    为啥这一套题目背景感到很熟悉. T1  嚎叫响彻在贪婪的厂房 考试一个小时没调出来,自闭了.......... 正解很好想,最后实在打不出来了只好暴力骗分了... 联想到以前做的题:序列(涉及质因数分 ...

  5. HZOI2019 A. 那一天我们许下约定 dp

    题目大意:https://www.cnblogs.com/Juve/articles/11219089.html 读这道题的题目让我想起了... woc我到底在想什么?好好写题解,现在不是干那个的时候 ...

  6. HZOJ 那一天我们许下约定

    比较好想的一道题,只是那个组合数比较恶心. 先说一下我最开始想的$n^4$的沙雕dp: 设f[i][j][k]为前i天给了j个,第i天给了k个,则f[i][j][k]=∑f[i-1][j-k][o]; ...

  7. 一文读懂AI简史:当年各国烧钱许下的愿,有些至今仍未实现

    一文读懂AI简史:当年各国烧钱许下的愿,有些至今仍未实现 导读:近日,马云.马化腾.李彦宏等互联网大佬纷纷亮相2018世界人工智能大会,并登台演讲.关于人工智能的现状与未来,他们提出了各自的观点,也引 ...

  8. 解析“60k”大佬的19道C#面试题(下)

    解析"60k"大佬的19道C#面试题(下) 在上篇中,我解析了前 10 道题目,本篇我将尝试解析后面剩下的所有题目. 姐妹篇:解析"60k"大佬的19道C#面试 ...

  9. NOIP模拟测试19「count·dinner·chess」

    反思: 我考得最炸的一次 怎么说呢?简单的两个题0分,稍难(我还不敢说难,肯定又有人喷我)42分 前10分钟看T1,不会,觉得不可做,完全不可做,把它跳了 最后10分钟看T1,发现一个有点用的性质,仍 ...

随机推荐

  1. 接口测试原理及Postman详解

    接口测试定义 接口是前后端沟通的桥梁,是数据传输的通道,包括外部接口.内部接口.内部接口又包括:上层服务与下层服务接口,同级接口 生活中常见接口:电脑上的键盘.USB接口,电梯按钮,KFC下单 接口测 ...

  2. OOP第一章总结

    经过了三周的OO,尽管过程不太轻松,但是有所得还是值得欣慰的事! (1)程序结构 第一次作业: UML类图如下,第一次作业在结构上并没有太多面向对象的思想,只是简单的分类,一个运行类,两个对象类,预处 ...

  3. opencv——轮廓发现与轮廓(二值图像)分析

    引言 二值图像分析最常见的一个主要方式就是轮廓发现与轮廓分析,其中轮廓发现的目的是为轮廓分析做准备,经过轮廓分析我们可以得到轮廓各种有用的属性信息. 这里顺带提下边缘检测,和轮廓提取的区别: 边缘检测 ...

  4. 设了padding要减去盒高 和 line-height 行高

    增加了padding 一定要减去相应的高度,不然整个元素的高度会增高(原高+padding) line-height:行高 1.行高要比字体大,不然字体会挤到一块去 2.若父盒子没有设置高度,则行高会 ...

  5. Java集合详解(五):Hashtable原理解析

    概述 本文是基于jdk8_271版本进行分析的. Hashtable与HashMap一样,是一个存储key-value的双列集合.底层是基于数组+链表实现的,没有红黑树结构.Hashtable默认初始 ...

  6. 封装axios在util中

    创建util工具类,封装通用的get和post请求 封装axios成工具类,方便大家请求调用 1.创建util文件夹 2.创建request.js 3.封装 //封装请求相关方法 //初始化一个axi ...

  7. 设置vue全局配置

    全局配置 创建全局配置文件 vue.config.js 添加配置项

  8. [OS] 概述&学习资料

    计算机启动 启动自检 初始化启动 启动加载 内核装载 登录 中断 硬件中断 I/O设备 CPU Timer:时间片结束后,发中断给CPU Scheduler:将CPU合理分配任务使用 异常中断 内存: ...

  9. 在 Apache 上使用网络安全服务(NSS)实现 HTTPS--RHCE 系列(八)

        在 Apache 上使用网络安全服务(NSS)实现 HTTPS--RHCE 系列(八) 发布:linux培训 来源:Linux认证 时间:2015-12-21 15:26 分享到: 达内lin ...

  10. CentOS、RHEL、Asianux、Neokylin、湖南麒麟、BC Linux、普华、EulerOS请参考“1.1 CentOS本地源配置”;

      本文档适用于CentOS.RHEL.Asianux.Neokylin.湖南麒麟.BC Linux.普华.EulerOS.SLES.Ubuntu.Deepin.银河麒麟. CentOS.RHEL.A ...