07 day 2

又是惨烈的一天

第一题

多重背包。二进制拆分即可。

#include <stdio.h>
#define max(a,b) ((a)>(b)?(a):(b))
int n,m,i,j,k,l,a,b;
int d[11][11];
//  s: time  w: value
int s[10000],w[10000],pn,f[1000000];
int main(){
	freopen("medic.in","r",stdin);
	freopen("medic.out","w",stdout);
	scanf("%d%d",&n,&m);
	for(i=0;i<n;++i){
		scanf("%d%d",&a,&b);
		++d[a][b];
	}
	for(i=1;i<11;++i){
		for(j=1;j<=11;++j){
			k=1;
			while(d[i][j]){
				if(d[i][j]>k){
					s[pn]=i*k,w[pn]=j*k,++pn;
					d[i][j]-=k;
					k<<=1;
				}else{
					s[pn]=i*d[i][j],w[pn]=j*d[i][j],++pn;
					d[i][j]=0;
				}
			}
		}
	}
	for(i=0;i<pn;++i){
		for(j=m;j>=s[i];--j){
			f[j]=max(f[j],f[j-s[i]]+w[i]);
		}
	}
	printf("%d\n", f[m]);
    return 0;
}

第二题

先将数读入为素因子里2和5分别的个数,然后求出一路乘到底最少的2和5的个数,取其小者。

(DP)

#include <cstdio>
#define min(a,b) ((a)<(b)?(a):(b))
int m,n,i,j,k,f2[2000][2000],f5[2000][2000],fmin[2000][2000],d2[2000][2000],d5[2000][2000],t;
inline int countbit(int n){
	t=0;
	while(!(k&1)) k>>=1,++t;
	return t;
}
inline int countf(int n){
	t=0;
	while(!(k%5)) k/=5,++t;
	return t;
}
int main(){
	freopen("matrix.in","r",stdin);
	freopen("matrix.out","w",stdout);
	scanf("%d%d",&n,&m);
	for(i=0;i<n;++i){
		for(j=0;j<m;++j){
			scanf("%d",&k);
			d2[i][j]=countbit(k);
			d5[i][j]=countf(k);
		//	printf("(2: %d | 5: %d) ",d2[i][j],d5[i][j]);
			if(!i){
				f2[i][j]=f2[i][j-1]+d2[i][j];
				f5[i][j]=f5[i][j-1]+d5[i][j];
			}else if(!j){
				f2[i][j]=f2[i-1][j]+d2[i][j];
				f5[i][j]=f5[i-1][j]+d5[i][j];
			}else{
				f2[i][j]=min(f2[i-1][j],f2[i][j-1])+d2[i][j];
				f5[i][j]=min(f5[i-1][j],f5[i][j-1])+d5[i][j];
			}
		}
		printf("\n");
	}
	printf("%d\n",min(f2[n-1][m-1],f5[n-1][m-1]));
	return 0;
}

第三题

递推。太懒不写。

时间: 2024-10-19 08:10:05

07 day 2的相关文章

百度房间卡是否可骄傲是快乐积分拉斯科

http://www.ebay.com/cln/ycn6646/-/167568259015/2015.02.07 http://www.ebay.com/cln/gon-n31/-/167197496017/2015.02.07 http://www.ebay.com/cln/hu_d027/-/167453250013/2015.02.07 http://www.ebay.com/cln/ywa2962/-/167301832012/2015.02.07 http://www.ebay.co

笔试算法题(07):还原后序遍历数组 &amp; 半翻转英文句段

