首页 > 其他分享 >「杂题乱刷」洛谷 P1831

「杂题乱刷」洛谷 P1831

时间:2024-02-14 22:33:21浏览次数:30  
标签:洛谷 forl sum P1831 last 杂题 ll dp define

题目链接

一道简单数位 dp 题。

多设一个支点和力矩和然后套板子就做完了。

参考代码:

点击查看代码
/*
Tips:
你数组开小了吗?
你MLE了吗?
你觉得是贪心,是不是该想想dp?
一个小时没调出来,是不是该考虑换题?
*/
#include<bits/stdc++.h>
using namespace std;
#define map unordered_map
#define forl(i,a,b) for(register long long i=a;i<=b;i++)
#define forr(i,a,b) for(register long long i=a;i>=b;i--)
#define lc(x) x<<1
#define rc(x) x<<1|1
#define mid (l+r)>>1
#define cin(x) scanf("%lld",&x)
#define cout(x) printf("%lld",x)
#define lowbit(x) x&-x
#define pb push_back
#define pf push_front
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
#define endl '\n'
#define QwQ return 0;
#define ll long long
ll t;
ll dp[19][19][1800],a[19];
ll dfs(ll last,ll x,ll sum,bool _1)
{
	if(last==0)
		return !sum;
	if(sum<0)
		return 0;
	if(_1==0 && dp[last][x][sum]>=0)
		return dp[last][x][sum];
	ll maxn=_1?a[last]:9,ans=0;
	forl(i,0,maxn)
		ans+=dfs(last-1,x,sum+(last-x)*i,_1 && i==maxn);
	if(_1==0)
		dp[last][x][sum]=ans;
	return ans;
}
ll sol(ll x)
{
	ll k=0;
	while(x)
		a[++k]=x%10,x/=10;
	ll sum=0;
	forl(i,1,k)
		sum+=dfs(k,i,0,1);
	return sum-k+1;
}
void solve()
{
	forl(i,0,18)
		forl(j,0,18)
			forl(k,0,1799)
				dp[i][j][k]=-1;
	ll l,r;
	cin>>l>>r;
	cout<<sol(r)-sol(l-1)<<endl;
}
int main()
{
	IOS;
	t=1;
	//cin>>t;
	while(t--)
		solve();
    /******************/
	/*while(L<q[i].l) */
	/*    del(a[L++]);*/
	/*while(L>q[i].l) */
	/*    add(a[--L]);*/
	/*while(R<q[i].r) */
	/*	  add(a[++R]);*/
	/*while(R>q[i].r) */
	/*    del(a[R--]);*/
    /******************/
	QwQ;
}

标签:洛谷,forl,sum,P1831,last,杂题,ll,dp,define
From: https://www.cnblogs.com/wangmarui/p/18015749

相关文章

  • 【题单】一个动态更新的洛谷综合题单
    洛谷试炼场的题目确实很具有代表性,但是近几年以来,又有许多经典题目出现在OI界中,这个大题单就是作为洛谷试炼场的扩展和补充。目录新版本食用指南更新日志题单Part0试机题Part1入门阶段Part2基础算法Part3搜索Part4动态规划Part4.1-4.4动态规划Part4.5-4.12动态规......
  • 交互杂题选做
    交互杂题选做记录一些自己写过的很有意思的交互题。另外JOISC中有很多有意思的交互题,很值得一做。CF1292ERinandTheUnknownFlower题意:交互题,你要猜一个长为\(n\)的由\(CHO\)构成的字符串,你每次可以询问一个长度为\(t\)的字符串,代价是\(\dfrac{1}{t^2}\),你会得到......
  • 海亮02/14杂题
    海亮2月14日个人题单T1link题意传奇特级大师\(\mathsfE\color{red}\mathsf{ntropyIncreaser}\)有一个\(n\timesm\)的矩形纸片,她将其放置在一个平面直角坐标系中,使其左下角在\((0,0)\),右上角在\((n,m)\)位置。她每次会均匀随机选择一条平行于坐标轴、经过坐标均为......
  • 「杂题乱刷」洛谷 P10155
    题目链接P10155[LSOT-2]基于二分查找与插入的快速排序解题思路算法一:容易发现,当\(a_n\)不为\(n\)时,我们无论如何都无法将\(n\)这个值插入到最后一位,否则我们可以依次将所有数字从大到小插入,这样也可以保证失去最少的贡献。视写法获得\(40\)分或\(60\)分。算法二......
  • 洛谷P5725 【深基4.习8】求三角形
    洛谷P5725【深基4.习8】求三角形【深基4.习8】求三角形题目描述模仿例题,打印出不同方向的正方形,然后打印三角形矩阵。中间有个空行。输入格式输入矩阵的规模,不超过9。输出格式输出矩形和正方形样例#1样例输入#14样例输出#101020304050607080910111213141516......
  • 洛谷 P1795 无穷的序列 题解
    题目传送门题目大意:给定整数\(a\),判断\(a\)是否属于数列\(1,2,4,7,11\cdots\)。多测。1.暴力枚举(90pts)不难发现,该数列除第一项外第\(n\)项比第\(n-1\)项多\(n-1\)。故暴力枚举\(n\),计算数列的每一项,判断是否与\(a\)相等,大于\(a\)就break。多测加记忆化,用mx......
  • 「杂题乱刷」P8687
    题目链接最典的状压dp了。直接枚举每个状态然后用01背包的方式做即可。时间复杂度\(O(n2^m)\)。代码:点击查看代码/*Tips:你数组开小了吗?你MLE了吗?你觉得是贪心,是不是该想想dp?一个小时没调出来,是不是该考虑换题?*/#include<bits/stdc++.h>usingnamespacestd;......
  • 洛谷P3455 笔记
    传送门又是一道看了tj的题。题意\(t\)次询问,每次询问给定\(n\),\(m\),\(k\),求\(\sum_{i=1}^{n}\sum_{j=1}^{m}[gcd(i,j)=k]\)。\(1\let\le5\times10^4\),\(1\lek\len\),\(m\le5\times10^4\)正文把\(k\)扔到上界去,记原式变为\(\sum_{i=1}^{\lfloor\frac{n}{k}......
  • 「杂题乱刷」CF1886D
    题目链接简单计数题。容易看出\(<,>\)这两个符号一定只有\(1\)种选择,而\(?\)就有\(i-1\)中选择,总方案数很好推出,这样时间复杂度为\(O(nm)\),不能通过此题,因此我们考虑用逆元优化,优化后时间复杂度\(O(m)\)。参考代码:点击查看代码/*Tips:你数组开小了吗?你MLE了吗?......
  • 【洛谷 P2670】[NOIP2015 普及组] 扫雷游戏 题解(模拟)
    [NOIP2015普及组]扫雷游戏题目背景NOIP2015普及组T2题目描述扫雷游戏是一款十分经典的单机小游戏。在行列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格)。玩家翻开一个非地雷格时,该格将会出现一个数字——提示周围格子中有多少个是地雷格。游戏的......