自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

苍竹林

何不让这一场梦 没有醒来的时候

  • 博客(17)
  • 问答 (7)
  • 收藏
  • 关注

原创 hdu 1595 find the longest of the shortest (dijkstra)

/* 假设图中某条路径被堵死,它的最坏情况下的最短路径是多少? 基本算法就是先求出最短路径,然后假设最短路径中的某一条边被堵死, 再求最短路,取这些最短路的最大值即可。 */ # include # include # include using namespace std; # define inf 100000000 int dis[1010]; int map[1010][1010]; in

2015-08-31 19:44:35 503

原创 hdu 3591The trouble of Xiaoqian (多重背包)

/* 解题思路是:首先这个人有各种钱币,每种钱币若干,所以我们对这个人的钱用多重背包解决; 再者是找钱的人,可以认为他们有各种各样的钱币,都是无限件,所以对于收银员进行完全背包处理; 还有就是处理二者之间的关系 dp[i]表示支付i元钱至少多少张纸币,dp2[i-T]表示:收银员要找的钱的张数 两者相加即是所需要的张数,然后取最小值: */ # include # include # i

2015-08-31 11:19:43 484

原创 hdu 2844 Coins (多重背包)

/* 题意 :给你一些不同价值和一定数量的硬币,求用这些硬币可以组合成价值在[1 , m]之间的有多少 dp[i]来表示容量为i这个包包可以装多少价值,最后计数是要计价值和容量相等的个数 */ # include # include # include using namespace std; int sum,dp[100010]; void CompletePack(int v) { f

2015-08-31 09:41:49 368

原创 lightoj 1304 The Best Contest Site Ever (二分匹配)

/* 分块 行的快为一方 列的为另一方进行匹配 */ # include # include # include using namespace std; # define N 10010 int tot; int head[N]; int vis[N]; int link[N]; int uN; struct node { int to; int next; } Edg

2015-08-17 15:02:51 438

原创 hdu 1507 Uncle Tom's Inherited Land* (二分匹配)

/* 给你n*m的土地,有k个1*1的方块被挖掉, 现在你要卖剩下的地(<=50),地只能是1*2 或2*1卖,问你最多能卖几块。 并输出摆放方式 */ #include #include #include #include #include using namespace std; const int MAXN = 510; int uN,vN;//u,v的数目,使用前面必须赋值 i

2015-08-16 21:42:55 345

原创 poj 3014 Cake Pieces and Plates 分蛋糕(dp)

/* 题意:求将m块蛋糕放进n个盘子里的方案数 dp[i][j] 把j个蛋糕放到i个盘子里的方案数 分3类讨论: 1.i>j,肯定有空的,那么就直接等于dp[i-1][j],就是i-1个盘子装了j个蛋糕了,你再拿了一个盘子出来,这个盘子保证不装; 2.i==j若里面有空的盘子那么同上,没空盘的时候只有一种情况,n个1 3.j>i没空盘的时候是这样处理的:先把每个盘子里放一个蛋糕,保证没空

2015-08-12 15:26:33 1054

原创 poj1664 放苹果 (母函数)

/* 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法 */ # include # include # include using namespace std; int main() { int t,i,j,k,n,m; int c1[15],c2[15]; while(~scanf("%

2015-08-11 19:58:57 465

原创 poj 1032 Parliament (整数拆分)

/* 题意:将n拆分为若干个数,使得这些数的乘积最大。 若将n拆成两个数,有如下两个规律: 1、只要不拆成1和n-1,拆出来的数的乘积一定比n大。 2、拆出来的数越接近n/2,两数乘积越大。 有了这两个规律,就可以琢磨本题的做法了。 首先,n要拆的越多越好,但是不能拆出1,所以最好是都拆成2。但是题目要求拆出来的数不能相同,所以构造的时候,先从2开始按公差为1的等差数列进行构造,可能当

2015-08-11 19:40:12 425

原创 hdu 2680 Choose the best route (dijkstra)

/* 求点与点之间最短距离。因为此题的起始点不定, 所以可用反向图来求得,终点确定,从终点出发 */ # include # include # include using namespace std; # define INF 10000010 int map[2010][2010]; int dis[2010]; int vis[2010]; int n; void dijkstra(i

