- 博客(9)
- 资源 (7)
- 收藏
- 关注
原创 UVA658 这不是bug,而是特性 It‘s not a Bug, it‘s a Feature!
题意:补丁在修正BUG时,有时也会引入新的BUG,假定有n(n<=20)n(n<=20) 个潜在BUG,和m(m<=100)m(m<=100) 个补丁,每个补丁用两个长度为nn 的字符串表示,其中字符串的每个位置表示一个bug,第一个串表示打补丁之前的状态(“-”表示该BUG必须不存在,“+”表示该补丁必须存在,0表示无所谓),第二串表示打补丁之后的状态(”-“表示不存在,“+”表示存在,0表示不变)。每个补丁有一定的执行时间,你的任务是用最小的时间把所有BUG都存在的软件变得没有.
2020-10-31 11:50:57
219
原创 求图中的最大独立集或最大团(UVA 193)
几个概念完全图:简单无向图,图中的任意两个点之间有且仅有一条边相连,所有完全图都是它本身的团。补图:图G的补图通俗的来讲就是完全图Kn去除G的边集后得到的图Kn-G。团:顶点集C被称为无向图 G=(V,E) 的团,如果C是顶点集V的子集(C⊆V),而且任意两个C中的顶点都有边连接。最大团:图中定点数...
2020-10-28 00:44:54
982
原创 2020.9~10月训练总结
···关于动态规划的训练心得···见识到了经典的矩形覆盖问题与硬币问题,放在图上做;见识到了刷表法,求树上的最大独立集,形形色色的状态方程,双向Tsp问题的一个处理思路,练到了当年zhhx大佬教的枚举区间长度的区间DP;时钟归零,未来必定产生的“损失”累加在状态中,通过状态的转移实现累加考虑一个方程的正确性时将子状态定义的含义带入,考虑其转移是否全面;理清状态值的转移过程,代码运行时的转移方向常常跟状态含义所蕴含的方向不同;考虑一个状态是否合适可以从其维度对与状态的转移是否有实际意义出发;有.
2020-10-27 12:59:21
262
1
原创 UVA1628送披萨
依旧使用具有“累加”意义的状态,与修长城不同的是,路过某点时不一定要累加改点的“权值”,但是每一次移动对今后所有累加的点的“权值”的影响是相同的,为此可以增加一维cnt,d(i,j,cnt,p)表示i~j的决策已经确定时,当前在p(i或者j),从(1 ~ i-1)与(j+1)中选取cnt个所能得到的“最大收益”,状态的转移可以通过枚举第cnt中的第一个累加的点实现,假设选取的点为x,则代表x+1 ~ i-1或j+1 ~ x-1的点舍弃 ,原因在于“在任意时刻,送餐的人已经考虑过的(送了或者决定放弃订单).
2020-10-21 20:38:14
285
原创 关于刷表法
for(长度)for(左界)通过左界和长度定位右界;每次可以看成拿一段区间在数轴上平移,每一轮平移可以更新出这一区间长度+1的答案,然后下一轮拿区间长度+1的区间继续扫。
2020-10-15 23:25:38
534
原创 UVA10934 Dropping water balloons
题目描述:一年一度的新生周活动开始了,你们做好了大量的装满水的气球,准备拿来恶搞那些可 怜的新生。活动开始之前,你们突然发现一个问题:这些气球实在是太硬了,很难把它们打 破(如果打不破,它们就没有任何意义了)。甚至从好几层高的楼顶上把它们扔到地面,也 打不破。你的任务是借助一个n层的高楼确定气球的硬度(所有气球硬度相同)。 实验过程是这样的:每次你拿着一个气球爬到第f层楼,将它摔到地面。如果气球破了,说明它的硬度不超过f;如果没破,说明硬度至少为f。注意,气球不会被实验所“磨 损”。换句话说,如果在某层楼
2020-10-12 22:20:39
152
原创 树的最大独立集(UVA1220)Party at Hali-Bula
对于一颗n个结点的无根树,选出尽量多的结点,使得任何两个结点均不相邻(称为最大独立集),然后输入n-1条无向边,输出一个最大独立集(如果有多解输出任意一组)。任选一个根r,d(i)表示以i为根结点的子树的最大独立集大小,结点i有两种决策,选与不选,如果不选i,问题变成了所有儿子的值相加,如果选i,问题变成了所有孙子的值相加再加1,即d(i)=max(1+Σd(j),Σd(k));j为i的孙子(gs[i]),k为i的儿子(s[i])。实现时可以从s[i]与gs(i)的元素去找i,即当计算出一个d(i)后
2020-10-08 19:44:33
304
原创 UVA10003 切木棍 Cutting Sticks
d(i,j)表示将第i个切割点到第j个切割点分成i-j段所花费的最小代价,d(i,j)=min(d(i,k)+d(k,j)+a(i)-a(j)),为什么可以这样设置,因为我们考虑(i,j)的最小切割代价的时候,只有第一刀的代价是可以直接知道的,以此可以作为状态间转移的“跳板”。#include<iostream>#include<cstdlib>#include<cstring>#include<cstdio>using namespace std;
2020-10-07 20:55:46
200
原创 UVA 11584 Partitioning by Palindromes
d[i]表示从1~i位最小回文子串数(下标按从1开始),d[i]=min(d[i],d[j]+1|j+1到i为回文串)。正确性证明:考虑添加第i位字母,有两种情况:1.第i位自成一回文串。2.第j+1位到第i位为一回文串。枚举所有1、2情况即可求得d[i]。#include<iostream>#include<cstring>using namespace std;int n,d[1005];bool p[1005][1005];int main() { st
2020-10-04 17:23:18
129
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