• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

  • 联系
  • 订阅
  • 管理

随笔分类 -  ACM

1 2 3 4 5 6 下一页

poj 2186 Popular Cows 强连通分量tarjan算法
摘要://第一次用Tarjan求强连通分量//先求强连通分量,再重新构图,找出度为0的点,并且出度为0的点只有1个//这题不能求入度,不能判断重新构图后的点的入度为n-1//因为存在单链的情况,这时,链尾的点就是答案,但是该入度为1#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int N =... 阅读全文

posted @ 2011-04-22 22:25 sysuwhj 阅读(554) 评论(0) 推荐(0)

sicily 1264. Atomic Car Race 动态规划
摘要://这题做了一晚//很简单的dp水题,一开始超时,优化后又WA,结果发现是输出精度不够,至少要输出小数点后4位//先要预处理一下,不然dp过程中会出现很多重复计算//设dp[i]为完成路程a[1]+...+a[i]的最小时间,cost[i][j]为从站i换轮胎后,到站j所需的时间//dp[i] = min(dp[k]+cost[k][i]+b), 0 < k < i//dp[0] = 0;#inc... 阅读全文

posted @ 2011-04-20 10:43 sysuwhj 阅读(549) 评论(0) 推荐(0)

sicily 1158. Pick numbers bfs
摘要://这题一开始感觉是dp,状态转移方程为dp[i][j] = min(dp[i][j-1], dp[i-1][j]) + maze[i][j]//提交上去WA//后来发现这题不能用dp,因为题目要求的是正的最小值,状态转移方程的min会取到负数,//当求出dp[n][m]为负数时,有可能存在一条和为正的路径//注意到n,m都比较小,可以直接用bfs搜索过#include <iostream>#in... 阅读全文

posted @ 2011-04-15 18:29 sysuwhj 阅读(488) 评论(0) 推荐(0)

sicily 1011. Lenny's Lucky Lotto 动态规划
摘要://设dp[i][j]为选取的第i个数为j的方案数//dp[i][j] = sum(dp[i-1][k]), i-1 <= k <= j/2//ans = sum(dp[n][k])#include <iostream>#include <cstring>#include <cstdio>using namespace std;const int N = 15;const int M = 2005... 阅读全文

posted @ 2011-04-08 22:25 sysuwhj 阅读(651) 评论(0) 推荐(0)

sicily 1010. Zipper dfs || dp
摘要://这题可以用暴力搜索//要注意减枝和各种预处理,不然各种TLE//方法是搜索s里的=s1的子串,再判断s剩下的字符是否能组成s2#include <iostream>#include <cstring>#include <cstdio>using namespace std;const int N = 205;char s1[N], s2[N], s[N], tmp[N];int low_tim... 阅读全文

posted @ 2011-04-08 21:15 sysuwhj 阅读(692) 评论(0) 推荐(0)

poj 1189 钉子和小球
摘要://这题有几个需要特别注意的地方//不能算对应的格子的数量/总数,只能通过计算每层的概率得到//一开始用计算总数,计得5/14和sample里的7/16对不上//这里的层数有50层, 2^50次方,用unsigned long long//在计算lcm时,要先除再乘,不然会溢出。//在计算gcd时,传入的参数a,b要满足a>b//因为这些原因各种错误RE,WA#include<iostream>u... 阅读全文

posted @ 2011-04-01 23:21 sysuwhj 阅读(558) 评论(0) 推荐(0)

poj 1157 LITTLE SHOP OF FLOWERS 动态规划
摘要://dp[i][j]表示前i个花瓶装前j束花的最大审美值//dp[i][j] = max(dp[i-1][j], dp[i-1][j-1]+cost[j][i])#include<iostream>using namespace std;const int INF = 1000000000;const int N = 105;int dp[N][N];int cost[N][N];int f, n... 阅读全文

posted @ 2011-03-31 23:55 sysuwhj 阅读(360) 评论(0) 推荐(0)

zoj 1196 Fast Food 动态规划
摘要://dp[i][k]表示前i个店添加k个供应点所达到的最小值//状态转移方程为:dp[i][k] = min(dp[j][k-1], dis[j+1][i]),//其中k-1 <= j <= i-1, dis[i][j]表示从第i个饭店到第j个饭店添加一个供应点所达到的最小值,取i,j中间值即可//初始化:dp[0][0] = 0;#include <iostream>#include <cstr... 阅读全文

posted @ 2011-03-30 19:20 sysuwhj 阅读(386) 评论(0) 推荐(0)

zoj 1060 Sorting It All Out 拓扑排序
摘要://这题之前一直卡着没过,今晚蛋疼了一晚才过//这题是拓扑排序,有几个易错点//拓扑排序的时候,m每次要保证入度为0的点只有1个,因为题目要求的是完全排序//当满足条件(确定排序或检测到矛盾)后,后面的输入就可以不管了#include <iostream>#include <queue>#include <string>#include <cstring>using namespace std;c... 阅读全文

posted @ 2011-03-19 22:40 sysuwhj 阅读(611) 评论(0) 推荐(0)

zoj 1074 To the Max 最大子矩阵之和
摘要://这题开始方法想错了,调了半天,才发现动规方程列不正确//这题可以看做一维数组的连续子串最大和的扩展//方法是把二维转换成一维,再用一维的动规方程求//把多行合并成一行求#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int N = 105;const int INF = 100000... 阅读全文

posted @ 2011-03-19 19:05 sysuwhj 阅读(487) 评论(0) 推荐(0)

