• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
tmeteorj
Nothing is so big that it is impossible to get over, and hurt only serves to make us stronger. 没有什么事是大到无法战胜的,痛苦也只会让我们变得更加坚强。
博客园 | 首页 | 新随笔 | 新文章 | 联系 | 订阅 订阅 | 管理

2012年10月5日

POJ 3600
摘要: 题意:给一个小矩形,一个大矩形,均是01矩阵,然后问从大矩形中删除一些行一些列是否能得到小矩形。题解:先枚举小矩形由大矩形哪些列组成,然后在判断这些列能否组成小矩形,判断方法为:先将小矩形每一行当做2进制数存入一个一维数组中(长r),在对每一个已经枚举好的大矩形的列也同样按此操作,得到一个长为R的数组,如果第一个数组是第二个数组的子序列,那么就是可行的。这样,枚举列的复杂度O(Choose(C,c)),至多十几万,判断子序列是O(r+R)View Code 1 #include<cstdio> 2 #include<cstring> 3 #include<algo 阅读全文
posted @ 2012-10-05 19:07 tmeteorj 阅读(205) 评论(0) 推荐(0)
 
POJ 1090
摘要: 题意:一个01序列,改变第k位的条件是第k-1位是1并且前k-2位全是0,求使01序列全变成0的最小步骤。题解:通过举几个使00...1变成00...0的例子可以发现,长度为i最后一位为1的最小步骤实际就是它的(2^i)-1,于是dp[i][0]代表前i位全为0的最小代价,dp[i][1]代表前i-1位为0,第i位为1的最小代价。 若第i位本身是1,则dp[i][1]=dp[i-1][0],dp[i][0]=dp[i-1][1]+1+2^(i-1)-1=dp[i-1][1]+2^(i-1); 若第i位本身是0,则dp[i][0]=dp[i-1][0],dp[i][1]=dp[i-1][... 阅读全文
posted @ 2012-10-05 18:21 tmeteorj 阅读(400) 评论(0) 推荐(0)
 
POJ 2567
摘要: 题意:给定一棵无根树,每次选编号最小的叶子删除,并将与该叶子相连的结点编号输出来。PS:无根树叶子的定义:度为1的点。题解:按照拓扑排序方法,每次选择度为1且编号最小的点,将与它相连的点输出来,并将其度减一。View Code 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<cctype> 5 using namespace std; 6 int head[100],nc; 7 struct Edge 8 { 9 int to,next;10 } ed 阅读全文
posted @ 2012-10-05 17:32 tmeteorj 阅读(340) 评论(0) 推荐(0)
 
POJ 2454
摘要: 题意:每个城市有1000头牛,其中各个城市又有一些“Jersey Cows”,现在要将城市均分为3份,使得至少两份Jersey Cows的数量之和超过那份区域牛总数的一半。题解:先踢出Jersey Cows最少的K座城市,统计剩下的两份Jersey Cows数量,随机交换它们直到满足题意。View Code 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<ctime> 5 #include<cstdlib> 6 using namespac 阅读全文
posted @ 2012-10-05 16:47 tmeteorj 阅读(327) 评论(0) 推荐(0)
 
POJ 2286
摘要: 题意:一个#型的棋盘,上面有1、2、3各8个,要求通过8种操作使得最后中间的八个格子数字相同。题解:IDA*搜索,首先,每个格子有三种状态,总共有3^24种状态,即使通过1、2、3都只有8个排除一些内存也是不够的,相反,此题给了15s的时限,便可以用时间效率不如bfs,但是空间上完爆bfs的IDA*了。 1、记录八种旋转的改变数组位置,然后在设定的depth范围内dfs。 2、两个剪枝:a)当前操作是上一次操作的逆操作。b)当前状态最好情况也无法在depth之内完成任务,即使中间8个格子中最多的数字在最好情况下凑成目标态也超过了depth。View Code 1 #include<c.. 阅读全文
posted @ 2012-10-05 15:58 tmeteorj 阅读(1056) 评论(0) 推荐(0)
 
POJ 3681
摘要: 题意:给定n个点,你需要找一个面积最小的矩形将其中的m个点严格的包裹在内。题解:1、尽管求的是严格包裹在内的点,但也可以转化成求非严格,即点可以在边上的,两者对应关系就是x*y=(a+2)*(b+2)。 2、由于n、m都比较小,可以枚举矩形的xmin,xmax。 3、枚举确定xmin和xmax后,实际上矩形的一条边就确定了,要想面积最小,就是使得另一边尽可能的小,即从x坐标满足要求的点中选择m个y坐标最接近的,由于每个枚举都是共用一个数据,所以可以先将n个点按y坐标排序。View Code 1 #include<cstdio> 2 #include<cstring> 3 阅读全文
posted @ 2012-10-05 11:14 tmeteorj 阅读(339) 评论(0) 推荐(0)
 
 

公告


博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3