高中运动会

最大公约数

【问题描述】

梦幻城市每年为全市高中生兴办一次运动会。为促使各校同学之间的交流,采用特别的分队方式:每一个学校的同学,必须被均匀分散到各队,使得每一队中该校的人数皆相同。为增加比赛的竞争性,希望分成越多队越好。你的任务是由各校的人数决定最多可以分成的队数。

【输入】

第一行一个正整数 n ,代表学校的个数。

接下来 n 行,每行一个正整数,分别代表这 n 个学校的人数。

【输出】

最多可分成的队数。

【数据规模】

对于 100%的数据,n≤500,每个学校人数最多 10000。

【解题过程】

直接求所有数的 GCD。

 

智力游戏

枚举

【问题描述】

小华最近迷上了一个你小时候已经玩厌了的游戏:移火柴棒。他现在吵着要你陪她玩,你没办法,

只好写一个程序来完成这个工作了。

你被给出了一个火柴拼成的等式,比如下面这个,5+7=7:

它显然是不成立的,但是我们可以通过移动一个其中的火柴使得它成立。变成如下一个等式:

现在给出一个类似的等式,请问,最少移动多少根火柴可以使得它变成一个成立的等式?

每个数字的表示方法如下:我们用 7 根火柴表示每一个数字。火柴编号 0~6,如下图:

每一个数字都可以用对应的火柴组成的集合表示:

1:{2,5} or {1,4} 2:{0,2,3,4,6}

3:{0,2,3,5,6} 4:{1,2,3,5}

5:{0,1,3,5,6} 6:{0,1,3,4,5,6}

7:{0,2,5} 8:{0,1,2,3,4,5,6}

9:{0,1,2,3,5,6} 0:{0,1,2,4,5,6}

【输入】

输入有三个数字,分别表示上面的表达式中的从左到右的三个数字,每个数都在 0~999 之间。

【输出】

输出只需一个数,表示使等式成立最少需要移动的火柴数,不允许改变位数以及符号,不要制造 0

开头的数。

【输入样例】

5 7 7

【输出样例】

1

【解题过程】

一看数据范围二话不说就枚举了。

枚举出两个加数就能算出正确的和,然后拆解,打个表记录每个数字所需的火柴数,如果这里枚举出的两个加数以及和的总火柴数与题目给出的不相等就直接跳过。

然后计算至少需要移几根火柴才能从初始状态移到当前状态。打个表记录一个数字与另外一个数字在同一位置上的火柴数,比如 6 和 3 有四根火柴是在相同的位置上的。用总火柴数减去各个数对应的在各自位子上的火柴数之和即是最小移动步数。题目给出了不允许改变位数和符号的限制大大降低了难度。

但是中间细节错了后来查了好久才找到错。

第一次提交 70 分左右?反正没 AC。

 

周年纪念日

树型动规

【问题描述】

某中学校长打算举行建校 100 周年的晚会。学校的职员是分等级的,也就是说职员之间的上下级关系组成一棵以校长为树根的树。校长要亲自邀请一些职员参见晚会。同时校长亲自到场欢庆这个节日。职员用 1~n 之间的整数编号,人事处给出了每个职员的搞笑指数。如果一个人和他上司一起参加,那么便可能产生麻烦。为了使晚会的每个参加者都高兴,校长不会同时邀请某个职员和他的顶头上司。

你的任务是给出一个客人列表,使得客人的搞笑指数之和最大。

【输入】

第一行一个整数 n(1≤n≤6000)。

以下 n 行每行是相应编号职员的搞笑指数,该数的返回是[-128..127]。

然后是职员的关系树,每行格式是<x> <y>,意思是第 y 个职员是第 x 个职员的顶头上司。输入以 0 0 结束。

【输出】

最大的搞笑指数之和。

【输入样例】

7

1

1

1

1

1

1

1

1 3

2 3

6 4

7 4

4 5

3 5

0 0

【输出样例】

5

【解题过程】

很典型的树型动规,用 f(i, 0) 表示 i 没有出席所能达到的最大和,f(i, 1) 表示 i 出席了所能达到的最大和,则

f(i, 1) = sum{ f(j, 0), i 是 j 的直接上司 }

f(i, 0) = sum{ f(i, 0)+f(i, 1), i 是 j 的直接上司 }

很纠结的地方是校长到底有没有在这棵树中。不过这不是重点,NOIP 的题目不会这么坑。

08day1的更多相关文章

  1. 二模08day1解题报告

    T1.高中运动会(match) N个数的最大公约数. gcd不解释. T2.智力游戏 火柴棒等式形如a+b=c,现在给出啊a,b,c求使等式成立的最小的移动次数. 火柴棒表示数字不用解释了吧,在此提醒 ...

随机推荐

  1. Cayley n顶点树数定理

    出处:http://blog.csdn.net/gongqian12345/article/details/7445573 今天遇到一个问题:在一个n阶完全图的所有生成树的数量为n的n-2次方,想了好 ...

  2. zoj 3513 Human or Pig 博弈论

    思路:P态的所有后继全为H态,第一个格子为P态,第一行和第一列为H态. 代码如下: #include<iostream> #include<cstdio> #include&l ...

  3. SQL四舍五入及两种舍入

    round() 遵循四舍五入把原值转化为指定小数位数,如:round(1.45,0) = 1;round(1.55,0)=2floor()向下取整 如:floor(1.45)= 1,floor(1.5 ...

  4. UVALive 6187 Never Wait for Weights 带权并查集

    题意:每次给出每两个数之间的大小差值.在给出关系的过程中插入询问:数a和数b的差值,若不能确定,输出UNKNOWN 解法:相对大小关系的处理:并查集 1.给出两点的相对大小关系后,找到两个点的根节点, ...

  5. IDA 与VC 加载符号表

    将Windbg路径下的symsrv.yes 拷贝到ida 的安装目录,重新分析ntoskrnl.exe, 加载本地的符号表 添加环境变量  变量名:_NT_SYMBOL_PATH变量值:SRV*{$P ...

  6. Axis学习的第一天

    下载axis的相关工程包: 选中这2个文件下载: 1)axis-bin-1.4.zip 含有axis工程包,将工程包复制到tomcat里的webapps目录下: 2)axis-src-1.4.zip ...

  7. lintcode:等价二叉树

    等价二叉树 检查两棵二叉树是否等价.等价的意思是说,首先两棵二叉树必须拥有相同的结构,并且每个对应位置上的节点上的数都相等. 样例 1 1 / \ / \ 2 2 and 2 2 / / 4 4 就是 ...

  8. ubuntu sh脚本双击运行

    自从13.04以后,双击sh脚本文件就已经默认是geidt打开了,要想运行,从nautilus-->文件-->首选项-->行为-->可执行文件 有三个选项,默认是第二个,如果想 ...

  9. idea自动生成serialVersionUID

    Setting->Plugins 找到一个叫  GenerateSerialVersionUID 的插件 下载安装好,alt+insert就可以看到 默认情况下Intellij IDEA是关闭了 ...

  10. Ajax动态滚动加载数据

    看新浪微博,人人网都有这样的效果:滚动条滚动到最下面的时候,新的数据就被自动加载出来了,今天亲自尝试了一下这个效果的实现. 最开始在CSDN上写了一版,功能比较简单,今天又增加了一个小功能:翻页到指定 ...