首页 > 其他分享 >做题小结

做题小结

时间:2024-07-26 21:17:22浏览次数:15  
标签:前缀 可以 然后 大写 小结 转移 dp

接上一篇博客

第一题

对于一列来说 只能放一个 一行也是同理 形成一个十字
又因为某些格子不能放 于是我们可以让不能放的格子如同炮兵阵地一样
不能放的位置为0
然后其实可以发现 每一行和上一行有关 可以让上一行承接之前所有
行的状态 类似一个前缀和
懒得写滚动了 反正n小
于是我们可以写出一个表达式
dp[i][j]表示第行的第j个列
对于转移方程式
如果j没有
则有dp[i][j]=max(dp[i-1][j]+1,dp[i][j]);这是错的理解!
j不能是列 j是列的话 转移状态很麻烦 某一列j是没有放的
可以放 那么这次放上了 其实我们也可以选择不放 那还要开个维[2]
表示放没放 那太麻烦了 转移起来 这也是状态压缩的出现意义
但是!!!j到底是什么呢 j是列是错的 因为是承接前面的 这个i-1行会有很多“1” 分别对应了i-1 i-2 的状态 所以这里其实就是1<<n-1种状态了 对于某一个i 1的个数不能大于i 对吧
所以这个二维你可以理解为1<<n的某种状态 而不是列

然后呢 我之前说了是承接上面的行
比如 10010101
可以由10000101的来 也可以是00010101的来所以是个+
所以这个dp转移就出来了

我们想想该如何开展循环

for(1-20)for(0-1<<20)应该是这样的 如果1的个数大于i直接continue
然后用lowbit函数进行转移
看了下代码 发现第一层循环其实不用。。加上的话我算了下
205e515 估摸可能要超时。。。。这个是往多了算。。。

好吧 直接上代码

	for(int j=i;j>=1;j-=lowbit(j))
		{
			if((a[cnt]|lowbit(j))>a[cnt])
			{
		//		debug
			//	cout<<i<<" "<<j<<" "<<lowbit(j)<<endl;
			//a[cnt]&j==0
				int temp=i^(lowbit(j));
				dp[i]+=dp[temp];
    //  cout<<dp[i]<<" "<<i<<" "<<temp<<endl;
//我直接 dp[cnt]+=dp[lowbit(j)了 错了	
			}
		}

下一个

是个区间dp 括号匹配
然后记住 像这种转移的方程是很正常的
一头一尾
dp[l][r]=dp[l+1][r],dp[l][r-1];

下一个

和能量项链很像这一道题 肯定是要断环为链的
然后注意二层循环肯定是要更新到l+len-1<=2n
为什么呢 比如n+1想和n+3连一块儿 也是可以的呀 所以也要更新的
然后一层循环和项链不同的是 我们只需要到n即可 而那个题是因为要计算尾巴 答案区间长度是n+1 我一开始写的是n+1
别的就没什么了 一开始固定长度为3 就行了

ICPC2023网络赛

这个题是2023网络赛的 状态压缩的dp
可以分析到dp需要存到7个状态 分别表示小写 大写 大小写
小数字 大数字 大小数字 啥都没有
其实就是000 001 011 ----111这样
那么我们该思考如何书写转移方程式呢
dp数组很明显就是dp[i][x][7]了 表示此时i个以x结尾
因为不能相邻所以弄个结尾
转移方程该如何书写呢

假设我么当前字符是小写字母 是不是之前无小写的都可以通过转移对吧
然后对于之前含有小写的意味着我们也可以把答案转移过来

我们可以认为|1就是把1带上了 |2就是把大写带上了 |4就是数字带上了

我在写这一篇题解都在口胡上次的做法 能说多少算多少

假设此时是小写 直接外面枚举一层for循环从0到7
里层是for从小写a到数字结束中间有个小写会排斥要continue
然后dp[i][x][j|1]+=dp[i-1][k][j]
然后题目说了可以当大写 没关系同样的写法再来一遍
dp[i][x][j|2]+=dp[i-1][k][j]
此时x是大写了

对于大写的话 dp[i][x][j|1]+=dp[i-1][k][j]就这样
是数字的话 dp[i][x][j|4]+=dp[i-1][k][j]就这样
如果是“?”
他可以充当任何对吧

for(int i=0-7)
for(j=0;j-62)直接枚举每一位的可能性
比如这一位是数字 那么就当数字处理了 那么此时这个的答案转移
也是开一层循环进行叠加
是小写字母 由于可以当大写 于是可以 写两个转移 如果是大写再写一个
这样程序就写完了 然后输出答案的话就是dp[n][k][7]哪个大用哪个

应该是这样的吧

卧槽 什么 前缀和 淦
用前缀和 是个好办法 我那个估摸着不会超时吧?
我算算n762*62 我多算了一层循环
我这里指的是?字符时 要计算x目前是什么 然后还要知道上一个
选的什么
因为那个累计答案 我还要考虑上一个具体选了什么 就是那个k。。。
要超时了 用前缀和确实可以诶

