砝码

和空姐同居的日子(九)

≯℡__Kan透↙ 提交于 2020-03-28 11:49:45
29. 淑女乐乐 一大早被人吵醒是最让人不高兴的事情,但是偏偏总让我遇到,冉静这丫头的耐心每次都比我好,因为最后起来开门的总是我。   打开门,一个很漂亮的女孩站在门外,这让我感到很意外,我原本以为又是一些调查或者推销的人(不要说我有个人偏见,我确实认为美女不适合做上门推销或者调查问卷的工作,原因是太不安全)。同样的,这个女孩也以非常惊奇的眼光看着我,我低头查看了一下自己的衣着,穿戴还算比较整齐。   “请问,冉静住在这里吗?”女孩试探性地问我。我想美女也应该是找冉静的,我基本上没有这种福气。   “对,她住在这。”“哦,那你是……”“我,我是她的室友。”“室友?你们住在一起啊?”“对啊,有什么问题吗?”“没什么,她在家吗?”“应该在吧,”我一边请女孩进来,一边冲着冉静的房间喊道,“丫头,有人找,快点起床。”女孩也许没有料到会有我这样一个男人和冉静住在一起,所以自从进来之后就有些拘束。冉静还没出来,我只好暂时负责起招待她的责任。等我帮女孩拿了饮料又有话没话地随便寒暄了两句,冉静才穿着睡衣从房间里出来。   “乐乐,你来了。”冉静看见女孩一点没有特别的表情,看来两人是约定好了的。   “哎,你过来,”叫乐乐的女孩把冉静拉到身边,小声地说道,“你怎么和个男的一起住啊?”“他?”冉静的声音可一点都不小,指着我说道,“没关系的,他是个很好很好的人,没有杀伤力的。”“喂,什么叫没有杀伤力啊?

BZOJ 1110: [POI2007]砝码Odw

谁说胖子不能爱 提交于 2020-01-21 11:50:31
看了题解,发现是用进制转换来做。这种题不看题解谁会想到用进制转换这种冷门东西??? 知道是进制转换就很容易了,就变成了一道贪心+模拟题。 首先,进制是a[1],a[2],a[3],…a[n],然后将所有容器体积都加入,可以得到一个(会变的)进制数:xxxxxxx…xxxxx。 考虑到只需要求有几个砝码能够被装下,而不用求利用率,所以是道贪心,从小到大进行放置显然优秀。于是我们就从小到大放置砝码,这在程序上体现就是不停地将这个(会变的)进制数减小,如果某一位变为了0,那么就向比它高的位借位;如果到某一个砝码减不下去了,就说明放置的砝码数量达到最大了。 这也就是为什么砝码重量一定是整数倍的原因了,如果不是整数倍,借位的时候的余数是不能处理的,有可能几次下来余数的总和又可以放置一个新的砝码了,所以不能忽略;而如果不忽略的话,又该如何处理呢?所以如果要用进制转换来做,就需要砝码重量是整数倍。 # include <bits/stdc++.h> using namespace std ; const int N = 1e5 + 5 ; int n , m , tot , ans ; int a [ N ] , b [ N ] , c [ N ] , bb [ N ] , f [ N ] ; int main ( ) { scanf ( "%d%d" , & n , & m ) ; for (

称砝码

耗尽温柔 提交于 2020-01-10 14:54:48
//称砝码 int main() { int n; cin >> n; int max_wight = 0; vector<int> nums(n), wights(n); for (int i = 0; i < n; i++) cin >> wights[i]; for (int i = 0; i < n; i++) { cin >> nums[i]; max_wight += wights[i] * nums[i]; //求最大可称重的值 } //set内是可以称重的值,元素互斥单调增 set<int> s; s.insert(max_wight); //进行n次循环; //对于第i次循环,将set中元素从小到大依次取出, //减去k * wights[i],表示少使用k个质量为wights[i]的砝码 //也可以作为可称重的值;只要这个值是大于0的即可。 for (int i = 0; i < n; i++) { set<int>::iterator iter = s.begin(); while (iter != s.end()) { for (int k = 1; k <= nums[i] && *iter - k * wights[i] > 0; k++) s.insert(*iter - k * wights[i]); iter++; } } s.insert(0);

砝码破碎

人盡茶涼 提交于 2019-12-06 06:49:49
一位商人有一个天平,一个40磅的砝码由于跌落在地上而碎成4块.后来,称得每块碎片的重量都是整磅数,而且可以用这4块来称量1—40磅之间的任意整数磅.问这4块碎片分别各重多少磅? 答: 1,3,9,27 1,3,9 可以解决 1~13中任意重量 27 +/- 13 刚好可以解决 14~40 的重量 貌似是这个规律: 3 0 ,3 1 ,3 2 ,3 3 ,3 4 ,3 5 , 不敢保证这个逻辑是对的。 来源: https://www.cnblogs.com/qiupiaohujie/p/11966738.html

逻辑 训练

白昼怎懂夜的黑 提交于 2019-12-05 08:33:20
a. 你让工人为你工作7天,给工人的回报是一根金条。金条平分成相连的7段,你必须在每天结束时给他们一段金条,如果只许你两次把金条弄断,你如何给你的工人付费?   答案:第一天给1段,第二天让工人把1段归还后再给他给2段,第三天给1段,第四天让工人归还1、2段,给4段。第五天依次类推…… 请把一盒蛋糕切成8份,分给8个人,但蛋糕盒里还必须留有一份。   答案:面对这样的怪题,有些应聘者绞尽脑汁也无法分成;而有些应聘者却感到此题实际很简单,把切成的8份蛋糕先拿出7份分给7人,剩下的1份连蛋糕盒一起分给第8个人。 b. 小明一家过一座桥,过桥时是黑夜,所以必须有灯。现在小明过桥要1秒,小明的弟弟要3秒,小明的爸爸要6秒,小明的妈妈要8秒,小明的爷爷要12秒。每次此桥最多可过两人,而过桥的速度依过桥最慢者而定,而且灯在点燃后30秒就会熄灭。问:小明一家如何过桥?   答案:这类智力题目,其实是考察应聘者在限制条件下解决问题的能力。具体到这道题目来说,很多人往往认为应该由小明持灯来来去去,这样最节省时间,但最后却怎么也凑不出解决方案。但是换个思路,我们根据具体情况来决定谁持灯来去,只要稍稍做些变动即可:第一步,小明与弟弟过桥,小明回来,耗时4秒;第二步,小明与爸爸过河,弟弟回来,耗时9秒;第三步,妈妈与爷爷过河,小明回来,耗时13秒;最后,小明与弟弟过河(不用回来了),耗时3秒

P5194 [USACO05DEC]Scales 天平

只愿长相守 提交于 2019-12-04 04:26:52
题目描述 约翰有一架用来称牛的体重的天平。与之配套的是 N ( 1 ≤ N ≤ 1 0 0 0 )个已知质量的砝码(所有砝码质量的数值都在32位带符号整数范围内)。 每次称牛时,他都把某头奶牛安置在天平的某一边,然后往天平另一边加砝码,直到天平平衡,于是此时砝码的总质量就是牛的质量(约翰不能把砝码放到奶牛的那边,因为奶牛不喜欢称体重,每当约翰把砝码放到她的蹄子底下,她就会尝试把砝码踢到约翰脸上)。 天平能承受的物体的质量不是无限的,当天平某一边物体的质量大于 C ( 1 ≤ C ≤ 2^ 3 0 )时,天平就会被损坏。砝码按照它们质量的大小被排成一行。并且,这一行中从第3个砝码开始,每个砝码的质量至少等于前面两个砝码(也就是质量比它小的砝码中质量最大的两个)的质量的和。 约翰想知道,用他所拥有的这些砝码以及这架天平,能称出的质量最大是多少。由于天平的最大承重能力为 C ,他不能把所有砝码都放到天平上。 现在约翰告诉你每个砝码的质量,以及天平能承受的最大质量,你的任务是选出一些砝码,使它们的质量和在不压坏天平的前提下是所有组合中最大的。 输入格式 第1行输入两个用空格隔开的正整数 N 和 C 。 第2到 N+1 行:每一行仅包含一个正整数,即某个砝码的质量。保证这些砝码的质量是一个不下降序列。 输出格式 输出一个正整数,表示用所给的砝码能称出的不压坏天平的最大质量。 输入输出样例

洛谷 P2347 砝码称重

戏子无情 提交于 2019-12-04 02:16:42
洛谷OJ一家独大之后,中小学生蜂拥而进访问该站点,现在洛谷OJ也是越来越卡了…… 题目链接: https://www.luogu.org/problem/P2347 题目Description 设有1g、2g、3g、5g、10g、20g的砝码各若干枚(其总重<=1000), 要求: 输入方式: a1 a2 a3 a4 a5 a6 (表示1g砝码有a1个,2g砝码有a2个,…,20g砝码有a6个) 输出方式: T o t a l = N (N表示用这些砝码能称出的不同重量的个数,但不包括一个砝码也不用的情况) Sample Input 1 1 0 0 0 0 (注:下划线表示空格) Sample Output T o t a l = 3 表示可以称出1g,2g,3g三种不同的重量。 解题思路(题解来源 https://blog.csdn.net/qq_39897867/article/details/78820446 ) 这是一道多重方案数的动态规划,比较容易,直接枚举,可以用ans累加求解。 1 #include<cstdio> 2 using namespace std; 3 int n[7],w[7]={0,1,2,3,5,10,20},maxn,ans=0; 4 bool f[100006]; 5 int main(){ 6 scanf("%d%d%d%d%d%d",&n[1

母函数学习记录

只谈情不闲聊 提交于 2019-12-03 15:55:32
母函数 普通母函数 普通母函数-吧组合问题的加法和幂级数的乘幂结合起来。 幂级数的乘积存在指数上的加法。 例子: 我们有1, 2, 3, 4克的砝码各一个。 对于这四个砝码的选择,第一个有选和不选,第二个有选和不选,第三个第四个同理。 我们可以用数学式子表示。 \((x^0+x^1)*(x^0+x^2)*(x^0+x^3)*(x^0+x^4)\) 展开可得 \(x^0+x^1+x^2+2*x^3+2*x^4+2*x^5+2*x^6+x*x^7+x^8+x^9+x^10\) 其中系数为构造出来的种类数,指数为构造出的和,因为幂级数的乘法,是指数相加,可以把乘法转化为加法。 这样就变成了逻辑式。每个砝码有选和不选。每种情况的贡献累积到展开式中。 数量不定的方程为 \((x^0+x^1+..+x^m)*(x^0+x^1+..+x^n)\) 来源: https://www.cnblogs.com/YDDDD/p/11802848.html

P1441 砝码称重

笑着哭i 提交于 2019-12-03 15:22:08
题目描述 现有n个砝码,重量分别为a1,a2,a3,……,an,在去掉m个砝码后,问最多能称量出多少不同的重量(不包括0)。 请注意,砝码只能放在其中一边。 输入格式 输入文件weight.in的第1行为有两个整数n和m,用空格分隔 第2行有n个正整数a1,a2,a3,……,an,表示每个砝码的重量。 输出格式 输出文件weight.out仅包括1个整数,为最多能称量出的重量数量。 输入输出样例 输入 #1 3 1 1 2 2 输出 #1 3 说明/提示 【样例说明】 在去掉一个重量为2的砝码后,能称量出1,2,3共3种重量。 【数据规模】 对于20%的数据,m=0; 对于50%的数据,m≤1; 对于50%的数据,n≤10; 对于100%的数据,n≤20,m≤4,m<n,ai≤100。 思路 代码 #include<cmath> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; const int N=2010; int a[N]; bool tf[N],f[N]; int n,m,ans,tot,ret; void dp() { memset(f,false,sizeof(f)); f[0]=true; ans=tot=0; for(int

笔试题: 有26个体积相等的砝码,其中25个质量相等,其余一个超重,存在一个天平,那么至少称多少次能找到超重的砝码

て烟熏妆下的殇ゞ 提交于 2019-11-28 10:09:40
笔试题遇到,题目: 在此有26个体积相等的砝码,其中25个质量相等,其余一个超重,存在一个天平,那么至少称多少次能找到超重的砝码。 但是这道题,我用的是第一种直接写上去了,但是旁边的工作人员告诉我我凉了,emmmmm 第一种思路 1、先平均分为两组,然后一组组的进行比较,如下图(PS:图中第四步应该是分为1,1,1进行比较) 2、关于次数 ①至少要2次,但是运气爆棚。 ②最多4次就可以比出来 第二种思路 将砝码四分,26个分别分为数量为6,6,7,7的进行比较,如下图: 2、关于次数 这么比较只需要比较3次就能比较出来。 第三种情况(最后一个砝码轻重未知) 参考一个博客,它将在未知这个砝码轻重时分成三等分进行比较 我们需要的是找到平衡点,找到特殊的那个在哪堆中,三堆若两堆质量相等,则特殊的一定在剩下的那堆中。 来源: CSDN 作者: 98年的秃头老阿姨 链接: https://blog.csdn.net/weixin_42485077/article/details/103243735