首页 > 其他分享 >总结

总结

时间:2023-02-04 08:11:14浏览次数:30  
标签:总结 return int sum 当前 dp ct

关于DP专题:

这几天主要收获是数位dp和斜率优化的具体模板,期望:

数位dp

dfs(数的最后若干位,各种限制条件,当前第几位)
	if 最后一位
    	return 各种限制条件下的返回值
    局部变量 ct=当前位的数字
    局部变量 sum=0;
    for i=0 to ct-1
    	sum+=当前位取i时一定无无限制的合法状态数
        sum+=当前位取i时满足当前限制的合法状态数
    根据ct更新限制条件 不再满足则return sum
    return sum+dfs(当前位后的若干位,更新后的限制条件,下一位)

slv(当前数)
	if(只有一位) return 对应的贡献
    局部变量 ct;
    for ct=可能最高位 to 1
    	if 当前位有数字 break
    局部变量 nw=当前位数字
    局部变量 sum=0
    for i=1 to nw-1
    	sum+=当前位取i后合法情况任意取的贡献
    for i=1 to ct-1
    	for j=1 to 9
        	sum+=第i位取j后合法情况任意取的贡献
    sum+=dfs(去掉第一位后的若干位,限制条件,第二位)
    return sum

main
	预处理当前位取i的各种条件各种限制的贡献
    读入 L R
    --L
    输出 slv(R)-slv(L)
    return 0

斜率优化:

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn=50010;
int n,L;
db sum[maxn],dp[maxn];
int head,tail,Q[maxn];
int X(int i){return ...}
int Y(int i){return ...}
int slope(int i,int j){return (Y(i)-Y(j))/(X(i)-X(j));}
int main(){
    scanf("%d%d",&n,&L);
    for(int i=1;i<=n;i++){
        scanf("%lf",&sum[i]);
        sum[i]+=sum[i-1];
    }
    head=tail=1;
    for(int i=1;i<=n;i++){
        while(l<r){
				int mid=(l+r)>>1;
				if(slope(q[mid],q[mid+1])>k){
					l=mid+1;
				}else{
					r=mid;
				}
			}
        dp[i]=dp[Q[head]]+Y-...*X;
        while(head<tail&&slope(i,Q[tail-1])符号slope(Q[tail-1],Q[tail])) --tail;
        Q[++tail]=i;
    }
    printf("%lld\n",(LL)dp[n]);
    return 0;
}

期望DP

期望是个神奇的东西,他是连续的,具体来说,要记住这个最重要的公式

\(E(kp)=kE(p)\)

关于比赛

其中我的决策部分在ACM赛制下出现了一些问题,因为ACM只有AC/UAC所以我为了得到这一道题的分数,死磕一道题3h,使得我只做出1道题(还不是正解)。

我对于自己想出的解法不够自信,应该在草稿纸上多尝试一下,不要轻易放弃。
(例如我最开始想出T1的正解,但没考虑清楚就直接否定掉了)

关于合作部分我觉得我和fwj的合作是非常好的,彼此之间足够相信就避免了抢电脑之类的事情发生。

总的来说,ACM赛制会更锻炼我们的思维和能力,逼迫我们想正解。

标签:总结,return,int,sum,当前,dp,ct
From: https://www.cnblogs.com/hfjh/p/17090828.html

相关文章

  • misc之压缩包总结------2023.2.3
    1,ZIP伪加密 ZIP文件格式一个ZIP文件由三个部分组成:压缩源文件数据区+压缩源文件目录区+压缩源文件目录结束标志压缩源文件数据区:504B0304:这是头文件标记(0x040......
  • 2023.2.3 寒假集训二阶段总结
    2023.2.3寒假集训二阶段总结新内容与课堂这几天都在讲解有关dp的优化策略以及各种dp等有关知识,其中在计数dp、数位dp、概率与期望dp,数据结构优化dp(斜率优化版题qwq)上......
  • 代码随想录-数组-C++总结
    1.二分查找重点区分左闭右开,左闭右闭两种写法中的差异,理解循环中的不变量,这样在returnr还是l和什么时候l+1r-1什么时候不需要+1-1很重要。35.搜索插入位置-力扣(Leet......
  • JDK8 四大核心函数式接口及扩展接口总结
    前言 Java8的四大函数式接口及相关的扩展接口在日常使用中的频率也是非常多的,包括自己定义的函数式接口,在JDK1.8之前,我们定义的方法都是用来接收参数,然后自己根据参数传......
  • 2019年12月1号总结
    这个周末把银川南京复现赛都打了,自己一个人打的,先说一下对题目的感受,我自己一个人是在没看任何题解的情况下做的,感觉不是特别难,没有难到了那种写不出来的地步,现在想想出题人......
  • 2019年11月27日总结
    写这篇总结的时候应该是28号了,刚刚打完CF洗完了来写这篇总结。这几天的话我主要是看了权值线段树和主席树,因为上周打比赛遇到了一道这个题,我只会套模板导致做的太慢当时没......
  • 2020年7月27日总结
    这几场比赛打下来,发现自己之前的部分模板都不能用了,不知道是数据卡的紧了,还是之前没有整理好,然后又重新整理了一遍,和队友商量了一下做题的策略,我负责快速签到,然后把铜牌题做......
  • 2020年7月19日训练总结
    这周算是正式开始了暑假的训练,按照计划就是周一牛客多校,周三多校,周五多校,周六牛客多校,这四场打下来的感觉就是难,应该和区域赛的难度是差不多的。这四场的平均排名也就是......
  • 2020年5月24日总结
    现在每天好像没了多少动力,没有再去学习新的知识点,都是在每天尽量去参加一两场比赛,可能不会开学了吧,暑假也不知道能不能去留校,不能去的话就制定一个计划表,落实到每一天的安排......
  • 2019年9月22日总结
    题没有落下,比赛也没有落下,感觉自己手感已经上来了,我们商量了一下决定不去银川了,虽然银川拿牌的几率是最大的,不过还是抵制一波。线段树的各种题也看的差不多了,接下来看并查集......