出题:输入一个整数数组,判断该数组是否符合一个二元查找树的后序遍历(给定整数数组,判定其是否满足某二元查找树的后序遍历): 分析:利用后序遍历对应到二元查找树的性质(序列最后一个元素必定是根节点,从左向右第一个比根节点大的元素开始直到根节点之前的所有元素必定在右子树,之前的所有元素必定在左子树): 解题: 1 bool PostOrderCheck(int *array, int i, int j) { 2 /** 3 * 如快速排序一样,解决小子文件 4 * */ 5 if(j-i+1 ==

java进阶07 线程的让步与阻塞与同步

前面介绍了线程的一些基本知识,现在来说下线程的让步,阻塞,和同步 先说说让步 所谓让步,就是让调用者的线程暂停,让其他线程重新竞争CPU,包括调用者. 先看看代码 package Thread; public class ThreadYield { public static void main(String[] args){ MyThread5 rthread=new MyThread5(); Thread thread1=new Thread(rthread); Thread thread2

P1807 最长路_NOI导刊2010提高(07)

P1807 最长路_NOI导刊2010提高(07) 题目描述 设G为有n个顶点的有向无环图,G中各顶点的编号为1到n,且当为G中的一条边时有i < j.设w(i,j)为边的长度,请设计算法,计算图G中<1,n>间的最长路径. 输入输出格式 输入格式: 输入文件longest.in的第一行有两个整数n和m,表示有n个顶点和m条边,接下来m行中每行输入3个整数a,b,v(表示从a点到b点有条边,边的长度为v). 输出格式: 输出文件longest.out,一个整数,即1到n之间的最长路径.如

07:合影效果

07:合影效果 查看 提交 统计 提问 总时间限制:  1000ms 内存限制:  65536kB 描述 小云和朋友们去爬香山,为美丽的景色所陶醉,想合影留念.如果他们站成一排,男生全部在左(从拍照者的角度),并按照从矮到高的顺序从左到右排,女生全部在右,并按照从高到矮的顺序从左到右排,请问他们合影的效果是什么样的(所有人的身高都不同)? 输入 第一行是人数n(2 <= n <= 40,且至少有1个男生和1个女生).后面紧跟n行,每行输入一个人的性别(男male或女female)和身高(浮点数

U-BOOT-2016.07移植 (第一篇) 初步分析

U-BOOT-2016.07移植 (第一篇) 初步分析 目录 U-BOOT-201607移植 第一篇 初步分析 目录 编译和移植环境 更新交叉编译工具 1 下载arm-linux-gcc 443 2 安装arm-linux-gcc 443 安装环境Ubuntu 910 下载u-boot-201607并解压 分析顶层Makefile 1 找出目标依赖关系 2 总结 初次编译u-boot 1 配置 2 编译 分析u-boot启动流程 1 分析startS 2 分析crt0S 3 总结 1. 编译和移

【博客美化】07.添加打赏按钮

博客园美化相关文章目录: [博客美化]01.推荐和反对炫酷样式 [博客美化]02.公告栏显示个性化时间 [博客美化]03.分享按钮 [博客美化]04.自定义地址栏logo [博客美化]05.添加GitHub链接 [博客美化]06.添加QQ交谈链接 [博客美化]07.添加打赏按钮 1.添加打赏按钮 进入自己的博客园->设置,将以下html代码添加到“页首Html代码” <!--打赏 Start--> <script> window.tctipConfig = { staticP

个人冲刺07

个人冲刺07 一.任务:继续实现注册界面,完成注册时短信验证码回复的功能 二.预计时间:2天. 三.实际花费时间:5天(逾期3天). 四.自问自答三个问题: (1)昨天做了什么? 编程,一直在解决短信验证码回复功能的问题 (2)今天要做什么? 编程,继续解决短信验证码回复功能的问题 (3)遇到了什么问题 最终没有实现短信验证码回复功能 四.个人燃尽图

张珺 2015/07/13 个人文档

姓名 张珺 日期 2015/07/13 主要工作及心得 今天主要和任笑萱一起完成了对客户端中提供者的调试以及数据库的修改工作. 通过今天的调试工作,我对整个项目有了更深入的认识,对于用java编写客户端服务器程序的流程有了更进一步的了解. 遇到的问题 在今天的工作中,我们发现了之前构建数据库时未考虑到的一些问题,也发现了之前完成的任务中存在的一些错误. 最开始时无法登陆,服务器端不返回消息.次问题结局后,提供者界面中主要的问题主要在于对会员.服务编号进行验证时出现的问题,例如返回的信息不满足预期

数组-07. 求一批整数中出现最多的个位数字

数组-07. 求一批整数中出现最多的个位数字(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 徐镜春(浙江大学) 给定一批整数,分析每个整数的每一位数字,求出现次数最多的个位数字.例如给定3个整数1234.2345.3456,其中出现最多次数的数字是3和4,均出现了3次. 输入格式: 输入在第1行中给出正整数N(<=1000),在第2行中给出N个不超过整型范围的正整数,数字间以空格分隔. 输出格式: 在一行中按格式“M: