FJUT 倒水(倒水问题)题解】的更多相关文章

题意:开学了, fold拿着两个无刻度, 容量分别是5L和7L的量筒来问Anxdada, 说水是无限的, 并且可以无限次将杯子装满或者清空, 那怎么用这个两个量筒倒出恰好4L水了? 我说简单啊, 先装满7L的量筒, 倒给5L的量筒, 然后7L的还剩2L, 接着把2L的倒进5L的量筒内, 然后再装满7L的量筒, 再倒满5L的量筒, 此时7L的量筒内就恰好剩4L啦. fold又说, 那我任意指定两个量筒的容量和一直最终要得到的容量, 你知道怎么倒吗? 这个就难到Anxdada了, 请你帮帮他! 为了…
题意非常简单易懂,对于涨姿势0,数据非常小,比较容易想到的是直接循环暴力解题完成任务.把数据放入数组arr,循环i,j控制所有区间算和.结果记入vis. 到了涨姿势1,2,3,我们观察数据变化,发现数据变大,0的姿势就会超时.这是我们可以用前缀数组和处理.用sum[i]表示0~i项的和,那么区间i~j的和就可以用sum[j]-sum[i]直接运算得出.而sum数组可以在输入时就处理获得,避免了获得i~j时每次计算一次和造成的时间消耗. 构建sum数组 预处理,ans计数. 到了涨姿势2,去掉了每…
题目链接http://120.78.128.11/Contest.jsp?cid=18 题面不贴了 都是英文题,看的我心力憔悴 =7= 一.Ugly Numbers 题目说一个数的质因数只包含2.3或者5(一个或多个),就是丑陋数.拜托,为啥这些数就丑陋了.然后题目特别说明第一个丑陋数是1 题目多组数据输入到0为止,然后输出第n个丑陋数. 解题思路就是对于一个丑陋数k,那么一定有2*k.3*k和5*k也是丑陋数,所以按照这个思路入队模拟打表即可 值得注意的是,对于2*k1来说可能和 3*k2重复…
数据结构和算法专栏,我会什么写什么  = = 不定时更新 一.数据结构 树状数组详解 线段树详解 二.算法 KMP算法 三.板子 我的代码模板 大整数模板 四.题解报告 几道STL题目(FJUT - OJ STL训练1) FJUT - OJ优先队列专题题解 搜索专题题解(FJUT - OJ 17级搜索强化训练) [kuangbin带你飞]专题一 简单搜索 题解报告 [kuangbin带你飞]专题十六 KMP & 扩展KMP & Manacher 题解报告…
[问题描述] 有两个无刻度标志的水壶,分别可装x升和y升 ( x,y 为整数且均不大于100)的水.设另有一水缸,可用来向水壶灌水或接从水壶中倒出的水, 两水壶间,水也可以相互倾倒.已知x升壶为空壶, y升壶为空壶.问如何通过倒水或灌水操作, 用最少步数能在x或y升的壶中量出 z(z ≤ 100)升的水来. [样例输入] 3 22 1 [样例输出] 14 [解题思路] 看到求最少步数,马上想到用广度优先搜索,那么问题在于如何展开?要不要剪枝?其实,这道题是不需要任何剪枝的,只要判重就行了,那么关…
题目 分析 这个题并不难,只是需要仔细思考我们首先可以很轻松的把这个题给疏通一下题意. 1:首先我们最后每个瓶子中装的水一定是一个$2^x$,因为每次都是$2$倍的加,这个应该很好理解. 2:我们要明白$n$转换成二进制后,所含$1$的个数是什么意思,可以从二进制的定义里面找,个数即是每个数如果分成多个二进制数的话,所需的二进制数的个数. 3:其次我们明白这剩下的$k$个瓶子代表什么意思,它代表着当前的水量(即$n$)转变成二进制后该数的1的数目一定要$<=k$ 为什么呢,我们想一下,如果该数目…
来水一发水题.. 题目链接. 正解开始: 首先,我们根据题意,可以得知这是一个有关二进制的题目: 具体什么关系,怎么做,我们来具体分析: 对于每个n,我们尝试将其二进制分解,也就是100101之类的形式 根据瓶子合并的特性,我们可以判定最后每一个瓶子内的水都可以表示成2^i的形式 感性理解:对于每一个数位上为1的地方,自然,他可以经过多次合并(瓶子加水)来合成,因为每个瓶子内的水都可以表示成2^i的形式,也就对应着n二进制分解上的一个1. 说白了就是从开始的那一堆瓶子里面进行合成,最后在不加瓶子…
题目传送门 /* BFS:倒水问题,当C是奇数时无解.一共有六种情况,只要条件符合就入队,我在当该状态vised时写了continue 结果找了半天才发现bug,泪流满面....(网上找份好看的题解都难啊) */ /************************************************ Author :Running_Time Created Time :2015-8-4 10:54:16 File Name :HDOJ_1495.cpp ***************…
http://acm.hdu.edu.cn/showproblem.php?pid=1495 题解: 1.最少次数?江湖套路,bfs.2.怎么倒?从一个杯子倒到另一个杯子.3.倒多少?因为没有刻度,所以是将自己的水倒完 或者 将别人的未填满部分 填充完.4.为什么可以这样倒?因为起始水量和杯子容量都知道,倒水后两边的水量都是已知的,倒水量也是已知的. #include<stdio.h> #include<iostream> #include<algorithm> #in…
推了一个多小时的式子,ac后一看题解,7行代码搞定 emmmm我还是太菜了 传送 蒟蒻解法: 不管怎么倒水,最终所有瓶子里面的水的数量一定可以用2k表示出来. n最终可以合并成几个瓶子呢? 我们可以把n分解为多个2k相加的形式,例如:13=23+22+20,所以13最少合并到3个瓶子里面 求n最少能合并到几个瓶子里面,正是看n的二进制表示里面有多少个1 如果1的数量cnt小于等于k,则直接输出0. 否则:从第一个是1的位置+1开始,扫到cnt-k+1个1的位置,中间如果是0,ans就加上2是0的…