A:
直接找出最小值,看是否能被所有数整除即可
B:
判断是否出现连续的“#”>=m若果存在肯定不能调。
C:
题意:
两个人玩游戏(A,B),每个人分配一个字符串长度为2*n的字符串s1,s2,然后A先从[1~2*n]选一个数i,然后他就从s1中取走s1[i],然后是B从[1~2*n]中选一个还未曾被选过的数然j后取走s2[j]最后他们分别否会获得n个“0”,“1”他们可以任意组合这些0,1最后谁组合出来的数最大谁赢,若想等则平局。
思路:
首先分析如果出现s1[i] = s2[i] = 1的话,他们肯定会去这个“1”因为这样既保证自己得到一个1,另一方失去一个1,如果存在计数个那么最后A肯定比B多1,如果是偶数个,那么两人得到的1的个数相同,然后就看剩下的怎么取了,如果剩下的为偶数个那么第一个取的是A,首先我会把所有能够取到的1取得,然后将对方能够消除的1消除,奇数时B先取同上。然后我们判断只要先取的一方把能取的都取完了,然后对方只能获得剩下他能取的一半了。
View Code #include #include #include #include #include #include #include #include #include #include #include #include #include
D:
题意:
给你一个n*m的矩阵,里面的有些方格被染色了,有些没有,让我们用小于k的的颜色,将该矩形染满颜色,要求从左上角到右下角的路径中不存在两个颜色相同的。问一共有多少中可能。
思路:
暴力搜索+强剪纸
用u[i]记录每一中颜色的在已经走过的矩阵中使用的次数,如果x,y在这之前还没出现过,那么当前小方格内取x或者y所形成的方法数目是相同的利用这个剪纸可以减少很多搜索,还可以利用类似A*的,当前路径已经用了多少颜色,后边每一步还需要多少颜色,如果总和超过k就是不合法的路径。
View Code #include #include #include #include #include #include #include #include #include #include #include #include #include
E:
题意:
给出n(n<= 10^14)求满足 a^3 + b^3 + c^3 + n = (a + b + c)^3 的a,b,c的个数。
思路:
首先我们能够推出公式(a + b)*(a + c) *(b + c) = n;
然后我们就可以枚举
(a + b) = i; (a + c) = j; (b + c) = k;
a >= 1; b >= 1; c >= 1; === > i + j - k >= 1 ......
a <= b <= c ;
然后求解即可。
这里好像根据线性代数对着三个方程证明一定存在可行解。
View Code #include #include #include #include #include #include #include #include #include #include #include #include #include