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

2012年9月14日

POJ 3226
摘要: 题意:给定长度,然后从26个字母中选择n个来组成一个长为n的字符串,按照字典序标号为0,1,2.......,然后题目会给你字符串,求这个字符串的标号题解:从m个字母中选择k个组成序列的放法数位P(m,k),从左往右依次填充,进行到第i个字母时,字典序小于该字母的元素还有cnt个,则说明它前面还有cnt个P(m,k),然后扫一遍出答案,由于n<=26,所以要高精度。View Code 1 import java.util.*; 2 import java.math.*; 3 class Main 4 { 5 public static void main(String arg[]) .. 阅读全文
posted @ 2012-09-14 20:34 tmeteorj 阅读(387) 评论(0) 推荐(0)
 
POJ 2626
摘要: 题意:每个人都可以派去下黑棋或者下白棋,但不能都下,然后每人都有各自擅长度,最后选出30人,15人下黑棋,15人下白棋,使得下白棋的擅长度加上下黑棋的擅长度之和最大。题解:dp[i][j]代表i个人下黑棋,j个人下白棋的最大价值,转移方程即为max(dp[i][j],dp[i-1][j]+a,dp[i][j-1]+b),需要注意这是0,1背包,所以要从大往小dpView Code 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 int 阅读全文
posted @ 2012-09-14 20:08 tmeteorj 阅读(257) 评论(0) 推荐(0)
 
POJ 1254
摘要: 题意:给两个点的x,y坐标以及当前点与他们的角度,求当前点的位置。题解:每一个点的坐标与角度可以构成一条直线,然后求两直线交点。View Code 1 #include<cstdlib> 2 #include<cmath> 3 #include<cstdio> 4 #include<algorithm> 5 #define max(a,b) (((a)>(b))?(a):(b)) 6 #define min(a,b) (((a)>(b))?(b):(a)) 7 #define sign(x) ((x)>eps?1:((x)< 阅读全文
posted @ 2012-09-14 19:39 tmeteorj 阅读(217) 评论(0) 推荐(0)
 
POJ 3680
摘要: 题意:给定n个带权开区间,选择其中一些使得权值最大并且区间重叠层数不超过k。题解:最小费用流,区间有两百个,可以用左边的点发出一条到右边的点的边,容量为1,费用为负的权值。然后从左往右将依次将相邻的两个点都连起来,权值为0,容量为k,也就是说,如果选了这个区间,就会从费用为负数的边流过去,否则,就是从这个费用为0的边流过去。然后建立一个虚拟源点与最左边的点相连,权值为0,容量为k,这样就保证了重叠数之多为k,因为增广路上所经过的区间必定是不重合的,而流量只有k,所以满足题意。View Code 1 #include<cstdio> 2 #include<cstring> 阅读全文
posted @ 2012-09-14 19:18 tmeteorj 阅读(1329) 评论(0) 推荐(0)
 
 

公告


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