摘要:
bzoj1708[Usaco2007 Oct]Money奶牛的硬币 题意: n种硬币面值,求凑m元多少种方案。n≤25,m≤10000。 题解: 完全背包。f[0][0]=1,f[i][j]=sum(f[i-1][j],f[i][j-a[k]])。 代码: 1 #include <cstdio> 2 阅读全文
摘要:
bzoj1682[Usaco2005 Mar]Out of Hay 干草危机 题意: 给个图,每个节点都和1联通,奶牛要从1到每个节点(可以走回头路),希望经过的最长边最短。 题解: 求最小生成树即可。 代码: 1 #include <cstdio> 2 #include <cstring> 3 # 阅读全文
摘要:
bzoj1108[POI2007]天然气管道Gaz 题意: n个钻井,n个站,要求两两配对,但站必须在钻井的右下方。配一对的费用为两点的曼哈顿距离,求最小总费用。n≤50000。 题解: 发现满足条件站必须在钻井的右下方的所有配对方案的总费用是相同的,所以直接用站横坐标的和减钻井横坐标的和加上钻井纵 阅读全文
摘要:
bzoj3709[PA2014]Bohater 题意: n只怪物,打死第i只要耗ai血,打死后补bi血。如果你血≤0就会死。你现在有z血,问怎样的顺序可以打死所有怪。n≤100000。 题解: 先打bi大于ai的怪攒血,此时按ai升序排序。因为先杀耗血少的再杀耗血多的,则为下一步提供了更高的可能性。 阅读全文
摘要:
bzoj1131[POI2008]Sta 题意: 给出一个n个点的树,找出一个点来,以这个点为根的树时,所有点的深度之和最大。n≤1000000。 题解: 两次dfs。第一次dfs维护子树的大小、节点的深度、以子树的根为根的子树深度和。第二次dfs维护以某节点为根除了以1为根时它的子树之外的所有节点 阅读全文
摘要:
bzoj1529[POI2005]ska Piggy banks 题意: n个存钱罐,每个罐子的钥匙都在另外某个存钱罐里,问最少打破几个存钱罐,才能得到所有存钱罐里的钱。n≤1000000。 题解: 因为每个存钱罐只有一把钥匙,所以整幅图都是由一些互不连接的连着一个环的链组成,而打破存钱罐的个数正是 阅读全文
摘要:
bzoj1627[Usaco2007 Dec]穿越泥地 题意: 网格中有一些障碍物,求从起点到终点最小步数。-500≤坐标≤500 题解: bfs。所有坐标均加上500,就可以只考虑第一象限了。 代码: 20160919 阅读全文
摘要:
bzoj1651[Usaco2006 Feb]Stall Reservations 专用牛棚 题意: 有N头牛,每头牛有个喝水时间段,这段时间它将专用一个棚。现在给出每头牛的喝水时间段,问至少要多少个棚才能满足它们的要求。n≤50000,时刻≤1000000。 题解: 时间段左端点对应的sum元素+ 阅读全文
摘要:
bzoj2023[Usaco2005 Nov]Ant Counting 数蚂蚁&&bzoj1630[Usaco2007 Demo]Ant Counting 题意: t个族群,每个族群有ni只蚂蚁,同族群蚂蚁没有区别。问从所有蚂蚁中选出s到b只蚂蚁有多少方案。t≤1000,ni≤100。 题解: dp 阅读全文
摘要:
bzoj1618[Usaco2008 Nov]Buying Hay 购买干草 题意: n种物品,每种无限个,重量为pi,费用为ci,要求总重量超过h的前提费用最小。求最小费用。n≤100,m≤50000。 题解: dp。f[i][j]=min(f[i-1][j],f[i][j-p[i]]+c[i]) 阅读全文