天平

7-22 用天平找小球

六眼飞鱼酱① 提交于 2019-12-12 12:43:33
1 #include <stdio.h> 2 3 int main(void) 4 { 5 int a, b, c; 6 char other; 7 8 scanf("%d %d %d", &a, &b, &c); 9 10 if (a == b) 11 { 12 other = 'C'; 13 } 14 15 if (a == c) 16 { 17 other = 'B'; 18 } 19 20 if (b == c) 21 { 22 other = 'A'; 23 } 24 25 putchar(other); 26 27 return 0; 28 } 来源: https://www.cnblogs.com/2018jason/p/12027855.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 行:每一行仅包含一个正整数,即某个砝码的质量。保证这些砝码的质量是一个不下降序列。 输出格式 输出一个正整数,表示用所给的砝码能称出的不压坏天平的最大质量。 输入输出样例

[bzoj1077]天平

我怕爱的太早我们不能终老 提交于 2019-12-03 13:49:05
先考虑如何求出任意两数的最大差值和最小差值,直接差分约束建图跑floyd求最短路和最长路即可 然后枚举i和j,考虑dA+dB和di+dj的关系,分两种情况移项,转化成dA-di和dj-dB的关系或dA-dj和di-dB的关系(只要有一个关系确定即确定)即可考虑(由于不等式都是两个变量,因此一定无法形成dA-dj和dB-di的固定关系) 1 #include<bits/stdc++.h> 2 using namespace std; 3 int n,x,y,c1,c2,c3,mx[105][105],mn[105][105]; 4 char s[105]; 5 int main(){ 6 scanf("%d%d%d",&n,&x,&y); 7 x--; 8 y--; 9 for(int i=0;i<n;i++){ 10 scanf("%s",s); 11 for(int j=0;j<n;j++){ 12 mx[i][j]=2; 13 mn[i][j]=-2; 14 if (s[j]=='+')mn[i][j]=1; 15 if (s[j]=='-')mx[i][j]=-1; 16 if ((i==j)||(s[j]=='='))mx[i][j]=mn[i][j]=0; 17 } 18 } 19 for(int i=0;i<n;i++) 20 for(int j=0;j<n;j++)

Uva 839 天平问题

点点圈 提交于 2019-12-02 06:45:32
题目描述: Before being an ubiquous communications gadget, a mobilewas just a structure made of strings and wires suspendingcolourfull things. This kind of mobile is usually found hangingover cradles of small babies.The figure illustrates a simple mobile. It is just a wire,suspended by a string, with an object on each side. It canalso be seen as a kind of lever with the fulcrum on the point where the string ties the wire. From thelever principle we know that to balance a simple mobile the product of the weight of the objects bytheir distance to the fulcrum must be equal. That is Wl × Dl = Wr × Dr

又是一年的1024程序员节

混江龙づ霸主 提交于 2019-12-02 05:52:46
1024 给大家分享一个工具集网站 http://sakura.ys168.com/ 顺便记录个笔试中的智力题吧 在12个球中找出一个质量不一样的来。有12个外观一致的小球,其中只有一个小球与其他的小球质量不同(不知道是多是少),怎么用一个天平称三次把这个不一样的小球找出来? 首先你得告诉我一个前提,这个球是比其他重还是比其他轻,现在 假设 它比其他球 重 。 第一种方法: 过程如下: 第一次,把十二颗球分为两堆,天平左右各六颗,天平重的那边拿出来。 第二次,把天平重的那边六个球再分为两堆,天平左右各三个,天平重的那边拿出来。 第三次,把天平重的那边三个球拿出两个,天平左右各一个,如果天平平衡,那么剩下的球就是不一样的球,如果天平不平衡,重的那边就是不一样的球。 反之 ,这个球比其他球轻,证明过程一样。 第二种方法: 过程如下: 1.把十二个球分成三组(1,2,3,4)(a,b,c,d)(A,B,C,D) 2.取(1,2,3,4)和(a,b,c,d)分别放在天秤左、右两端.(第一次称)   (1)如果天秤 平衡 :     1. 则说明(A,B,C,D)中包含待找出的球.     2.从中(A,B,C,D)取 3个球 (如A、B、C)和从前两组 正常球任意取三个球 分别放在天秤两端.(第二次称)       如果天秤 平衡 :         则说明D为我们要找的球

