牛客多校第八场 Enigmatic Partition(DP)
思路:
只看懂了题解的写法,还有一种差分的神仙写法实在看不懂。
因为每个数字是由三个连续数字构成,然后数目不确定,所以我们枚举第一个数字l,那么就知道这三个数字是l,l+1,l+2。
我们枚举l的数目和l+1的数目,或者枚举l+1和l+2的数目。
因为两个l+1可以变成一个l和一个l+2,所以只要枚举两个就可以了。
然后又x个l,y个l+1的时候,就能得到(y-1)/2个变换情况。
x个l+2,y个l+1同理。
但是小数据的时候很慢,此时直接跑完全背包就好了。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<queue>
#include <unordered_map>
#include <map>
#include <string>using namespace std;
typedef long long ll;const int maxn = 1e5 + 7;ll sum[maxn];
ll dp[55][maxn];int main() {for(int l = 50;l < maxn;l++) {int mid = l + 1;int r = l + 2;for(int nl = 1;nl * l < maxn;nl++) { //l的数目大于r的数目for(int m = 3;m * mid + l * nl < maxn;m++) {sum[m * mid + l * nl] += (m - 1) / 2;}}for(int nr = 0;nr * r < maxn;nr++) { //l的数目小于等于r的数目for(int m = 3;m * mid + r * nr < maxn;m++) {sum[m * mid + r * nr] += (m - 1) / 2;}}}// 49 50 51for(int l = 1;l < 50;l++) { //起始数字int a[10];a[1] = l;a[2] = l + 1;a[3] = l + 2;int num = a[1] + a[2] + a[3];dp[l][0] = 1;for(int i = 1;i <= 3;i++) {for(int j = a[i];j < maxn;j++) {dp[l][j] += dp[l][j - a[i]];}}for(int j = num;j < maxn;j++) {sum[j] += dp[l][j - num];}}for(int i = 1;i < maxn;i++) {sum[i] += sum[i - 1];}int T;scanf("%d",&T);int kase = 0;while(T--) {int l,r;scanf("%d%d",&l,&r);printf("Case #%d: %lld\n",++kase,sum[r] - sum[l - 1]);}return 0;
}
牛客多校第八场 Enigmatic Partition(DP)相关推荐
- 2020牛客多校第八场E-Enigmatic Partition(隔项差分)
Description Solution 由题意 ∴n=a1∗b1+a2∗b2+a3∗b3_\therefore\,\,n=a_1*b_1+a_2*b_2+a_3*b_3∴n=a1∗b1+a2 ...
- 2021牛客多校第八场补题 D-OR
链接:https://ac.nowcoder.com/acm/contest/11259/D 来源:牛客网 题目描述 There are two sequences of length n−1n-1n ...
- 2019牛客多校第八场
A.All-one Matrices 按行枚举(即枚举下边界) e.g.e.g.e.g. 000000000000000 001100011000110 001000010000100 0111101 ...
- 24dian(牛客多校第三场)
24dian(牛客多校第三场) 题意: 给你n张牌,每张牌的大小为1 ~ 13,问这些牌与加减乘除任意组合(可以使用括号),且但所有的有效解在计算过程中都涉及到分数,即非整数,能否组成答案m,如果可以 ...
- 2019牛客多校第四场 I题 后缀自动机_后缀数组_求两个串de公共子串的种类数
目录 求若干个串的公共子串个数相关变形题 对一个串建后缀自动机,另一个串在上面跑同时计数 广义后缀自动机 后缀数组 其他:POJ 3415 求两个串长度至少为k的公共子串数量 @(牛客多校第四场 I题 ...
- 牛客多校第四场【B-Basic Gcd Problem】
牛客多校第四场[B-Basic Gcd Problem] 题目链接:https://ac.nowcoder.com/acm/contest/5669/B 思路:先要理解公式,多看几个数据基本就会有点想 ...
- 牛客多校第三场 B【Classical String Problem】
牛客多校第三场 B[Classical String Problem] 链接:https://ac.nowcoder.com/acm/contest/5668/B 来源:牛客网 题目描述 Given ...
- 牛客多校第十场F-Popping Balloons
题目连接 牛客多校F-PoppingBalloons 题意: 用枪打气球,可以横着打三次,竖着打三次,横着打可以把那一行的气球全打下来,竖着打可以把那一列的气球全打下来,但是,每两次相邻的横着打或者竖 ...
- 2019年牛客多校第1场 赛后总结
A题 :Equivalent Prefixes 题意:就是给你两个有n个不同数的串,然后保证1-p区间内任选一个区间,使得区间中最小值的下标相同,找到最大的p值 思路:我的思路是设置两个单调栈,然 ...
最新文章
- Java中常见的异常
- python当型循环_对python while循环和双重循环的实例详解
- Winform中连接Mysql8并查询表中数据进行显示
- mysql读写分离有用吗_MySQL的使用中实现读写分离的教程
- CAN 总线 之一 总线拓扑、物理电平、发展史 详解
- 2012服务器文件加密,Windows Server 2012安全方面的改变_服务器评测与技术-中关村在线...
- 表达式 jsp_[JSTL表达式] -JSTL中的所有,都在这
- LINQ(LINQ to Entities)
- 隐马尔可夫模型(HMM)攻略
- haproxy编译安装以及配置文档介绍
- echarts嵌套饼图
- TS是什么?特性是什么?与JS的区别?使用ts的好处?
- 一句关于爱情的话...
- Linux下手动查杀木马
- 不可重复读和幻读有什么区别?
- lopatkin俄大神精简Windows 10 Pro 18363.1049 19H2 Release x86-x64 ZH-CN DREY[2020-08-30]
- java点击车次显示详情_Web项目专项训练——火车车次信息管理系统代码分享
- 解读 2s-AGCN 代码
- 2022年计算机视觉产业链全景图谱,一文读懂计算机视觉产业链全局
- iwatch 苹果手表无法使用一号多设备 无法使用移动网络