首页 > TAG信息列表 > NOIp
NOIP 2018 普及组初赛试题阅读程序解析
第 18 题 阅读程序写结果: #include<stdio.h> char st[100]; int main() { scanf("%s", st);//输入一个字符串 for (int i = 0; st[i]; ++i) { if (‘A’ <= st[i] && st[i] <= ‘Z’)//如果是大写字母,执行指令 st[i] += 1;//往后退一位(如A变成B,B变成C) }//是小7. [2015年NOIP普及组] 扫雷游戏
题目链接 一个简单的模拟 1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include<iomanip> 5 using namespace std; 6 int n,m; 7 char s[105][105]; 8 int map[105][105]; 9 int dx[10]={0,0,0,1,-1,1,1,-1,-1}; 10 int2022.9.7 Noip 模拟
Noip 模拟 目录Noip 模拟\(\to \text{比赛 link} \leftarrow\)\(\to \text{题面+题解 link} \leftarrow\)报数随机单调栈后缀数组 \(\to \text{比赛 link} \leftarrow\) \(\to \text{题面+题解 link} \leftarrow\) 报数 线性筛+前缀和 #include<bits/stdc++.h> using namespace stNOIP复习(三)线段树
普通线段树 我的线段树 \(debug\)(记录一下做题时犯的错误): 检查 \(build\) 函数是否调用。\(\to segmentation~fault\) 区间操作 \(ql\) 是否有可能大于 \(qr\to segmentation~fault\)。 结构体中元素初值问题(是否赋初值,懒标记初值是否与题目操作冲突)\(\to\) 输出可能变得极大 动临行
2022.9.6 距离 NOIP 2022 还有 \(72\) 天 键盘猫真可爱嘿嘿嘿。。。 DevC++6.3真好使嘿嘿嘿。。。 感谢某个乐于奉献的孩子助我上了黄金。 lmc 来给我们的电脑主机编号了,看来……八九不离十…… 要跟化学的换教室了,六楼上七楼,我们去六楼。 因为他们教练嫌没考好是因为六楼太吵,所ZROI 2022 NOIP十连测 Day1
赛后总结 A是一个签到题,几分钟A掉了 B是一个神仙题,打了20分,剩下的不会了! C是一个神仙题,连20分都不想打 D是一个细节多题,死活过不了第二个样例。 总结:坐牢。 那我打模拟赛是为了什么?难道单纯地练暴力?所以补完题后,应该大量刷题。 B[2017年NOIP提高组] 奶酪
函数判断是否相邻:直径与距离 在进行深搜,标记路过的,若不是且相邻,再调用 注意:第一个和底层需独立判断 #include<bits/stdc++.h>using namespace std;long long t,n,h,r,i,j,b[1005],falg,bj;struct ww{ long long x,y,z;}ab[1005];bool pd(int a,int b){ long long d=(ab[a].x-ab[b][2015年NOIP提高组] 跳石头
先用二分法谋定一个数,temp_ans = (L + R) / 2; 我们假设这个temp_ans ,就是所有删除方案中,maxn个最小差值中的最大的那个,即答案:ans。而根据题目要求,我们需要拿掉M个石头。所以,我们要拿着这个temp_ans 去做个检测,检测是否可以在拿走 <= M 个石头的情况下结束检测。如果可以,则这个temp[2015年NOIP提高组] 跳石头
运用二分策略 先写函数确定距离,然后看要搬的石头数满足题意吗。距离确定后,把间距小于确定距离的需要全部搬走。 然后向左或向右再找更小或大的距离 每次都检查是否能仅移走m块岩石使得所有跳跃距离均大于等于mid 最后输出 代码: #include<bits/stdc++.h>using namespace std;long l[2015年NOIP提高组] 跳石头
一年一度的“跳石头”比赛又要开始了! 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石。组委会已经选择好了两块岩石作为比赛起点和终点。在起点和终点之间,有 N 块岩石(不含起点和终点的岩石)。在比赛过程中,选手们将从起点出发,每一步跳向相邻的岩石,直至到达终点。 为4. [2001年NOIP普及组] 最大公约数和最小公倍数问题
题目链接(码学堂,数据弱) 题目链接(洛谷,数据极强) 摘要: 1.P,Q是正整数(unsigned) 2.要求P,Q以x0为最大公约数,以y0为最小公倍数. 试求:满足条件的所有可能的两个正整数的个数. 分析1: 暴力枚举,看这两个数的最大公约数和最小公倍数是否与题目一样 1 #include<iostream> 2 #include<c[2011年NOIP提高组] 铺地毯
[2011年NOIP提高组] 铺地毯 题目描述: 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯。一共有n张地毯,编号从1到n。现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设,后铺的地毯覆盖在前面已经铺好的地毯之上[2016年NOIP普及组] 买铅笔
#include<iostream> int main() { int num; std::cin>>num; int mt=99999999; for(int i=0;i<3;i++) { int price,number; std::cin>>number>>price; std::div_t calc=div(num,number); int[2001年NOIP普及组] 最大公约数和最小公倍数问题
[2001年NOIP普及组] 最大公约数和最小公倍数问题 题目描述:输入二个正整数x0,y0(2<=x0<100000,2<=y0<=1000000),求出满足下列条件的P,Q的个数条件:1.P,Q是正整数2.要求P,Q以x0为最大公约数,以y0为最小公倍数.试求:满足条件的所有可能的两个正整数的个数. 他还良心的解释了一下样例3. [2011年NOIP提高组] 铺地毯
题目链接 本题精彩所在:数据范围 数据范围是x,y分别到达了100000,开二维数组无疑会空间爆炸 因此,我们可以通过他给予的坐标范围(围成一个四边形) 通过逆序判断坐标是否越界,来做出答案 1 #include<iostream> 2 using namespace std; 3 int n; 4 struct puditan 5 { 6 int x;4. [2003年NOIP普及组] 乒乓球!!!!(有疑惑)
【问题描述】华华通过以下方式进行分析,首先将比赛每个球的胜负列成一张表,然后分别计算在11分制和21分制下,双方的比赛结果(截至记录末尾)。 比如现在有这么一份记录,(其中W表示华华获得一分,L表示华华对手获得一分): WWWWWWWWWWWWWWWWWWWWWWLW 在11分制下,此时比赛的结果是华华第一局11比0[2008年NOIP普及组] 排座椅
[2008年NOIP普及组] 排座椅 思路:首先运用结构体存入每行每列的具体信息,读入 m行n列 k条横向l条纵向通道 d对同学说话, 按顺序为每行每列编号。再一对一对地拆说话的同学(要计数),根据需求度排序,最后输出k行 l列。 代码如下: #include<iostream> #include<cstdio> #include<algorithm> u[2005年NOIP普及组] 陶陶摘苹果
#include<iostream> int main() { int array[10]; for(int i=0;i<10;i++) std::cin>>array[i]; int height; const int chair=30; std::cin>>height; int count=0; for(int i=0;i<10;i++) { using nNOIP 模拟赛 长寿花 题解
NOIP 模拟赛 长寿花 题解 要放 \(n\) 层物品,第 \(i\) 层有 \(a_i\) 个位置放物品,物品有 \(m\) 中颜色,有约束条件: 同一层两个相邻物品颜色不能相同。 相邻两层颜色集合不能相同。 求方案数 \(\pmod p\) \(n,m\le 10^6,a_i\le 5000,\sum_{i=1}^n a_i\le 10^7,p\le 10^9\) sol 由于[2010年NOIP普及组] 接水问题
学校里有一个水房,水房里一共装有 m 个龙头可供同学们打开水,每个龙头每秒钟的供水量相等,均为 1。 现在有 n 名同学准备接水,他们的初始接水顺序已经确定。将这些同学按接水顺序从1到n编号,i 号同学的接水量为wi。接水开始时,1到m号同学各占一个水龙头,并同时打开水龙头接水。当其中某[2010年NOIP普及组] 接水问题
[2010年NOIP普及组] 接水问题 分析:根据题意,要输出所用时间最长的那个人(包括那个人在等待的时间),分为两种情况,第一种是水龙头多于要打水的人数,这种情况下就可以直接写一个比较函数输出最大的人打水所用的时间,另一种是水龙头少于要打水的人,这种情况就要写一个函数比较哪个打水的人用[2007年NOIP普及组] 纪念品分组
分析:因为最多两个一组,所以可以按最大的和最小的一组,是否满足条件,如果满足,同时赋值0,. #include<bits/stdc++.h>using namespace std;int n,m,i,a[300000],s=0,j;int main(){ cin>>m>>n; for(i=1;i<=n;i++){ cin>>a[i]; } sort(a+1,a+n+1,greater<int>()); int bj=n; for(i=1;[2002年NOIP提高组] 均分纸牌
分析:每次移动都需要将其补全或删掉,如果这个正好是平均数,则步骤次数不增加 9 8 17 6 -1 -2 7 -4 0 -3 4 -4 0 0 4 -4 0 0 0 0 #include<bits/stdc++.h>using namespace std;int main(){ int n,s=0,a[200],ans=0; cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; s=s+a[i]; } s=s/n; f[2013年NOIP提高组] 积木大赛
[2013年NOIP提高组] 积木大赛 思路:只需要进行n次循环,(两个数之间,如果后面的数大于前面的)用后面的数-前面的差值累加,就能得出操作次数啦~ 代码如下: #include<iostream> #include<cmath> using namespace std; int main() { int n,last=0,now,i,ans=0;//ans 操作次数[2004年NOIP普及组] FBI树
[2004年NOIP普及组] FBI树 思路:运用递归。已知“0”和“1”组成的字符串分为三类:全“0”串称为B串,全“1”串称为I串,既含“0”又含“1”的串则称为F串。 写一个后序遍历的函数,然后递归,自己调用自己就好了。每次输出根节点,直至全部输出。 代码如下: #include<bits/stdc++.h> using na