Google研发面试题

試著忘記壹切 提交于 2019-12-02 03:57:12
今天很开心找到了一个很不错的研发面试题,很考验临时反应能力,特地拿出来和大家分享一下此题以及自己做该题的心得体会!!! 题目: 总共有12个外表都一样的金属球,其中有11个球的重量是相同的,1个球的重量可能比其他11个球要重,也可能比较其他11个球轻,这个球称之为异常球,问:如何利用一个天平来称重三次找出这个异常球? 下面来讲解我的思路,希望大家拿出笔和纸。 首先我们将12个球分为三份,将球依次排好序号为1-12,如下: A组选手:1,2,3,4 B组选手:5,6,7,8 C组选手:9,10,11,12 任意拿出两组放在天平两边,下面我们就以拿出 A , B 比较。 【1】如果 A == B ,因为只有1个异常球,而 A == B ,则说明 C组(9,10,11,12) 异常球:   紧接着从 C组 (异常组中)取出3个球,从正常组 A 或者 B 组中也取出3个球来进行比较,例如我们取出 B组6,7,8 【左边】 vs C组9,10,11 【右边】    如果天平平衡 ,则C组剩下的球就为异常球, 这样就比较2次;    如果天平不平衡, 那就知道了异常球是重还是轻,     那就从右边的三个球中再任取两个,放入天平中:        如果天平平衡 ,剩下的球即为异常球; 这样就比较2次        如果不平衡 ,则可根据上面已经得出的结论

假币问题

孤街醉人 提交于 2019-11-30 12:37:32
Description: 居然有假币!!! 事情是这样的,现在猪肉涨了,但是农民的工资却不见涨啊,没钱怎么买猪肉啊。老王这就去买猪肉,结果找来的零钱中有假币!!!可惜老王一不小心把它混进了一堆真币里面去了。现在知道假币的重量比真币的质量要轻。给你一个天平,请用最快的时间把那个可恶的假币找出来。 Input: 输入有多行,每一行的值为硬币的数目n,1≤n≤2^30,输入0结束程序 Output: 最少要称多少次一定能把那个假币找出来。输出对应输入行数。 Sample Input Copy: 3 12 0 Sample Output Copy: 1 3 HINT 示例1中共有3枚硬币,所以任意取2个放天平上称量一下。 因为假币的重量比较轻。 如果天平不平衡,则较轻的那枚就是假币。 如果天平平衡,则说明这两枚硬币都是真的,而剩下那枚是假币。 题解:假设我们现在只有三枚硬币,那么我们分成三分A , B, C 1.若 A == B ,则 C 是假币 2.若 A < B , 则 A 是假币 3.若A > B , 则 B 是假币 则推出一个结论: f(3) = 1 --- > 继续推广 f( 9 ) = ? 现在分成 3A, 3B, 3C 三部分 1.若 3A == 3B ,则在 3C中查找,现在继续把 3C 分成 3 部分 AA, BB , CC 三部分 (1).若 AA == BB ,则

【SCOI2008】天平 [差分约束 floyd]

自古美人都是妖i 提交于 2019-11-29 21:30:43
SCOI2008 天平 bzoj1077 luogu2447 用floyd跑差分约束== 因为砝码大小只有1、2、3 所以未知时最大差值为2 最小差值为-2 由 \(A+B>C+D\) 可以转为 \(A-C>D-B\) 然后就挨个判断就好了 注意判断等于时的条件 #include<bits/stdc++.h> using namespace std; #define Max(x,y) ((x)>(y)?(x):(y)) #define Min(x,y) ((x)<(y)?(x):(y)) const int N=50+10,M=1e6+10,inf=0x3f3f3f3f; int n,A,B,c1,c2,c3,mx[N][N],mn[N][N]; char opt[N]; int main(){ freopen("in.txt","r",stdin); scanf("%d%d%d",&n,&A,&B); for(int i=1;i<=n;++i){ scanf("%s",opt+1);mx[i][i]=mn[i][i]=0; for(int j=1;j<=n;++j) if(j!=i){ if(opt[j]=='-') mn[i][j]=-2,mx[i][j]=-1; else if(opt[j]=='+') mn[i][j]=1,mx[i][j]=2; else if(opt[j