摘要: 记蛋糕总量为1。设在第i轮给对手分Xi的蛋糕。Xi小于某个临界值,对手就会拒绝,而对自己来说,希望Xi越小,但同时希望对手不要拒绝(如果说希望对手拒绝,由第i轮与第i+1轮的相似性,推知游戏将无限轮,自己收益为0)。记Xi为这个临界值,即如果从第i 轮开始的话的最优策略。假设X(i+1)已知,那么X(i) = 1/(i+1) – X(i+1),因为1/(i+1) – X(i+1)是如果对手拒绝的话的最大获得。于是,X1=1/2–X2 , X2=1/3-X3, ... 又因为Xi一定存在,且0<Xi<1/i,故Xi收敛于0。故X1=1/2–1/3+1/4- … = 1–ln(2)。故 阅读全文
posted @ 2013-05-09 23:04 ustc-acm 阅读(222) 评论(0) 推荐(0) 编辑
摘要: H -数字排列Time Limit:1000MSMemory Limit:32768KB64bit IO Format:%I64d & %I64uSubmitStatusDescriptionS得到了一个数,他认为相邻位上的数字与数字之间会产生不良影响,比如123,1和2之间产生一个不良影响值,2和3之间产生一个不良影响值。现在他想调整这个数每位的数字的顺序,使得最终得到的数的总的不良影响值最小,且没有前导0。Input输入数据的第一行为T表示有T组数据。每组数据先输入一个整数n(0<n<1000000000),接下来输入10*10的矩阵,Aij表示数字i与数字j相邻产生的 阅读全文
posted @ 2013-05-09 22:22 ustc-acm 阅读(273) 评论(0) 推荐(0) 编辑
摘要: E -特殊的数Time Limit:1000MSMemory Limit:32768KB64bit IO Format:%I64d & %I64uSubmitStatusDescription一个由n位数字组成的数,它的每一位数字都是奇数,这样的n位数有多少个?为了增加难度,Jason要求数字7和9只能出现偶数次。Input输入数据的第一行一个数T,表示输入数据的组数。每组数据只有一个数n,表示一个数由n位数组成。约定:1≤T≤100001≤n≤10^18Output对于每组给定的输入,输出一行仅含一个数,满足以上条件的n位数的个数,由于答案可能很大,对1,000,000,007取模。 阅读全文
posted @ 2013-05-09 22:21 ustc-acm 阅读(297) 评论(0) 推荐(0) 编辑
摘要: C -多项式积分Time Limit:1000MSMemory Limit:32768KB64bit IO Format:%I64d & %I64uSubmitStatusDescription给定一个关于x(小写字母)的多项式,求其关于x的一阶积分,结果按降幂输出,要求结果为最简多项式。输出的多项式符合一般书写规则,即有如下特性:多项式由单项式相加或相减组成,单项式可以表示成ax^b的形式,其中a、b均为整数,b为大于等于0的整数,a不能为0,特别的,当b等于1时,省略”^1”,写做ax,当b等于0时,写作a,而当a的值为±1时,1必须省略。多项式首项的不允许有“+”。In 阅读全文
posted @ 2013-05-09 22:19 ustc-acm 阅读(568) 评论(0) 推荐(0) 编辑
摘要: 1 #include <iostream> 2 #include <cstdio> 3 #include <cstdlib> 4 #include <cstring> 5 #include <cmath> 6 using namespace std; 7 #define FOR(i,a,b) for(int i=a;i<=b;i++) 8 #define MST(a,b) memset(a,b,sizeof(a)) 9 #define MAXN 10510 #define MAXM 105011 int n,m;12 int t 阅读全文
posted @ 2013-05-09 22:17 ustc-acm 阅读(292) 评论(0) 推荐(0) 编辑
摘要: 果然如题所示、是道水题A -Jason的特殊爱好Time Limit:1000MSMemory Limit:32768KB64bit IO Format:%I64d & %I64uSubmitStatusDescriptionJason很喜欢数字,特别是1这个数字,因为他觉得1有特殊的含义。为了让更多的人喜欢上1,他决定出一题关于1的水题(每个人都喜欢水题)。Input输入数据中有多组数据,每组数据输入为两个正数,a,b(1<=a,b<=10^18)。Output输出a到b之间的整数包含多少个1。Sample Input1 1000Sample Output301代码-- 阅读全文
posted @ 2013-05-09 22:12 ustc-acm 阅读(334) 评论(0) 推荐(0) 编辑
摘要: //////写在前面To二鸣君:鉴于你让我来贴代码,过后要再请我吃一顿饭才行~题目大意:给出用字母代表数字的加法等式,求出满足等式的字母对应数字的方案数。思路: 搜索+剪枝。我的几点优化:1. 算出每个字母对应的系数,减少搜索时的计算。2. 计算上下界时很暴力的按照每个字母上界为9,下界为当前搜索的数字(我是按照数字1-9搜的)来算。(感谢二鸣君。)代码:#include <iostream>#include <cstdio>#include <cstring>using namespace std;char s[13][10],c[10];int n,m, 阅读全文
posted @ 2013-03-19 14:30 ustc-acm 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 给定起点终点的无向图,出发时速度为1,到达时速度也为1,在每个点可以进行速度+1,不变,-1的操作,在每条边都有限速,到达一城市后不能直接走反向边,求最短时间。SPFA作松弛操作的典型例子,设计状态f[i][j][k]为从k城市以j速度到达城市i时的最短时间,然后开一队列依次向下一个城市做递推即可,最后看任意城市以速度1到终点城市的时间最小值即可。递推初值可设置为f[s][0][0],然后做速度必须>0的限制即可保证以速度1出发。表示依然不太清楚struct或者class能不能直接用=赋值,重载operator =不会写,保险起见,本程序中写了assign()函数进行赋值。// Prob 阅读全文
posted @ 2013-03-18 17:34 ustc-acm 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 一个01方阵,初始状态全1,每次操作把一个到主对角线为止的L形的线上的格子改变状态,求最少操作几次思路: 每个格子可能被多次改变。显然的也是唯一关键的一点就是注意到能对某个格子改变的只有对该格子上方和右方的格子的操作。 所以说按从右上角/左下角往主对角线的顺序每个格子就可以确定是否要做操作。 然后由于时间复杂度的要求,用up数组记录该格以及该格上方格子所做的操作数的总和,用rt数组记录右方。如此可以O(1)的转移。上方和右方的操作数总和为up[x-1][y]+rt[x][y+1]。如果把1做了如此次的改变后和目标不符,就要对当前格进行改变(操作)。代码:#include " 阅读全文
posted @ 2013-03-13 21:29 ustc-acm 阅读(314) 评论(0) 推荐(0) 编辑
摘要: 题目大意:给出一道数独题,判断该数独是否有解且有唯一解。解题思路: 由前几题的难度得,此题的难度不会太过分,所以简单暴力就可以了,40ms用时一本满足。 简单地讲一下具体的实现,从左上开始从左到右从上到下一格一格枚举过去,枚举当前格子的数字时,判断一下这个数字能不能用就行了(判断是否在该行,该列,该区域出现过),全部填满时就找到了一个解,找到第二个解的时候停止搜索即可。 关于判断某个数字在当前区域是否用过,比较方便的方法是,事先算好p[i][j],用来记录第i行第j格属于哪一列,哪一行,哪一区域,这样在写dfs时会方便很多。代码:/*被注释掉的代码都是用来调试的,取消注释后可以用来查看程... 阅读全文
posted @ 2013-03-12 11:47 ustc-acm 阅读(370) 评论(0) 推荐(0) 编辑