上一页 1 ··· 111 112 113 114 115 116 117 118 119 ··· 182 下一页
摘要: 简单题View Code #include <iostream>#include <cstdlib>#include <cstring>#include <cstdio>#include <cmath>using namespace std;int main(){ //freopen("t.txt", "r", stdin); int t; scanf("%d", &t); while (t--) { int a; scanf("%d", & 阅读全文
posted @ 2011-07-10 13:31 undefined2024 阅读(175) 评论(0) 推荐(0)
摘要: 用java,高精度。读入高精度数可以直接用cin.nextBigInteger();但本题要使用BigDecimal。因为本题读入的整数前端有+号View Code import java.io.*;import java.util.*;import java.math.*;public class Main { public static void main(String args[]) { Scanner cin = new Scanner(new BufferedInputStream(System.in)); int t; t = cin.nextInt(); for (int i = 阅读全文
posted @ 2011-07-10 13:19 undefined2024 阅读(234) 评论(0) 推荐(0)
摘要: 题意:给出一些木棍,必须全都用上,问能拼成的最大的三角形面积是多少。分析:动态规划,f[i][j][k]表示用前i根木棍能否构成两条长度分别为j,k的边。f[i][j][k] = f[i - 1][j][k];if (j >= fence[i]) f[i][j][k] = f[i][j][k] || f[i - 1][j - fence[i]][k];if (k >= fence[i]) f[i][j][k] = f[i][j][k] || f[i - 1][j][k - fence[i]];以上过程只是构成两条边,第三条边的长度可以用总长度减去前两条边得到。 之前没有考虑这三条边 阅读全文
posted @ 2011-07-10 10:49 undefined2024 阅读(191) 评论(0) 推荐(0)
摘要: 题意:对于n堆石子,每堆若干个,两人轮流操作,每次操作分两步,第一步从某堆中去掉至少一个,第二步(可省略)把该堆剩余石子的一部分分给其它的某些堆。最后谁无子可取即输。分析:首先我们考虑两堆相等的情况,一定是谁取谁输,因为对方永远可以做对称的操作。对于四堆,1、2堆相等,3、4堆相等的情况,一定也是先手输,后手也只需要做对称的操作(在先手取石子的对称堆中取相同多的石子,并把和先手等量的石子分给先手分配给的堆的对称堆。(若先手在3堆取,并分给1堆,那后手就在4堆取,分给2堆)。也就是说对于任意的一对一对相等的情况来说,一定是后手必胜。我们接下来来证明除上述情况外,所有情况都是先手必胜。因为任何一种 阅读全文
posted @ 2011-07-09 19:35 undefined2024 阅读(1235) 评论(0) 推荐(1)
摘要: 题意:一个国际象棋棋盘,有一个国王,和若干个骑士(马)。问要把他们都挪到一个格需要至少多少步。(国王如果和某骑士在同一个格则两者可以同时以骑士的方式移动且只记做一步)分析:暴力枚举,跳马距离可先用floyd求。枚举终点,枚举国王上马地点,枚举国王要遇到的骑士。View Code #include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>usingnamespace std;#define inf 0x3f3f3f3f#define maxn 70struct P 阅读全文
posted @ 2011-07-09 17:46 undefined2024 阅读(725) 评论(0) 推荐(0)
上一页 1 ··· 111 112 113 114 115 116 117 118 119 ··· 182 下一页