2017.12.03

2017.12.03

贪心

1.金银岛

思路:既然每一种金属都是可以任意切割的,那么就可以先求出每一种金属的单位价值,把它进行排序,从单位价值最大的开始装起,只要背包还有空间就全部装进背包,如果装不完就把剩下的空间全部装这种物体。

for(i=1;i<=s;i++){
	scanf("%lf%lf",&gold[i][1],&gold[i][2]);
	gold[i][3]=gold[i][2]/gold[i][1];
}
for(i=1;i<s;i++){
	int sortmax=i;
	for(j=i+1;j<=s;j++){
		if(gold[sortmax][3]<gold[j][3])
			sortmax=j;
	}
	if(sortmax!=i){
		double t;
		t=gold[i][1];gold[i][1]=gold[sortmax][1];gold[sortmax][1]=t;
		t=gold[i][2];gold[i][2]=gold[sortmax][2];gold[sortmax][2]=t;
		t=gold[i][3];gold[i][3]=gold[sortmax][3];gold[sortmax][3]=t;
	}
}
for(i=1;i<=s&&w>0;i++){
	if(w>=gold[i][1]){
		w-=gold[i][1];
		max+=gold[i][2];
	}
	else if(w<gold[i][1]){
		max+=gold[i][3]*w;
		w=0;
	}
}
printf("%.2f\n",max);

状态:AC

2.An easy problem

思路:要求最小的与题中所给的数I转换成为二进制后所含‘1’的数目相同,就可以先用一个常量保存I的含‘1’值,从I+1开始,每次都判断一下它的含‘1’数量是否和I相等,就可以求出最小的数。

核心代码:

int wen(int k){
	int one=0;
	while(k){
		if(k%2==1)one++;
		k/=2;
	}
	return one;
}

状态:AC

3.Ride to Office

思路:首先他如果是一定要跟一个人,那么在他以前出发的人就可以不再考虑。再输入完后就可以去掉。再者,既然他会总是不断跟着最快的人,可以直接扫一遍,选出时间最短的那个人,它所用的时间就是那个人所用的时间。

核心代码:

for(int i=1;i<=n;i++){
	scanf("%lf%lf",&v,&t);
		if(t>=0){
			m=4.5/v*3600+t;
			if(m<minn)minn=m;
		}
	}
printf("%d\n",int(minn+0.99));

状态:AC

4.书架

思路:既然要用最少的牛数,那每第i次选择,肯定要选剩下的牛中最高的。即扫一遍排序后从大的选起。与金银岛类似。

状态:AC

5.装箱问题

思路:从最大的6*6箱子装起,先装大的,再装小的(在一个大箱子里也遵循这个原理)。可以画图来模拟一下,特别要注意3*3箱子是有多种方法放置的。最后用can1,can2来表示可以装1*1,2*2箱子的数量。

核心代码:

if (a3>0){
	sum++;
	if (a3==1) {
		can1+=7;
		can2+=5;
	}
	else if (a3==2) {
		can1+=6;
		can2+=3;
	}
	else {
		can1+=5;
		can2+=1;
	}
}

状态:未AC 已听懂

时间: 2024-10-29 19:11:53

2017.12.03的相关文章

2017.12.17

2017.12.03 贪心,分治综合习题(1) 1. 2的幂次方表示 思路:本题很容易就想到用递归做.对于2的一次和二次,可以直接打表输出,而且题中所给的数据不大,N<20000,可以预处理把21到215储存在一个数组里,以后好比较.然后就贪心调用函数,把k每次从大到小比较,用s记数,输出括号,进行下一次递归.需要注意的是,在递归中,2的零次幂和2的一次幂是要单独特殊判断的. 核心代码: if(k==0){ printf("0"); return; } else if(k==1)

java一周学习记录(2017/12/2)

