对于NOIP初赛感想

这是我第一次参加NOIP普及组的初赛,可是没想到竟然扣了37.5分,37.5!!!我顿时感觉自己完了。
这里写图片描述

回到正题

来看看我怎么扣的:

选择题:

  1. 在 8 位二进制补码中,10101011 表示的数是十进制下的( )。
    A. 43 B. -85 C. -43 D. -84

首先,我看到补码后第一时间找第一位,发现是1,第一反应是负数
大家注意!!这就是学习没学好的后果!
补码是反码加1后的结果,反码才要注意第一位
然后我就不去管反码是什么东东了……
原式=0101011-1=0101010=1010101=85
再加个负号,就是B了,而我却选了C

基础不打好害死人!!

之后的题目就不用说了,还是上面。

问题求解:

以哥的基础,无脑过。
说明我还是有点实力的。

程序填空:

#include<iostream>
using namespace std;   
int main()  
{   
    int t[256]; string s; 
    int i;
    cin>>s;   
    for (i = 0; i < 256;  i++) t[i] = 0;   
    for (i = 0; i < s.length();  i++) t[s[i]]++;   
    for (i = 0; i < s.length();  i++) 
      if (t[s[i]] == 1) 
        {   
           cout << s[i] << endl; 
           return 0;
        }  
    cout << "no" << endl; 
    return 0; 
}

输入: xyzxyw
输出:

第一题,很简单,但是我却掉进坑里了
1.我没注意是(t[s[i]]==1),以为是(t[s[i]]>=1)
2.判断是依据s这个字符串往下的,我以为是按照字母表顺序查找的
傻乎乎地写了w……

这个故事告诉我们不应该草率地看题目,草率地写下结果。

#include <iostream>  
using namespace std;   
int main()  
{ 
    int n, m;  
    cin>>n>>m; 
    int x = 1; 
    int y = 1;  
    int dx = 1; 
    int dy = 1;
    int cnt = 0;
    while (cnt != 2)  
    { 
      cnt = 0;  
      x = x + dx;  
      y = y + dy;   
      if (x == 1 || x == n)  
        { 
          ++cnt;  
          dx = -dx;  
        }   
      if (y == 1 || y == m)  
        { 
          ++cnt;  
          dy = -dy;  
        }  
      }   
    cout << x << " " << y << endl; 
    return 0;   
}   
输入 1 : 4 3  
输出 1:_________(3 分)  
输入 2:2017 1014    
输出 2:_________(5 分)

挺简单的,可惜我犯了一个世界上最低级的错误
这是输出循环结束后双方的结果
一看就懂
我写了它们循环的次数……

这里写图片描述

完善程序:

1.快速幂

#include <iostream> 
using namespace std; 
int x, p, m, i, result;   
int main() 
{        
    cin >> x >> p >> m;  
    result = (1) ;
    while (   (2)  ) 
    {
      if (p % 2 == 1)    
       result = (3) ;
      p /= 2;   
      x = (4) ;   
    }    
    cout << s << endl;      
    return 0;       
}

我们可“歌”可“泣”的学姐考前亲自讲了一遍,自然全对
忽然对这世界充满了信心

2.切绳子

#include <iostream> 
using namespace std;    
int n, m, i, lbound, ubound, mid, count; 
int len[100]; // 绳子长度
int main()  
{ 
    cin >> n; 
    count = 0;
    for (i = 0; i < n; i++)  
      { 
        cin >> len[i];   
        (1) ;   
      }        
    cin >> m;
    if ( (2) )    
      {   
        cout << "Failed" << endl; 
        return 0;
      }        
    lbound = 1;   
    ubound = 1000000;  
    while ( (3) ) 
      {  
        mid =  (4)  ; 
        count = 0 ;
        for (i = 0; i < n; i++)     
          (5) ;    
        if (count < m) ubound  = mid - 1;   
        else
        lbound = mid;   
      }   
    cout << lbound << endl; 
    return 0;
} 

起初:又是二分,模板没记住,应该要死
结果错了(2)题
这一题是我经过长时间的深思熟虑
和苦思冥想之中
得出了自己以为的正确答案
然后把真正的正确答案删了……
突然对世界充满绝望

最后祝看到并进复赛的人获奖

这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值