前缀和数组记录上一层的7个状态
然后一减去当前的同样的的就肯定是上一层的所有答案了 我去

不错不错不错。。。。 重新思考果然更有体会了
要开滚动 这没话说

总体思路没问题 就是没想起要开前缀和优化 然后对于每个状态我都提到了要开for(0-7)其实开外面 大家一起用就行了 代码更简洁
很好的一道状态压缩题!
至此 应该是所有题目整理完了 当然那些场切的 我觉得没啥的 就没写了

标签:前缀,可以,然后,大写,小结,转移,dp
From: https://www.cnblogs.com/LteShuai/p/18326267

相关文章

  • 最近做题小结
    前言来到产业园第一次写题最近做的题目很杂涉及很多个平台vjlojcf牛客lg然后等会一个个找吧按照时间顺序写吧一直拖着没写题解最近状态一般想回家了第一个题这个题我没写出来因为我不会处理第二个平台的问题谁能想到只需要记好第一个就行了呢利用一个while......
  • 机械学习—零基础学习日志(学习小结01)
    零基础为了学人工智能,真的开始复习高数为了能走进人工智能的大门,我现在开始学习《高等数学》,同时也是在反思,学习过程中,我的认知究竟在什么情况下会拓展,并且不会过度痛苦。现在每天都在逐步学习一些数学,或者,人工智能的概念。我有几个模糊的感知,愿意和大家一起分享。第一,人,本......
  • 2024/7/23 测试小结
    突然听说要考试捏(没有复习(T1是P1434[SHOI2002]滑雪。草这不一眼......等下好像不太会写。一开始脑抽了。暴力建图给每个点跑spfa最长路。明显地,不是正解。直接跳掉了。T2是P4170[CQOI2007]涂色。草这真的是一眼题。10min秒掉。T3是CF161DDistanceinTree。一眼淀......
  • 28449-2018 测评过程指南小结
    28449测评过程指南适用于测评机构、定级对象的主管部门及运营使用单位对定级对象安全等级保护状况开展安全测试评价等级测评工作要求:(附录C)1依据标准,遵循原则2恰当选取,保证强度3规范行为,规避风险存在的风险:(标准P1和课本108)1.影响系统正常运行2.泄露敏感信息3.......
  • 【D3.js in Action 3 精译_020】2.6 用 D3 设置与修改元素样式 + 名人专访(Nadieh Brem
    当前内容所在位置第一部分D3.js基础知识第一章D3.js简介(已完结)1.1何为D3.js?1.2D3生态系统——入门须知1.3数据可视化最佳实践(上)1.3数据可视化最佳实践(下)1.4本章小结第二章DOM的操作方法(已完结)2.1第一个D3可视化图表2.2环境准备2.3......
  • eggjs的部署小结
    eggjs的部署小结 eggjs项目部署步骤:1、本地初始化代码mkdiregg-example&&cdegg-examplenpminitegg--type=simplenpmi首先本地初始化代码,并跑起来测试本地没问题。2、项目利用git或者ftp推到服务器上面注意:此过程不必讲node_modules文件夹传上去。3、线上......
  • c语言篇章first小结写٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ
    c语言篇章first小结写(第一次搞图片有点不自然)1.C语⾔是什么?⼈和⼈交流使⽤的是⾃然语⾔,如:汉语、英语、⽇语那⼈和计算机是怎么交流的呢?使⽤计算机语⾔。⽬前已知已经有上千种计算机语⾔,⼈们是通过计算机语⾔写的程序,给计算机下达指令,让计算机⼯作的。C语⾔就是众多......
  • Day2小结.(7.14)
    今天又是全天打比赛。https://www.cnblogs.com/didiao233/p/18301992T1(100)签到题,10分钟内切出来了,还算可以 https://www.cnblogs.com/didiao233/p/18302004T2(10)赛场想到贪心,不过没有考虑最关键的量,而是两个量一起贪心了,结果是显然的,爆炸了。所以,以后贪心得关注最重要的量......
  • Day1小结(7.13)
    第一题主要是全天打比赛,讲题,练手感关于一些细的总结经验,具体看每题的讲解。 早上T1(0)https://www.cnblogs.com/didiao233/p/18300538打了个暴力,但是忘记模数了,爆0(正常能拿45),所以以后一定要记得模数赛场考虑到了分类,由于麻烦没往下写听完讲解之后发现可以找规律,但是赛场也......
  • 做题小结-含做不来的计数DP
    第一个题首先这个题我没做出来我在这里还是要总结下基环树喜欢考什么我以前做过一个交互题题目大意忘了反正考的是基环树最重要的一个性质两个点之间一定存在两个走法,一个是正常走另一个是走环反正就是一定有两条路过来那这个题就是考虑这个性质还有就是正常树的要找......