zoukankan      html  css  js  c++  java
  • NOIP 2000解题报告

    题目简单,思路很快就有,关键是代码实现能力,大概3个多小时完成。
    第一题:
    题目大意:将一个10进制数N转换成-B进制数 (负进制转换);B<=20, N(-32768<=N<=32767);

    解题过程:首先想到仿照 正进制转换过程,但结果中有负数,就想到把负数处理掉,加个B即可,为了是结果不变,比它高1位的那一位要加1,这样某一位又有可能出现B这个数字,同理减去一个B,高位减去1;重复知道全部是0到B-1的数字;
    40分钟一次AC

    第二题:
    题目大意;给定一个N位数字,用k个乘号将其划分为k+1个部分,使得乘积最大;

    解题过程:平时做到过类似的,直接套用动态规划方程,处理好边界,F【i】【j】表示前i个数字划分成j个数字的最大值,可由F【p】【j-1】转移而来;
    30分钟左右写完,但第一次提交只过了1个点,结果貌似是数据的问题,多了空格回车什么的,我的输入用了(按照样例每行多读一个回车)
     for (int i=0;i<=n;i++)
    scanf("%c",&str[i]); 
    就挂了;
    改成
     for (int i=1;i<=n;i++)
    str[i]=s[i-1]; 
    就AC了;

    第三题:

    题目大意:单词接龙,将一些单词首尾接起来(A的尾和B的头相等),每个单词最多用2次,比如beast和eastern可以接成beastern,求以给定的字母开头的最长的能接起来的单词长度,单词个数N<=20,

    解题过程
     看到数据范围较小,想到用搜索,首先预处理每个单词后面可以接哪些单词,并且记录重叠部分的长度,然后深搜;

    第一次提交只过了4个点,原因有2个:
    1.预处理的时候应该使得两个单词的重叠部分尽可能短,应该从小到大枚举,我用了从大到小。
    2.单词后面可以接它自己。。(仔细揣摩样例应该可以看出来的)
    修改2次后AC;
     耗时50分钟左右

    第四题:
    题目大意:方格取数的变形,就是走2次,走过的格子分数变为0,求最大分数;

    解题过程:
    这题在NOI导刊上看过,在建兰培训时也讲过原题,30分钟左右写完一次AC;首先令两次走的路线不会交叉(可以碰到),因为如果交叉可以换一种走法就变成不交叉的但有重合的了。。以走的总步数step和第一次走的向右走了i步,第二次走的向右走了j步为状态转移;

    第一次总得分300左右(100一题来算的话。)
    教训:
    题目要多看几遍,要好好揣摩样例是怎么得出解得,不要大概看懂了题目就开始写。
     

  • 相关阅读:
    01-Django 简介
    函数及函数的嵌套等
    循环及循环嵌套
    运算符
    if, elif, else及if嵌套
    变量及变量计算和引用
    Python的3种执行方式
    Jmeter设置默认中文启动
    Vysor
    python基础学习(二)
  • 原文地址:https://www.cnblogs.com/vb4896/p/3913834.html
Copyright © 2011-2022 走看看