zoj 1094 Matrix Chain Multiplication 栈应用
摘要://利用stack计算表达式//类似计算中序表达式那样,用两个栈,一个存字母,一个存符号//这题要自己存入*号,要用一个变量储存之前输入的符号,判断是否要把*入栈//如果前一个符号是(,则不需要。#include <iostream>#include <stack>#include <cstdio>using namespace std; struct info{ int row, col; in... 阅读全文

posted @ 2011-03-19 13:22 sysuwhj 阅读(437) 评论(0) 推荐(0)

zoj 2109 FatMouse' Trade 部分背包
摘要:部分背包问题,贪心 先按J[i] / F[i] 升序排序,每次选取J[i] / F[i]的最大值,如果不能取满J[i],则取把背包填满的容量即可。原因很简单,每次取J[i] / F[i]的最大值就使得背包单位体积价值最多。从大到小选择,自然会得到最优解。 #include <iostream>#include <algorithm>#include <cstdio>using namespace... 阅读全文

posted @ 2011-02-27 21:24 sysuwhj 阅读(423) 评论(0) 推荐(0)

zoj 1076 Gene Assembly 贪心
摘要:这题就是任务调度,给定任务的起始和结束时间,求能完成任务的最大数目。 贪心,先按任务的结束时间递减排序,再逐个选择。选择活动的起始时间大于已选择活动的结束时间 #include <iostream>#include <cstdio>#include <vector>#include <algorithm>using namespace std;const int N = 50005;struct... 阅读全文

posted @ 2011-02-27 21:18 sysuwhj 阅读(501) 评论(0) 推荐(0)

sicily 1694 Spiral 蛇形矩阵
摘要:题目给出蛇形矩阵,要求计算给定的值在蛇形矩阵的位置。 注意到,矩阵的右上角的值是某个奇数的平方,从内到外依次是1,3,5…的平方。先求出要求的数对应的右上角的数的坐标,再根据与距离来计算指定数的坐标 #include <iostream>#include <cstdio>using namespace std;int n, m;void find(){ int place_zero = n/2+... 阅读全文

posted @ 2011-02-26 22:12 sysuwhj 阅读(411) 评论(0) 推荐(0)

poj 1976 A Mini Locomotive 动规
摘要:这题有些像求连续子序列和的最大值 设dp[i][j]表示i个火车头拉动j个火车舱的人数和的最大值,状态方程如下:dp[i][j] = max(dp[i-1][j-times]+num[j]+..+num[j-times+1], dp[i][k]) #include <iostream>#include <cstdio>#include <cstring>using namespace std;c... 阅读全文

posted @ 2011-02-25 22:19 sysuwhj 阅读(447) 评论(0) 推荐(0)

poj 2184 Cow Exhibition 背包
摘要:这题想了很久,虽然知道是01背包,但加了两个约束条件后,就不知道如何做了。 直到看到解题报告才懂这题思路。先定死一个变量,求另外一个变量,得到各个结果再找出最优解。 设dp[i][v]为前i头牛给定smart为v时的最大fun值之和。就可以转化为01背包。 dp[i][v] = max(dp[i-1][v-s[i]] + f[i], dp[i-1][v])。注意由于smart可以是负的,要把sm... 阅读全文

posted @ 2011-02-25 20:23 sysuwhj 阅读(624) 评论(1) 推荐(1)

poj 3211 Washing Clothes 背包
摘要:这题做得相当顺利,1A 题意是求夫妇两人洗完衣服用的最小时间。先按衣颜色分类,对于每种颜色的衣服,最优解是都平分即V/2,背包容量为洗衣服的花费,用01背包来标记是否可以通过组合组成某个容量。若不能平均分,就从V/2开始搜索,最接近V/2的较大值就为两人洗完每种颜色衣服的最短时间,把各种颜色衣服的解加起来即为答案 #include <iostream>#include <map>#include... 阅读全文

posted @ 2011-02-24 21:04 sysuwhj 阅读(348) 评论(0) 推荐(0)

hdu 1028 Ignatius and the Princess III 完全背包
摘要:这题以前是母函数做的,今天看了DD的背包九讲,该用背包模型做。 这题是完全背包。设dp[i][v] 为用前i个数组成v的方案数,状态方程如下:dp[i][v] = sum(dp[i-1][v-k*i]) #include <iostream>using namespace std;const int N = 122;//dp[i][v] 为用前i个数组成v的方案数//dp[i][v] = sum... 阅读全文

posted @ 2011-02-22 23:54 sysuwhj 阅读(366) 评论(0) 推荐(0)

poj 1466 Girls and Boys 最大独立集
摘要:根据性别分为两个集合,然后求最大独立集。由于题目没有给出性别,可以不划分集合,每个集合都为n个,求最大匹配数,最后除2即可。 阅读全文

posted @ 2011-02-10 19:00 sysuwhj 阅读(540) 评论(0) 推荐(0)

hdu 2768 Cat vs. Dog 最大独立集
摘要:开始误解了题目意思,认为观众留下是要同时满足两个条件。后来看了解题报告才明白过来。当观众想要留下来的宠物出局时,这个观众才认为会离开 。 以cat_lover和dog_lover把观众分为两个集合。只要两个集合内的人的选择有冲突,这两个顶点连接,边代表矛盾,然后求最大独立集。 最大独立集 = 顶点数 - 最小顶点覆盖数(最大匹配数) 阅读全文

posted @ 2011-02-10 18:56 sysuwhj 阅读(785) 评论(0) 推荐(0)

1 2 3 4 5 6 下一页
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3