姓名:Danny                               日期:2017/12/2 任务 日期 听课 编程程序 阅读课本 准备考试 考试 周六加课 日统计 周日 周一 30 120 150 周二 50 140 190 周三 150 150 150 周四 180 180 周五 100 180 280 周六 480 480

2017.12.02【NOIP提高组】模拟赛A组

2017.12.02[NOIP提高组]模拟赛A组 T1 3555[GDKOI2014模拟]树的直径 T2 3542[清华集训2014]冒泡排序 T3 3486[NOIP2013模拟联考10]道路改建(rebuild) T1 树直径的一个性质,两棵树合并,形成新的树的直径的两个端点为原树中的四个端点之二. 可以用反证法证明.用此性质本题就变成了lca裸题了 Code #include<cstdio> #include<cstring> #include<cmath> #i

2017.12.09【NOIP提高组】模拟赛A组

2017.12.09[NOIP提高组]模拟赛A组 T1 3489. [NOIP2013模拟联考11]数列的GCD(gcd) T2 3500.[NOIP2013模拟联考15]物语(monogatari) T3 3501.[NOIP2013模拟联考15]消息传递(news) 吐槽:这次的题好像有点水啊,但最简单的第二题都给打挂啦!!(数组开小了) T1 本套题中最难的题.考虑dp 设f[i]是b[1],b[2]...b[N]的最大公约数的数目,g[i]是b[1],b[2]...b[N]的公约数的数目

2017.12.12 每日黑科技

[碧桂园信管中心] [资讯与趋势] 1.WISE2017新商业大会开幕? 新商业公司的特点则是创新带来的高成长,并不断突破边界.融合创新,比如出行的滴滴,吃饭的美团.做智能手机的小米,信息阅读的今日头条,这些公司不仅快速改变了我们的生活,而且都是在几年内就成长为百亿美金估值的公司.关注新商业大会. http://36kr.com/p/5107584.html 2.<企业家>杂志最佳作者: 2018 年 18 个值得观测的营销趋势 市场营销趋势正在发生急剧改变,它几乎影响着每个公司.要想使你的公

2017.12.18 2周1次课

2017.12.18 二周第一次课 2.6 相对和绝对路径 什么是一个文件的路径呢 简单地说,就是这个文件存放的地方.只要你告诉系统某个文件的路径,系统就可以找到这个文件 Linux中,存在着绝对路径和相对路径. 绝对路径:路径一定是由根目录"/"开头的,不管在哪个目录下,都能通过绝对路径找到这个文件. 相对路径 :是你所在位置的路径,以当前目录开头的. 查看当前目录的路径,使用命令[pwd] ".ssh/authorized_keys"就是相对路径,相对"

2017.12.19 2周2次课

2017.12.19二周第二次课 2.10 环境变量PATH echo用来输出PATH的值.PATH前面的$是变量的前缀符号 1.你的命令在上述几个目录里面,在输入命令时就不用输入绝对路径,直接使用.因为在输入命令时,系统会在上述的几个目录里去寻找这个命令.当然也可以输入绝对路径 Copy命令[ls]到目录tmp下,并改名[ls2],二者实现的功能一样 直接输入命令[ls2],确不行.因为命令[ls2]不在"/usr/local/sbin:/usr/local/bin:/usr/sbin:/us

2017.12.20 Python 文件I/O

2017.12.20 Python 文件I/O 1.open参数及Character作用 open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True) ========= ===============================================================Character Meaning--------- ------------

2017.12.20 2周3次课

2017.12.20 二周第三次课 2.14 文件和目录权限chmod 命令chmod( change mode的简写 )用于改变用户对文件/目录的读写执行权限 其格式为:chmod [-R] xyz文件名(这里的xyz表示数字).其中,·-R选项的作用等同于chown命令的一R选项,也表示级联更改. 属性的含义: [r]:读 : [w]:写: [x]:执行: [-]:不可以: 值得注意的是,在Linux系统中,一个目录的默认权限为755,而一个文件的默认权限为644. 为了方便更改文件的权限,