上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 20 下一页
摘要: 题目大意:有n个历史事件,需要对他们按发生的时间先后进行排名。给出正确的排名顺序和学生排出的顺序,按学生答案中最长的正确相对顺序序列的长度给分,计算学生能得多少分。如正确顺序是1,2,3,4,学生答案为1,3,2,4,学生可得三分(123和134序列均可)。 就是求两个序列的最长公共序列(LCS),经典问题,要注意的就是题中给出的是事件的排名,要转化成排名后的事件序列。 1 #include 2 #include 3 #include 4 using namespace std; 5 #define MAXN 25 6 7 int correct[MAXN], query[MAX... 阅读全文
posted @ 2013-08-26 20:35 xiaobaibuhei 阅读(207) 评论(0) 推荐(0)
摘要: 题目大意:给一个表达式,判断两个运算数和结果是否超过int类型的最大值。 可以用double类型进行计算。 1 #include 2 #include 3 4 int main() 5 { 6 #ifdef LOCAL 7 freopen("in", "r", stdin); 8 #endif 9 char str1[300], str2[300], op;10 double a, b;11 while (scanf("%s %c %s", str1, &op, str2) != EOF)12 {13 printf(" 阅读全文
posted @ 2013-08-25 19:40 xiaobaibuhei 阅读(274) 评论(0) 推荐(0)
摘要: 题目大意:有一个圆形的蛋糕,圆心位于原点,上面有2n颗草莓,要求切一刀把蛋糕分成相等的两分并且每份上都有n颗草莓,问如何切。 暴力枚举即可。如果想优化,可以用一个vis数组避免重复枚举相同的直线,x+y=0和2x+2y=0是相同的直线。 1 #include 2 #define POINTN 110 3 4 struct Point 5 { 6 int x, y; 7 }; 8 Point point[POINTN]; 9 int n;10 11 bool judge(int A, int B)12 {13 int pos = 0, neg = 0;14 fo... 阅读全文
posted @ 2013-08-25 17:15 xiaobaibuhei 阅读(275) 评论(1) 推荐(0)
摘要: 题目大意:果园里的树排列成矩阵,它们的x和y坐标均是1~99的整数。输入若干三角形,依次统计每一个三角形内部和边界上共有多少棵树。 三角形P0P1P2有向面积为A:2A = x0y1 + x2y0 + x1y2 - x2y1 - x0y2 - x1y0。如果三角形的三个顶点呈逆时针排列,那么有向面积为正,如果是顺时针排列,则有向面积为负。假设输入三角形为ABC,待判断点为O,则O在三角形ABC内部或边界上当且仅当SABC = SOAB + SOBC + SOAC。通过对有向面积取绝对值可以避免三个顶点是否是逆时针的判断,同时要注意计算x、y的最大值和最小值时要限制在[1, 99]的范围内... 阅读全文
posted @ 2013-08-25 16:28 xiaobaibuhei 阅读(379) 评论(0) 推荐(0)
摘要: 题目大意:Sk表示从1到k的字符序列,如S4为1234,现如今有如下的序列S1S2...Sk,形如1 12 123 1234这样的序列,给一个数n,让你去这个序列第n个位置上的数字。 可以构建出一个Sk序列的表格,然后用一个数组sum[i]记录该序列到i是有几位,这样就可以计算出n位于那个Sx序列中,求得在该序列中的位置,再查表即可。 1 #include 2 #include 3 #include 4 #include 5 #define MAXN 100000 6 7 long long sum[MAXN]; 8 char str[1000000]; 9 int k;10 ... 阅读全文
posted @ 2013-08-25 14:07 xiaobaibuhei 阅读(323) 评论(0) 推荐(0)
摘要: 题目大意:有n个相同的文件,每个文件从中间分为两半,现在给你这2n个文件碎片,求原来完整的文件。 找出文件碎片长度的最大值和最小值,二者相加可得到原来文件的长度len。然后逐个进行拼接,将拼接后长度等于len的加入到map中,最后map中出现次数最多的就是原文件。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 #define FILEN 150 7 #define SIZEN 256*8+10 8 9 string str[FILEN];10 map m;11 12 int main()... 阅读全文
posted @ 2013-08-24 21:26 xiaobaibuhei 阅读(170) 评论(0) 推荐(0)
摘要: 题目大意:给出平面上的n个点,找出距离最近的两个点。 由于n的取值比较大(n 2 #include 3 #include 4 using namespace std; 5 #define MAXN 10000+10 6 7 struct Point 8 { 9 double x, y;10 };11 Point point[MAXN], tmp[MAXN];12 13 bool cmp1(const Point& a, const Point& b)14 {15 if (a.x != b.x) return a.x 10000) printf("INFINIT... 阅读全文
posted @ 2013-08-24 20:03 xiaobaibuhei 阅读(256) 评论(0) 推荐(0)
摘要: 题目大意:给出n(n 2 #include 3 #define MAXN 100+10 4 5 long long a[MAXN], target; 6 char op[MAXN]; 7 int n; 8 bool ok, vis[MAXN][32000*2+100]; 9 10 bool judge(int cur, int n)11 {12 return n >= -32000 && n <= 32000 && !vis[cur][n+32000];13 }14 15 void dfs(int cur, long long res)16 {17 阅读全文
posted @ 2013-08-24 16:12 xiaobaibuhei 阅读(173) 评论(0) 推荐(0)
摘要: 题目大意:有一个编辑器,它有两种命令,“重复上一个单词” 和 “删除前一个字母”,给出一系列字符串,求最少的敲击键盘的次数。 题目中强调第一个敲的单词必须是给的第一个单词,于是就考虑按照单词与第一个单词的前缀相似度进行排序,可是接下来就...发现网上的方法是直接对所有字符串排序,然后对排序的字符串进行处理,本以为那样输出与题中要求的“Remember that the first word must be pressed first!”不符合,可是提交后竟然AC了!这...而且为什么这么做也想不明白...先放一放吧,下面是按网上方法的代码: 1 #include 2 #include ... 阅读全文
posted @ 2013-08-22 21:25 xiaobaibuhei 阅读(207) 评论(0) 推荐(0)
摘要: 题目大意:有m本书,每本书有pi页,把这m本书分给k个人抄写,如何分配才能在最短的时间抄写完这m本书。 最大值最小化问题:把一个包含n个正整数的序列划分成m个连续的子序列,设第i个序列的各数之和为S(i), 使得所有S(i)的最大值尽量小。序列最大值为max,所有数之和为sum,则所求答案必定在[max, sum]之间,通过二分法判断中值mid是否符合条件(把序列分为m份,每份均不超过mid)逐步缩小范围,直至求得解。 其实,我觉得还是看代码来的直接,看书上说的东西半天也不理解说的什么意思,还是研究代码可以一点点地理解。 1 #include 2 #include 3 #inclu... 阅读全文
posted @ 2013-08-22 16:54 xiaobaibuhei 阅读(384) 评论(0) 推荐(0)
上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 20 下一页