有做后感
弗兰克非线性
大学生
展开
-
hdu1698(线段树/区间修改/求和)
hdu1698"Just a Hook" 题意: 有一个区间s [1,n],每一节si的初始价值为1。定义操作:x y val,将区间[x,y]中的每一个小节的价值改为val。问:经过Q次操作后总区间的价值是多少。 1<=n<=1e5 0<=Q<=1e5 算法/数据结构: 线段树 注意使用:long long scanf("%I64d") 吐槽: 3*10e5我觉得不需要长整型,但不知道为甚用int就是错!艹,搞这个点搞了一晚上。 代码: #include<iostream&g原创 2021-02-21 22:32:55 · 287 阅读 · 0 评论 -
hdu4632:区间dp+容斥原理+记忆化搜索
hdu4632:区间dp+容斥原理+记忆化搜索 题意: 求给出字符串str中子序列(注:不是子字符串)是回文串的个数。 思路: 状态设计:dp[s][e]表示str[s]~str[e]区间的回文子序列个数 初始化/递归结束条件: 1)s>e:表示空串,dp[s][e]为零; 2)s==e:单个字符构成一个回文串,返回1; 状态转移:dp[s][e]的上一个状态是dp[s][e-1]或dp[s+1][e],将它们加起来,区间dp[s+1][e-1]中的回文子序列是被重复计数的,因此需要减去这个区间的d原创 2021-02-09 12:04:24 · 303 阅读 · 0 评论 -
hdu1401“Solitaire“
hdu1401"Solitaire"(双向广搜) 题意 有一个8X8的棋盘,上面有4个棋子,棋子可以上下左右移动。给定一个初始状态和一个目标状态,问能否在8步之内到达。 注意点(我的错误) 移动一步,棋子落到另一个棋子上是,才可以移动两步。(容易理解为即可以移动一步,也可以移动两步。) 棋子不区分顺序,所以需要按一定规则排序后才可以确定一个状态。 思路 使用8维数组vis*标记,进行查重。 有八个方向向量vex*。 伪双向广搜:并不是真的从两个初始一起搜索,分别从目标状态、初始状态使用bfs搜索4步,原创 2021-02-04 19:02:53 · 330 阅读 · 0 评论