1、2003/8 暑假集训解题报告题目:分类:讨论:代码:总结:题目:1196 Set Me分类:简单模拟讨论:注意格式和逻辑判断式的正确性代码:逻辑表达式的代码:if ( !(cardsil = cardsjl k tmp )tmp = sum;return tmp;总结:这类题一次完全写对的可能性还是有点小, 写完后应该仔细写一些测试数据来测试。关于降维的思想应该在那种解决多维数据的题时想到。题目:1194 Round and Round We Go分类:字符串处理讨论:字符串处理的题在竞赛中出现的几率非常大, 是必须要作对的题, 此题比较简单, 注意边界问题和字符串的末尾 0 的问题代码:无
2、总结:做字符串题很不容易一次作对, 需要仔细检查代码, 并且要记熟常用字符串函数和一些技巧, 如 sscanf, strtok 等函数。题目:1193 Microprocessor Simulation分类:简单模拟讨论:注意 switch 的条理和多组数据输入时的初始化问题代码:无总结:要一次通过, 大规模输入时要仔细, 调试时要有耐心。题目:1191 Bode Plot分类:简单数学, 推理讨论:此题的特点是, 从题目隐含的条件(t=0)中求出一个参数, 然后再代入求其结果, 这点不容易想到, 特别需要注意。代码:无总结:推公式时要细心, 注意输入输出精度。题目:1188 Color Me
3、 Less1189 P,MTHBGWB分类:简单模拟讨论:无代码:无总结:无题目:1187 Closest Common Ancestors分类: 简单模拟讨论: 注意树的表示方法, 用数组是最简便的。要善于利用标记来记录。代码:标记代码while ( a != 0 )flaga = 1;a = fathera;while ( flagb != 1 )b = fatherb;总结:无题目: 1185 Rectangles分类: 简单几何题讨论: 无代码: 无总结:不要想复杂了。题目: 1182 Multiple分类: 复杂数学, 推理题讨论: 数 a = k * M +r所以a % M = (
4、 k * M + r ) % M= r % M在这里 r 的范围为 0 4998 而且是有重复性的, 所以在这里可以运用动态规划中的记录特性利用标记。生成数的方法是用的 BFS, 首先排序一次, 得到的第一个可行解就为最优解。因为一次只能得到一个数字, 所以设置节点的数据结构为struct Nodeint pre;int a;int num;代码: BFS 部分while ( head != rear )cur = quehead+;for (int i=0; i I+I | I-II F*F | F/FF T | (E)递归搜索子表达式, 得到表达式树然后遍历表达式得解代码:无总结:注意优先
5、级的问题。-题目:1154 Simple Arithmetics分类:复杂的模拟题讨论:无代码:无总结:恶心。-题目:1153 Play on Words分类:简单图论讨论:将单词的关系图表达出来, 然后根据欧拉图的判定条件来判定是否为欧拉图。注意这里可能出现多个子图, 需要每个图都判断一次。代码:无总结:注意欧拉图的判断条件。-题目:1152 Lifting the Stone分类:简单数学题讨论:通过中心和重心公式来求得公式代码:关键代码:for (int i=2; i= B if ( X A * cos(a1 + a2) + B * sin(a1 + a2)return true;return false;总结:对于几何题列方程, 可能性需要考虑周全, 如直线斜率除 0 等。