自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 HDU 4562 守护雅典娜(动态规划)

答案分为三种只能只有包含雅典娜的塔,只有包含怪兽的塔,包含雅典娜和怪兽的塔的和。使用dp可以分别计算包含雅典娜、怪兽的最厚塔层数,过程类似LIS。枚举这两种情况的塔数,求和计算第三种情况。#include #include #include #include #include #include #include #include using namespace st

2015-11-26 20:41:00 379

原创 使用SecureCRT远程登录Linux Ubuntu

在使用SecureCRT远程登录Ubuntu时会出现,The remote system refused the connection.这是因为SSH服务没有启动。安装SSH-Server。sudo apt-get install openssh-server启动SSH-Server。/etc/init.d/ssh startSSH-Server

2015-11-25 13:21:38 465

原创 HDU 4939 Stupid Tower Defense(贪心+动态规划)

可以发现对于最优解红塔一定是放在最后的。对于蓝塔和绿塔进行dp,dp[i][j]表示在长度为n的路径上已经安放i个绿塔和j个蓝塔可造成的最大伤害,然后进行转移。最优解一定是路径上放满了塔,这样n-i-j得到的就是红塔的数量,这样比较得到最大值即可。#include #include #include #include #include #include #include #inc

2015-11-08 19:00:20 286

原创 HDU 1561 The more, The Better(树形DP)

经典的树形DP。先将多叉树变成二叉树,然后进行DP。dp[i][j]表示以i为根,可选j个时候的最优解。#include #include #include #include #include using namespace std;const int maxn=205;int ch[maxn][2];int f[maxn][maxn];int v[maxn];in

2015-11-08 15:44:40 266

原创 HDU 3534 Tree(dfs统计树的直径的数量)

求树的直径用dfs可做,每次返回以当前结点为终点、某个叶子为起点的最长路径长度,同时找最大的两条路径求和更新最优解。具体分有多条同样长的最长路径、有一条最长路径和一条或多条次长路径、只有一条路径、叶子结点这几种情况。O(n)可做。#include #include #include #include #include using namespace std;const int

2015-11-08 14:39:24 593

原创 USACO Section 3.1 Humble Numbers

用一个数组p来维护每个素数要拓展的丑数在数组中的位置,每次比较得到最小的数字加入到丑数数组中。#include#include#include#include#include#includeusing namespace std;typedef long long LL;/*ID: kkkwjx1PROG: humbleLANG: C++*/int s[10

2015-11-06 19:33:32 233

原创 USACO Section 3.1 Score Inflation(完全背包)

完全背包。模版题,可以用滚动数组优化。#include#include#include#include#include#includeusing namespace std;typedef long long LL;/*ID: kkkwjx1PROG: inflateLANG: C++*/const int maxn=10005;int dp[maxn];int

2015-11-06 14:16:15 280

原创 USACO Section 3.1 Agri-Net(最小生成树Prime算法)

最小生成树,模版题。#include#include#include#include#include#includeusing namespace std;typedef long long LL;/*ID: kkkwjx1PROG: agrinetLANG: C++*/const int maxn=105;int g[maxn][maxn];bool use[m

2015-11-06 14:06:43 388

原创 HDU 1712 ACboy needs your help(分组背包)

模版题,分组背包。dp[i][j]=max(dp[i][j],cost[i][k]+dp[i-1][j-k])#include#include#include#include#include#includeusing namespace std;typedef long long LL;const int maxn=105;int cost[maxn][maxn];

2015-11-05 17:48:24 244

原创 HDU 5525 Product(数论)

首先将1-n每个数分解质因数,变成p1^x1*p2^x2...pi^xi..pm^xm的形式,其中pi表示质因数,ai表示质因数出现次数。考虑每个质因数pi对最后答案的贡献,由约数个数定理知除pi以外的质因数有(x1+1)*(x2+1)*...(xi-1+1)*(xi+1+1)..(xm+1)个,而pi可能贡献0到xi个,所以包括pi的约数的积是pi^0*pi^1*...pi^xi*(x1+1)*

2015-11-05 13:41:31 413

原创 USACO Section 2.4 Fractions to Decimals

首先答案不可能是无限不循环小数,因为无限不循环小数不能用分数表示。之所以出现循环是因为余数出现了重复,只需要用数组记录余数出现的位置,用判重来结束循环即可。#include #include #include #include #include #include #include #include #include using namespace std;/*ID:

2015-11-03 21:29:39 289

原创 USACO Section 2.4 Cow Tours (Floyd+并查集)

用floyd计算每个点可达的最短距离,然后统计每个点可达距离的最大长度。然后用并查集计算每个点所属的集合,枚举两个不同集合a、b里的两个点i、j,从所有的max{edge[a],edge[b],distance(i,j)+l(i)+l(j)},其中edge[x]表示集合x的直径,distance(x,y)表示x和y点的距离,l(x)表示点x可达距离的最大长度。#include #incl

2015-11-03 20:59:36 315

原创 HDU 5524 Subtrees(DFS)

分析可以发现所有子树的种数不会太大可以直接暴力统计。递归处理当前的树,首先记录当前树的大小,然后对于它的两颗子树,找到其中那颗满二叉树暴力统计子树种数,然后递归处理另一颗子树。注意统计判重。找满二叉树的过程可以通过枚举树的高度,然后判断另一颗树的高度与它相差是否在1之内。#include #include #include #include #include #include

2015-11-01 10:27:45 644

原创 HDU 5523 Game

简单题。如果不止1个柱子而且s和t相同则无解。其他情况下如果s和t分别在两边则是0,如果s在一头或s在中间但是s和t相邻则只需要1,其他情况下为2。#include #include #include #include #include #include #include using namespace std;typedef long long LL;int main(

2015-11-01 10:23:27 558

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除