标签: 编程

  • CCF开启NOI Online培训

    CCF先后在3月和4月举办了两场NOI Online能力测试,第三场测试将于5月24日举行,这给受疫情影响训练中断的学生提供比赛锻炼和交流机会,这是NOI新开创的一种形式。

    CCF没有止步,紧接着,将开启NOI Online培训!

    CCF首次Online培训定于5月5日推出,为学生提供学习的机会,与Online能力测试相互呼应。Online培训课程主要面向中小学生。

    Online培训每周推出一期,每期邀请两位具有NOI钻石或金牌教练资质的老师讲授。培训内容将结合《CCF中学生计算机程序设计系列教材》和《CCF青少年计算机程序设计评价标准》,从零基础入门、基础、提高再到专业知识,由浅入深、循序渐进。

    Online培训首期邀请到了两位教师均荣获NOI钻石教练称号,其训练的学生获得过IOI金牌,他们是湖南长沙雅礼中学朱全民老师及广东中山纪念中学宋新波老师。

    关于培训讲师,CCF采取邀请和公开征集的形式。不论你是教师或学生,只要感兴趣,愿意和大家分享,欢迎加入讲师队伍,咨询邮箱noi@ccf.org.cn。

    讲师介绍

    朱全民

    朱全民

    CCF会员。长沙市雅礼中学正高级教师,湖南省特级教师,长沙市信息技术工作室首席名师兼农村名师工作站站长,雅礼中学信息学奥赛奠基人,NOI钻石指导教师,曾获2016年度CCF卓越服务奖;指导学生获得国际信息学奥林匹克竞赛(IOI)6金1银,带领雅礼信息学教练团队指导学生获IOI奖项3金1银。他是《CCF 青少年计算机程序设计评级标准》课题主持人,《CCF 中学计算机程序设计》系列教材的总体构架和编审负责人。

    宋新波

    宋新波

    CCF理事。中山纪念中学信息学竞赛教练,NOI钻石指导老师,CCF杰出演讲者;指导学生获全国青少年信息学奥林匹克联赛(NOIP)一等奖近500人次,全国决赛(NOI)金牌22枚、银牌22枚、铜牌13枚,25人次入选国家集训队,3人入选国家队,获国际信息学奥林匹克竞赛(IOI)金牌2枚、国际银牌1枚。他先后获得“中山市十大杰出青年”、“中山市十杰市民”、“南粤优秀教师”、“广东省五一劳动奖章”、“全国优秀教师”等荣誉称号。

    转载 https://www.ccf.org.cn/Focus/2020-05-05/700814.shtml

  • 历年NOIP普及组题目分析(2000-2016)

    年份题目名称考查内容难度
     2000-2016年NOIP普及组复赛题目
    2000乘积最大划分动态规划★★★
    2000税收与补贴问题数学或枚举★★
    2000单词接龙深搜★★★★
    2000计算器的改良字符串处理★★
    2001装箱问题0/1背包或枚举
    2001数的计算动态规划
    2001求先序排列树的遍历
    2001最大公约数和最小公倍数数学(辗转相除法)
    2002过河卒棋盘动态规划★☆
    2002级数求和循环结构(枚举)
    2002选数深搜、素数判定★★★
    2002产生数最短路(图论)、高精度★★★★
    2003数字游戏动态规划★★★★★
    2003麦森数分治、高精度运算★★★
    2003数学(卡特兰数)★★
    2003乒乓球字符串处理★☆
    2004FBI树二叉树的遍历★★
    2004不高兴的津津枚举
    2004火星人数学(排列)、stl★★★
    2004花生采摘贪心
    2005采药0/1背包
    2005循环高精度运算、数论、快速幂★★★★★
    2005淘淘摘苹果枚举
    2005校门外的树枚举
    2006开心的金明0/1背包
    2006明明的随机数桶排序、冒泡
    2006Jam计数法数学、字符串★★★
    2006数列数学(进制转换)★☆
    2007守望者的逃离动态规划或枚举★★★
    2007奖学金快速排序(双关键字)
    2007Hanoi双塔问题数学、高精度★☆
    2007纪念品分组贪心、排序算法★☆
    2008传球游戏动态规划★★★
    2008排座椅贪心★★
    2008ISBN号码字符串处理
    2008立体图字符输出★★★
    2009道路游戏动态规划★★★★★
    2009分数线划定快速排序(双关键字)
    2009细胞分裂数论★★★★
    2009多项式输出字符串处理
    2010数字统计枚举
    2010接水问题模拟★★
    2010导弹拦截排序+枚举,贪心★★★★
    2010三国游戏贪心★★★
    2011瑞士轮模拟、快拍、归并排序★★★
    2011数字反转模拟、字符串
    2011统计单词数模拟、字符串函数
    2011表达式的值栈、表达式计算、递推★★★★★
    2012摆花动态规划★★★★
    2012质因数分解枚举
    2012寻宝模拟,模运算★★★
    2012文化之旅搜索、最短路(图论)、动规★★★★☆
    2013小朋友的数字动态规划、子段和★★★★
    2013计数问题 枚举
    2013表达式求值 模拟或栈★★
    2013车站分级图论、拓扑排序★★★★☆
    2014珠心算测验枚举
    2014 比例简化枚举★☆
    2014 螺旋矩阵数学分析★★★
    2014子矩阵搜索或dp★★★★☆
    2015金币枚举
    2015扫雷枚举★☆
    2015推销员枚举、堆★★★★☆
    2015求和数学(数列)★★★
    2016买铅笔模拟
    2016回文日期枚举★☆
    2016海港枚举★★
    2016魔法阵数学分析、枚举★★★★
  • 水平不高怎么拿NOIP一等奖?南京外国语许昊然 比赛经验

    本文转自江苏信息学竞赛

    本文作者许昊然毕业于南京外国语学校,曾获NOIP 2012一等奖(590分,江苏第一名)、NOI 2012金牌(485分,全国第19名)、IOI 2013金牌(世界第三名),高一获清华保送资格,2014年被美国麻省理工学院录取。

    Part I. 赛场策略与技巧

    * 首先,如果你的水平已经远超NOIP,自然是想怎么考怎么考了。

    * 同理,如果你什么都不会,那么策略再好也是没用的。

    * 因此,下面说的策略、技巧主要是针对水平中等,游走在分数线附近的同学们的。

    赛场策略的最终目标就是一句话:多拿分。

    这是考试,为了分数应当使用任何你能想到的手段。(当然作弊啥的除外……)

    多拿分,具体来说就是两部分:

    * 会做的subtask不丢分

    * 不会做的subtask多骗分

    1、先讲一下“会做的subtask不丢分”。

    subtask就是每道题目里各个部分分。如果一个subtask你会做,比如遇到了水题,或者某道题你会写30分的小数据,那么请务必确保你能拿到这部分分数。

    以及,不要嫌分数少而懒得写!30分也是分,10分也是分,在分数拉不开的情况下(如果你水平并不优秀,这就是你总是要面对的情况),10分的差距就决定了你是一等还是二等。

    记住,如果你因为粗心大意,一个简单的subtask没拿到分,你就不得不依靠更难的题目来把这部分分数拉回来。

    举个例子,某A,第一题因打错文件名爆零,其余两题满分。某B,只会前两题,第三题写了朴素得30分。最后A得200分,B得230分。难题和水题都是100分,评奖可不管你到底写对的是难题还是水题。

    请大家记住:在大多数OI比赛中,只要暴力分全部拿到,就是一等奖(或金牌)。

    但问题是,大家都会写暴力,为啥一等奖只有总名额的10%呢?因为大多数人都会把暴力写错,或看暴力分少懒得写。如果你正确写出了所有暴力,不出意外你就是一等奖了。

    (更多…)
  • C++ 数据结构 struct 语句

    C/C++ 数组允许定义可存储相同类型数据项的变量,但是结构是 C++ 中另一种用户自定义的可用的数据类型,它允许您存储不同类型的数据项。

    结构用于表示一条记录,假设您想要跟踪图书馆中书本的动态,您可能需要跟踪每本书的下列属性:

    • Title :标题
    • Author :作者
    • Subject :类目
    • Book ID :书的 ID

    定义结构

    为了定义结构,您必须使用 struct 语句。struct 语句定义了一个包含多个成员的新的数据类型,struct 语句的格式如下:

    struct type_name {
    member_type1 member_name1;
    member_type2 member_name2;
    member_type3 member_name3;
    .
    .
    } object_names;

    type_name 是结构体类型的名称,member_type1 member_name1 是标准的变量定义,比如 int i; 或者 float f; 或者其他有效的变量定义。在结构定义的末尾,最后一个分号之前,您可以指定一个或多个结构变量,这是可选的。下面是声明一个结构体类型 Books,变量为 book

    struct Books
    {
       char  title[50];
       char  author[50];
       char  subject[100];
       int   book_id;
    } book;

    示例:对结构体数组排序。

    按结构体中某个成员进行排序,下面代码以成员b1为升序的排序。

    (更多…)
  • 快速地查找程序中的中文字符

    编程时进场会因为程序中使用了中文字符导致编译错误。
    一般原因: 代码中有中文状态下的标点符号,如 冒号、逗号、引号

    如果看一个个地查找的话,会成为斗鸡眼的。怎样在中英文混杂的代码中找出中文来,如果只想要保留其中的英文,一行一行编辑的话,既浪费时间又容易出错,如何快速的找出其中的中文字符呢?

    (更多…)
  • C++中的二分算法,二分查找

    用C++实现二分法查找,简单来说就是每次去一个有序数列的中间数,时间复杂度为O(n),然后和目标值比对,如果不是的话,大的就在中间值的右边查找,小的话就在中间值的左边查找,时间复杂度为O(logn)。这是最初级的算法。

    #include <iostream>
     
    using namespace std;
     
     
    int SearchK(int *Arr,int low,int high,int k)//在有序数列中返回t的序号p是数列的起点,q是终点
    {
     
    	int mid;
    	while (low<high)//稳定版,考虑数组中不存在k的情况
    	{
    		mid = (low + high) / 2;
     
    		if (Arr[mid] ==k)
    		{
    			return mid + 1;
    		}
    		else 
    		{
    			if (Arr[mid] < k)//右边查找
    			{
    				low = mid + 1;
    			}
    			else
    			{
    				high = mid - 1;
    			}
    		}
    	}
     
    	cout << "未找到" << endl;
    	return -1;//没找到
     
    }
     
    int main()
    {
    	int p[] = { 1, 2, 3, 4, 5, 6, 7 };
     
    	cout<<SearchK(p, 0, 6, 6)<<endl;
    	cout << SearchK(p, 0, 6, 8)<<endl;
     
    	system("pause");
    	return 0;
    }
  • C++题目: 缺失的扑克牌

    题目描述

    有一种扑克牌,都是以大写字母“A~Z”组成,每张牌有n张。现在这副牌中少了一些,小Y请了几个同学来帮助确认到底少了哪些牌。每个同学将自己清理的牌用字母区间和数量进行表示,比如 A Q 1表示A到Q之间的牌各有1张。T W 2 表示T到W之间的牌各有2张。

    现在根据这些同学提供的信息,请你编写一个程序来帮助小Y确认一下缺失哪个字母扑克牌,每种扑克牌缺多少张。

    (更多…)
  • C++ stl库 (标准模板库)简单介绍

    //stl库 (标准模板库)

    /*
    C++本身提供的一些数据结构,算法。
    1.容器: vector list set stack queue
    2.算法 排序 查找
    */

    /*
    C++本身提供的一些数据结构,算法。
    1.容器: vector list set stack queue
    2.算法 排序 查找
    */

    (更多…)
  • C++中什么是STL介绍

    一、一般介绍     

    STL(StandardTemplate Library),即标准模板库,是一个具有工业强度的,高效的C++程序库。它被容纳于C++标准程序库(C++Standard Library)中,是ANSI/ISOC++标准中最新的也是极具革命性的一部分。该库包含了诸多在计算机科学领域里所常用的基本数据结构和基本算法。

    (更多…)
  • C++题目:小 X 与小和尚(sum)

    题目描述

    研究了这么多学术性的问题,小 X 想听个故事来放松一下自己的大脑。而小 X 最喜欢听的是这样一个故事: 从前有座山 , 山 里有座庙, 庙里有个老和尚和小和尚,老和尚给小和尚讲故事: 从前有座山 , 山里有座庙, 庙里有个老和尚和小和尚,老和尚给小和尚讲故事: 从前有座山……不过讲着讲着,老和尚也有点累 了,所以这一次老和尚不给小和尚讲故事了,老和尚要求小和尚去敲木鱼。 这个敲木鱼是有讲究的,在开始敲之前老和尚会告诉小和尚一个数 n。而小和尚在敲的时候, 第一次敲 1 下, 第二次敲 2 下… 第 n 次敲 n 下, 第 n+1 次敲 n 下, 第 n+2 次敲 n-1 下… 第 2× n 次敲 1 下,第 2× n+1 次敲 1 下, 第 2× n+2 次敲 2 下……如果用一个简单的数列 来表示小和尚 每次敲了多少 下,那应该是: 1, 2, 3,……, n-1, n, n, n-1, n-2,……, 3, 2, 1, 1, 2, 3,……简单说来就是 1~n, n~1, 1~n 一直这么循环地敲下去。小和尚数着数着就不记得自己敲了多少下了,而他只记得自己刚刚敲完第 m 次。 马上老和尚就要来检查小和尚是不是在认真的敲了,小和尚没办法, 只 能求助于你, 希望你能告诉他, 敲完第 m 次的时候,他一共敲了多少下?

    (更多…)