原文地址:http://blog.himdd.com/?p=2286题意: if the square root of the difference between the square of its distance to the center and the square of the radius is less than1.7320508075688772935274463415058723669428052538103806280558069794519330169088000370811461867572485756756261414154067030299699450949989 Read More
posted @ 2012-04-19 12:54 Muse牧马 Views(337) Comments(0) Diggs(0) Edit
原文地址:http://blog.ac521.org/?p=212题意:给你三个硬币在测试中出现正反面的个数。问在三个硬币都使用的前提下,通过每次选举不同的硬币,最终能否组成出现正反面概率相同的情况?思路:Yes的情况:1.三个出现正面的概率都为0.5;2.三个出现正面的概率都为有大于0.5的,也有小于0.5的;其它情况:No Read More
posted @ 2012-04-19 12:48 Muse牧马 Views(182) Comments(0) Diggs(0) Edit
http://blog.ac521.org/?p=209题意:给你一个N,K;然后又有K个数i;表示从1,2,3…N个数 经过K次操作,每次操作是去掉第i小的数。求所有去掉数的之和;思路:用线段树写的,具体看代码吧#include<iostream>#include<cstdio>using namespace std;const int maxn=272144;int tree[maxn<<2];int pos;void build(int l,int r, int rt){ tree[rt]=r-l+1; if(l==r) return ; int m Read More
posted @ 2012-04-19 12:45 Muse牧马 Views(163) Comments(0) Diggs(0) Edit
http://blog.ac521.org/?p=206题意:给你一个序列,求一个连续子序列,使这个连续子序列的和的绝对值最少,输出最小是多少。先求出每一个的前n项和,然后排序,找差值最小的就可以了。#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;int a[1000010];int main(){ int i,j,k,l,m,n,max,min; int T=1; scanf("%d",&n); while(n--) { m Read More
posted @ 2012-04-19 11:23 Muse牧马 Views(154) Comments(0) Diggs(0) Edit
题目描述:给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的。输入:输入n,m,点的编号是1~n,然后是m行,每行4个数 a,b,d,p,表示a和b之间有一条边,且其长度为d,花费为p。最后一行是两个数 s,t;起点s,终点t。n和m为0时输入结束。(1<n<=1000, 0<m<100000, s != t)输出:输出 一行有两个数, 最短距离及其花费。样例输入:3 21 2 5 62 3 4 51 30 0样例输出:9 11样例太水,自己弄了组数据:View Code i Read More
posted @ 2012-04-18 18:28 Muse牧马 Views(272) Comments(0) Diggs(0) Edit
priority_queue的用法priority_queue调用 STL里面的 make_heap(), pop_heap(), push_heap() 算法实现,也算是堆的另外一种形式。先写一个用 STL 里面堆算法实现的与真正的STL里面的 priority_queue用法相似的priority_queue, 以加深对 priority_queue 的理解#include <iostream>#include <algorithm>#include <vector>using namespace std;class priority_queue{pri Read More
posted @ 2012-04-18 18:13 Muse牧马 Views(222) Comments(0) Diggs(0) Edit
第三届蓝桥杯复赛题原题:http://www.cnblogs.com/AkQuan/archive/2012/04/10/2440370.html第一题: 1 #include <cstdio> 2 int main() 3 { 4 long int X=10, Y=90; 5 for(int k=1; k<=120; k++)//半分钟一个单位 6 { 7 if(k%2==1)Y -= X;//因为X出生半分钟后就要吃Y,尔后每1分钟要吃Y,所以永远都是奇数个半分钟的时候吃Y,又因为此时X不会增长(题目为了减小讨论的复杂度),所以直接减X数量即可。 8 ... Read More
posted @ 2012-04-10 15:16 Muse牧马 Views(876) Comments(0) Diggs(0) Edit
第一题:微生物增殖 假设有两种微生物 X 和 Y X出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次(数目加倍)。 一个新出生的X,半分钟之后吃掉1个Y,并且,从此开始,每隔1分钟吃1个Y。 现在已知有新出生的 X=10, Y=89,求60分钟后Y的数目。 如果X=10,Y=90 呢? 本题的要求就是写出这两种初始条件下,60分钟后Y的数目。 题目的结果令你震惊吗?这不是简单的数字游戏!真实的生物圈有着同样脆弱的性质!也许因为你消灭的那只 Y 就是最终导致 Y 种群灭绝的最后一根稻草! 请忍住悲伤,把答案写在“解答.txt”中,不要写在这里!094371840 第二题:古堡算. Read More
posted @ 2012-04-10 12:47 Muse牧马 Views(1793) Comments(0) Diggs(0) Edit
有这么一个数,当把它的最后一位(个位)挪到第一位的时候,得到的新数刚好是原来数的两倍。问这个数是多少?——出自 1985 出版的一本小学5年级学生用的数学课外读物——《儿童数学世界》这个问题看似简单,就是要找一个数出来,把这个数个位上的数字挪到最前面去,例如 123 变成 312,12345变成51234。但是还要求得到的“新数”要是原来数的两倍。简单的分析一下这条业务规则,不难得出下面的结论:1. 取一个数作为“原数”;2. 把“原数”个位上的数字挪到最前面,保存为一个“新数”;3. 比较两个数字,如果“新数”是“原数”的两倍,则打印两个数并退出程序;4. 如果不符合要求,则原数自加1并回到 Read More
posted @ 2011-12-18 23:53 Muse牧马 Views(194) Comments(0) Diggs(0) Edit
有一个12品脱(pint)的酒瓶,里面装满葡萄酒,另有8品脱和5品脱的瓶子各一个。问如何从中分出6品脱的酒出来?传说泊松年轻时成功解决了该问题,勾起了他对数学的兴趣而投身数学研究,因此该问题被称为泊松分酒问题。另外这个问题又被称为分油问题啦,分水问题啦等等。小学的时候在一本《十万个问什么——数学卷》中看到过这个问题,那本书直接给出了一个解答过程,又没说原理,看得我糊里糊涂。一 . 解答过程为了方便说明,将容量为12品脱,8品脱,5品脱瓶子分别称为大瓶子,中瓶子,小瓶子。按照下面2种规则中的如何一种可以解决这个问题:第一套规则:1. 大瓶子只能倒入中瓶子2. 中瓶子只能倒入小瓶子3. 小瓶子只能 Read More
posted @ 2011-12-11 15:40 Muse牧马 Views(416) Comments(0) Diggs(0) Edit