Algorithm
乐亦亦乐
大道至简 知行合一
展开
-
Algorithm 专栏 【Python—每日一道算法题】 前言
本专栏中的所有算法题,来自《算法竞赛入门经典训练指南》-刘汝佳 陈锋 的这本书。书中所有代码使用C++代码实现。为了学习算法的同时,练习Python编程,本专栏将原书中c++代码转化成用Python实现。...原创 2020-11-22 13:55:47 · 270 阅读 · 0 评论 -
《Python—每日一道算法题》蚂蚁(Piotr‘s Ants,UVa 10881)
题目描述一根长度为L厘米的木棍上有n只蚂蚁,每只蚂蚁要么朝左爬,要么朝右爬,速度为1厘米/秒。当两只蚂蚁相撞时,二者同时掉头(掉头时间忽略不计)。给出每只蚂蚁的初始位置和朝向,计算T秒之后每只蚂蚁的位置。输入格式输入的第一行为数据组数。每组数据的第一行为3个正整数L,T,n(0<=n<=10000);以下n行每行描述一致蚂蚁的初始位置,其中整数x为蚂蚁距离木棍左端的距离,字母表示初始朝向(L表示左,R表示右)输出格式对于每组数据输出n行,按输入顺序输出每只蚂蚁的位置和朝向(Turn原创 2020-11-23 19:11:46 · 633 阅读 · 0 评论 -
《Python—每日一道算法题》基地雕塑(Graveyard,NEERC 2006,LA3708)
在一个周长为10000的圆上等距分布着n个雕塑。现在又有m个新雕塑加入(位置可随意放),希望所有n+m个雕塑在圆周上均匀分布。这就需要移动一些原有的雕塑。要求n个雕塑移动的总距离尽量小。Sample Inputsample input #12 1sample input #22 3sample input #33 1sample input #410 10Sample Outputsample output #11666.6667sample output #21原创 2020-11-22 21:00:45 · 196 阅读 · 0 评论 -
《Python—每日一道算法题》分金币(Spreading the Wealth,UVa 11300)
Description圆桌旁坐着n个人,每人有一定数量的金币,金币总数能被n整除。每个人可以给他左右相邻的人一些金币,最终使得每个人的金币数相等。你的任务是求出被转手的金币数量的最小值。比如,n=4,且4个人的金币数分别为1,2,5,4时,只需转移4枚金币(第3个人给第2个人两枚金币,第2个人和第4个人分别给第1 个人1枚金币)即可实现每人手中的金币数目相等。Input输入包含多组数据。每组数据第一行为整数n(n<=1 000 000),以下n行每行为一个整数,按逆时针顺序给出每个人拥有的原创 2020-11-22 16:28:04 · 740 阅读 · 0 评论 -
《Python—每日一道算法题》突击战(Commando War,UVa11729)
你有n个部下,每个部下需要完成一项任务。第i个部下需要你花Bi分钟交待任务,然后他会立刻独立地、无间断地执行J分钟后完成任务。你需要选择交待任务的顺序,使得所有任务尽早执行完毕(即最后一个执行完的任务应尽早结束)。注意,不能同时给两个部下交待任务,但部下们可以同时执行他们各自的任务。【输入格式】输入包含多组数据,每组数据的第一行为部下的个数N(1≤N≤1000);以下N行每行两个正整数B和J(1≤B≤10000,1≤J≤10000),即交待任务的时间和执行任务的时间。输入结束标志为N=0。【输出格式】原创 2020-11-22 13:44:05 · 262 阅读 · 0 评论 -
《Python—每日一道算法题》勇者斗恶龙(The Dragon of Loowater,UVa 11292)
你的王国里有一条n个头的恶龙,你希望雇一些骑士把它杀死(即砍掉所有头)。村里有m个骑士可以雇佣,一个能力值为x的骑士可以砍掉恶龙一个直径不超过x的头,且需要支付x个金币。如何雇佣骑士才能砍掉恶龙的所有头,且需要支付的金币最少?注意,一个骑士只能砍一个头(且不能被雇佣两次)。【输入格式】输入包含多组数据。每组数据的第一行为正整数n和m(1≤n,m≤20000);以下n行每行为一个整数,即恶龙每个头的直径;以下m行每行为一个整数,即每个骑士的能力。输入结束标志为n=m=0。【输出格式】对于每组数据,输原创 2020-11-21 22:50:07 · 733 阅读 · 0 评论