2015-08-10 19:15:10 393

原创 codeforces 567D One-Dimensional Battle Ships (set)

/* 题意: 在1~n的格子里,有k艘,每艘长为a的船,并且这些船不相交且不能相邻。 现在有m个射击,每个射击给你一个位置(1~n),并且不会重复。 由于对方每次都说没打中,因此你想找到至少要射击几次才能证明对方说谎。 若不能证明对方说谎,输出-1。 思路: n个格子,船长为a,则能放(n+1)/(a+1)艘船。(由于要求不能相邻,因此a+1)。 每次在set中插入射击点,二分上下界 原来可以放

2015-08-07 14:19:14 536

原创 hdu 2119 Matrix (最小覆盖)

/* 题意: 一次消除一行或一列1,最少几次能把其中的1消去 最小覆盖==最大匹配 */ #include #include #include using namespace std; int map[110],vis[110]; int a[110][110]; int n,m; int bfs(int x) { int i; for(i=0;i<m;i++)

2015-08-04 21:46:17 414

原创 hdu 5349 MZL's simple problem (set)

# include # include # include # include # include using namespace std; int main() { int n,op,i,a; sets;///默认从小到大 元素不重复 while(~scanf("%d",&n)) { s.clear(); for(i=0;

2015-08-04 20:08:48 371

原创 hdu 4647 Another Graph Game (贪心)

/* 题意: 题目是给一个无向图,其中每个节点都有点权,边也有边权 ,然后就有2个小朋友开始做游戏了ALICE &BOB 游戏规定ALICE 先行动然后是BOB, 然后依次轮流行动,行动时可以任意选取一个节点并获得节点的点权 ,如果他已经把一条边的2个端点都取了,那么他可以获得那边的边权 思路: 贪心。 对于一条边来说, 如果拿了一个点, 说明已经拿了该边的一半权值。 如果某边的两个的顶点分

2015-08-04 18:39:19 371

原创 hdu 4893 Wow! Such Sequence! (线段树 区间更新+单点更新)

/* 1 k d 第k个数加d 2 l r 查询l到r的和 3 l r l到r更新到最近的f[] */ # include # include # include using namespace std; # define lson l,m,rt<<1 # define rson m+1,r,rt<<1|1 # define N 100005 __int64 sum[N<<2],need[N

2015-08-03 21:22:54 346

原创 hdu 4902 Nice boat (线段树)

/* 题意: 给你n个数 q个询问: q==1时 l到r区间的数更新为x q==2时 l到r区间的数更新为gcd(a[i],x) 输出变化之后的n个数 */ //模拟 # include # include # include # include using namespace std; # define N 100005 int a[N],e[N]; int b[N],c[N]

2015-08-02 22:01:45 380

原创 hdu 2852 KiKi's K-Number (树状数组)

/* 题意:给定一个容器,里面存放各种数值,规定三个操作,一个是在容器中增加一个数值, 一个是在容器中删掉一个数值,一个是询问容器中比a大的数中第k大的数, 将其输出。如果在删除过程中没有这个数,则输出"No Elment!" 如果容器中没有比a大的第k个数,则输出"Not Find!". */ # include # include # include # include using n

2015-08-02 19:17:00 338

原创 hdu 4638 Group (离线树状数组)

/* 题意: 在l到r之间有多少段连续的数 离线处理每个查询,遍历每个点,设当前处理的区间终点为R, 处理每个查询的时候,首先假设所有的数a[i]都是自己独立成段, 如果有a[i]+1,或者a[i]-1的数在区间[L,R]内,那么它肯定不是独立成段的, 也就是我们要减去在[L,R]内不独立成段的数的个数。 问题就转化为查询[L,R]之前不独立成段

2015-08-01 21:22:48 414

空空如也

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

TA关注的人

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