洛谷
zmuy
Less interests, More interest.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
P1328 [NOIP2014 提高组] 生活大爆炸版石头剪刀布
代码#include<bits/stdc++.h>using namespace std;int main(){ int N,Na,Nb,i,a[200],b[200],Sa=0,Sb=0; cin>>N>>Na>>Nb; for(i=0;i<Na;i++) cin>>a[i]; for(i=0;i<Nb;i++) cin>>b[i]; for(i=0;i<N;i++){ if(a[i.原创 2021-06-28 15:01:04 · 169 阅读 · 0 评论 -
P4924 [1007]魔法少女小Scarlet
代码1、先将数组a依次赋值2、对于每次输入的命令,执行顺时针或逆时针的对应操作,先将指定2r+1阶数组按顺时针或逆时针顺序存入数组b,然后再将数组b按正常顺序存进2r+1阶的数组。#include<bits/stdc++.h>using namespace std;int a[500][500],b[250000],n,m;int main(){ int i,j,k=1; int x,y,r,z,u; cin>>n>>m; for(i=1;i&.原创 2021-06-14 15:24:21 · 286 阅读 · 0 评论 -
P1303 A*B Problem
代码#include<bits/stdc++.h>using namespace std;char a1[10001],b1[10001];int a[10001],b[10001],i,x,len,j,c[10001];int main (){ cin>>a1>>b1; int lena=strlen(a1); int lenb=strlen(b1); for(i=1;i<=lena;i++) a[i]=a1[lena-.原创 2021-06-11 16:46:41 · 179 阅读 · 0 评论 -
P1601 A+B Problem(高精)
代码#include<bits/stdc++.h>using namespace std;void f(string &a,string &b);int main(){ string a,b; cin>>a>>b; if(a.length()>=b.length()) f(a,b); else f(b,a); return 0;}void f(string &a,string &b){ int i=.原创 2021-06-10 16:15:39 · 152 阅读 · 0 评论 -
P1563 [NOIP2016 提高组] 玩具谜题
代码1、每个玩具人的朝向用结构体来存储2、对于每个命令,如果其方向和玩具人的朝向一样的话就向数组减小方向移动,反之往数组增大方向移动,注意判断移动越界的情况,另加处理。#include<bits/stdc++.h>using namespace std;struct People{ int toward; string job;};int main(){ int n,m,i,j=0,a,b; People people[100000]; cin>>n&g.原创 2021-06-09 15:09:55 · 232 阅读 · 2 评论 -
P2670 [NOIP2015 普及组] 扫雷游戏
代码1、用字符数组接受所有字符2、依次检查每个非地雷格周围的地雷数#include<bits/stdc++.h>using namespace std;char s[105][105];int n,m;void f(int x,int y);int main(){ int i,j; cin>>n>>m; for(i=0;i<n;i++) for(j=0;j<m;j++) cin>>s[i][j]; for(i.原创 2021-06-08 19:42:40 · 241 阅读 · 1 评论 -
P1042 [NOIP2003 普及组] 乒乓球
代码1、用字符数组接收输入的所有字符,结束字符E也接收了,所以在后面循环的时候只用循环到倒数第二个字符就可以了。2、乒乓球的规则是结束时比分需要大于等于2,也就是说11:10是不行的,选手还得继续打,直到乙方分数大于等于另一方2分。#include<bits/stdc++.h>using namespace std;int main(){ int w=0,l=0; int i=0,j; char c,s[63000]; while(c!='E'){ cin>&g.原创 2021-06-07 15:43:12 · 619 阅读 · 0 评论 -
P5744 【深基7.习9】培训
代码培训了一年,年龄也要加一。#include<bits/stdc++.h>using namespace std;struct Student{ string name; int age; int scores;};int main(){ Student stu; int n,i; cin>>n; for(i=0;i<n;i++){ cin>>stu.name>>stu.age>>stu.scores;.原创 2021-06-06 15:36:29 · 247 阅读 · 0 评论 -
P5743 【深基7.习8】猴子吃桃
题目描述一只小猴买了若干个桃子。第一天他刚好吃了这些桃子的一半,又贪嘴多吃了一个;接下来的每一天它都会吃剩余的桃子的一半外加一个。第 n(n≤20) 天早上起来一看,只剩下 1 个桃子了。请问小猴买了几个桃子?代码用逆向思维计算#include<bits/stdc++.h>using namespace std;int main(){ int n,i,s=1; cin>>n; for(i=1;i<n;i++) s=(s+1)*2; cout<&原创 2021-06-06 15:23:09 · 660 阅读 · 0 评论 -
P2415 集合求和
题目描述给定一个集合s(集合元素数量<=30),求出此集合所有子集元素之和。输入格式集合中的元素(元素<=1000)输出格式和代码首先,直接暴力计算肯定行不通,需要用公式计算。元素个数为n的数组所有子集个数为2^n个,要找一个元素出现的次数肯定不好找,那么就拿总的个数减去没有这个元素的子集个数(也就是 2(n-1)个),所以每个元素出现的次数就等于2(n-1)。那么就需要拿数组和乘以2^(n-1)。#include<bits/stdc++.h>using nam原创 2021-06-06 15:13:25 · 1140 阅读 · 5 评论 -
P1304 哥德巴赫猜想
代码#include<bits/stdc++.h>using namespace std;void f(int n);int f1(int n);int main(){ int n,i; cin>>n; for(i=4;i<=n;i+=2) f(i); return 0;} void f(int n){ int i; for(i=2;i<=n/2;i++){ if(f1(i)==1&&f1(n-i)==1){ .原创 2021-06-05 20:17:34 · 148 阅读 · 0 评论 -
P5742 【深基7.例11】评等级
代码#include<bits/stdc++.h>using namespace std;struct Student{ int ID; int score_1; int score_2; float total;};int main(){ int n,i; Student stu; cin>>n; for(i=0;i<n;i++){ cin>>stu.ID>>stu.score_1>>stu.score_.原创 2021-06-05 17:26:16 · 293 阅读 · 0 评论 -
P5741 【深基7.例10】旗鼓相当的对手 - 加强版
题目描述现有 N(N≤1000) 名同学参加了期末考试,并且获得了每名同学的信息:姓名(不超过 8 个字符的字符串,没有空格)、语文、数学、英语成绩(均为不超过 150 的自然数)。如果某对学生 <i,j> 的每一科成绩的分差都不大于 5,且总分分差不大于 10,那么这对学生就是“旗鼓相当的对手”。现在我们想知道这些同学中,哪些是“旗鼓相当的对手”?请输出他们的姓名。所有人的姓名是按照字典序给出的,输出时也应该按照字典序输出所有对手组合。也就是说,这对组合的第一个名字的字典序应该小于第二个;原创 2021-06-04 22:13:08 · 513 阅读 · 0 评论 -
P5740 【深基7.例9】最厉害的学生
题目描述现有 N(N≤1000) 名同学参加了期末考试,并且获得了每名同学的信息:姓名(不超过 8 个字符的字符串,没有空格)、语文、数学、英语成绩(均为不超过 150 的自然数)。总分最高的学生就是最厉害的,请输出最厉害的学生各项信息(姓名、各科成绩)。如果有多个总分相同的学生,输出靠前的那位。代码这道题就是考一个基本的结构体。#include<bits/stdc++.h>using namespace std;struct Student{ string name; in原创 2021-06-04 21:43:01 · 1073 阅读 · 0 评论 -
P5461 赦免战俘
代码f() 函数:输入矩阵的左上角顶点坐标和n;然后将该矩阵的 左上角部分值变为‘0’,其余三部分则继续处理;结束条件当 n=1时终止递归。f1() 函数:计算2^n的值。main() 函数:定义n最大时的二维数组,并初始化为‘1’。#include<bits/stdc++.h>using namespace std;void f(int x,int y,int n);int f1(int n);char s[1024][.原创 2021-06-04 16:01:19 · 189 阅读 · 0 评论 -
P5739 【深基7.例7】计算阶乘
题目描述求 n!(n≤12),也就是 1×2×3…×n。挑战:尝试不使用循环语句(for、while)完成这个任务代码不用循环的话就用递归函数来实现。#include<bits/stdc++.h>using namespace std;int f(int n);int main(){ int n; cin>>n; cout<<f(n); return 0;}int f(int n){ if(n==1) return 1; else re原创 2021-06-03 16:06:00 · 276 阅读 · 0 评论 -
P5738 【深基7.例4】歌唱比赛
题目描述n(n≤100) 名同学参加歌唱比赛,并接受 m(m≤20) 名评委的评分,评分范围是 0 到 10 分。这名同学的得分就是这些评委给分中去掉一个最高分,去掉一个最低分,剩下 m−2 个评分的平均数。请问得分最高的同学分数是多少?评分保留 2 位小数。代码输入一个同学的所有评分,就算出他的得分,如果比当前最高分高就记录下来,最后输出。#include<bits/stdc++.h>using namespace std;int main(){ int n,m,a[20],原创 2021-06-03 15:59:34 · 981 阅读 · 0 评论 -
P5737 【深基7.例3】闰年展示
题目描述输入 x,y(1582≤x<y≤3000) ,输出 [x,y] 区间中闰年个数,并在下一行输出所有闰年年份数字,使用空格隔开。代码#include<bits/stdc++.h>using namespace std;int main(){ int x,y,a[1500],i,j=0,cnt=0; cin>>x>>y; for(i=x;i<=y;i++){ if((i%100!=0&&i%4==0)||i%400=原创 2021-06-02 14:59:25 · 348 阅读 · 0 评论 -
P5736 【深基7.例2】质数筛
题目描述输入 n(n≤100) 个不大于 100000 的整数。要求全部储存在数组中,去除掉不是质数的数字,依次输出剩余的质数。代码#include<bits/stdc++.h> using namespace std;int ZS(int x){ int i; if(x==1) return 0; for(i=2;i<=sqrt(x);i++) if(x%i==0) return 0; return 1;}int main(){ int n,x,i; c原创 2021-06-02 14:50:39 · 441 阅读 · 0 评论 -
P5735 【深基7.例1】距离函数
代码#include<bits/stdc++.h>using namespace std;float d(float x,float y);int main(){ float x1,y1,x2,y2,x3,y3; cin>>x1>>y1>>x2>>y2>>x3>>y3; printf("%.2f",d(x2-x1,y2-y1)+d(x3-x1,y3-y1)+d(x3-x2,y3-y2)); return.原创 2021-05-31 16:06:02 · 324 阅读 · 0 评论 -
P1598 垂直柱状图
代码#include<bits/stdc++.h>using namespace std;int main(){ string s; int i,j,a[26],max=0; memset(a,0,sizeof(a)); for(i=0;i<4;i++){ getline(cin,s); for(j=0;j<s.length();j++){ if(s[j]>='A'&&s[j]<='Z') a[s[j]-'A']+.原创 2021-05-31 15:40:31 · 193 阅读 · 2 评论 -
P1597 语句解析
代码需要注意赋值语句可能是自己赋值给自己。#include<bits/stdc++.h>using namespace std;int main(){ string s; int a=0,b=0,c=0,i,j; cin>>s; for(i=0;i<s.length();i+=5){ j=i+3; if(s[i]=='a'){ if(s[j]=='b') a=b; else if(s[j]=='a') a=a; else if(s.原创 2021-05-30 15:19:52 · 199 阅读 · 0 评论 -
P1200 [USACO1.1]你的飞碟在这儿Your Ride Is Here
代码#include<bits/stdc++.h>using namespace std;int main(){ string s1,s2; long a=1,b=1; int i; cin>>s1>>s2; for(i=0;i<s1.length();i++) a*=(s1[i]-'A'+1); for(i=0;i<s2.length();i++) b*=(s2[i]-'A'+1); if(a%47==b%47) cout&.原创 2021-05-30 14:52:54 · 230 阅读 · 0 评论 -
P1603 斯诺登的密码
代码用cin输入字符串s,因为cin以空格符为输入终止符,所以就能依次提取每个单词,知道输入句号停止输入。然后用数组a装提取出来的数,然后用一个冒泡排序输出,注意输出的时候要以域宽为2 输出。#include<bits/stdc++.h>using namespace std;void f(int *a,int n);int main(){ string s; int a[6],i=0,j; while(s!="."){ cin>>s; if(s==".原创 2021-05-29 18:51:52 · 238 阅读 · 0 评论 -
P1321 单词覆盖还原
代码就是按照优先级(girl>gir,irl>gi,ir,rl>a,i,r,l和boy>bo,oy>b,o,y)的顺序,注意查找之后i要相应的跳过这个串。#include<bits/stdc++.h>using namespace std;int main(){ string s; int i,cnt_b=0,cnt_g=0; cin>>s; for(i=0;i<s.length();i++){ if(s[i]=='g'&.原创 2021-05-23 22:39:45 · 205 阅读 · 0 评论 -
P3741 honoka的键盘
代码需要注意的是,要分两次查找,第一次查找"VK",找到后并将其改变,不能改成一样的;第二次查找找到相同两个就结束查找。#include<bits/stdc++.h>using namespace std;int main(){ int n,i,cnt=0,flag=1; char s[100]; cin>>n>>s; for(i=0;i<n-1;i++){ if(s[i]=='V'&&s[i+1]=='K'){ cn.原创 2021-05-23 21:16:21 · 302 阅读 · 0 评论 -
P1765 手机
代码#include<bits/stdc++.h>using namespace std;int main(){ string s; int a[26],i,cnt=0; for(i=0;i<18;i++) a[i]=i%3+1; for(i=19;i<25;i++) a[i]=i%3; a[18]=4;a[21]=3;a[24]=3;a[25]=4; getline(cin,s); for(i=0;i<s.length();i++){ .原创 2021-05-23 17:11:37 · 203 阅读 · 0 评论 -
P1308 [NOIP2011 普及组] 统计单词数
代码1.因为匹配单词时不区分大小写,所以需要先将单词和句子都转换为同大写或者同小写。2.因为只能匹配独立的单词,所以需要判断找到的单词前后都得是空格符,并且找到了一个单词后就要将它改变。3.如果找到的是一个单词的一部分,也需要将之改变。#include<bits/stdc++.h>using namespace std;void f(string &s){ int i; while(s[i]){ if(s[i]>='A'&&s[i]<=.原创 2021-05-22 17:31:36 · 626 阅读 · 0 评论 -
P5734 【深基6.例6】文字处理软件
代码本题就是在考察string类的常用成员函数,需要注意的是find函数如果没找到的话会返回一个特别大的数,不是负数,所以这里的判断条件不是和0比而是和字符串长度比。#include<bits/stdc++.h>using namespace std;int main(){ int q,i,num,a,b; string s,str; cin>>q; cin>>s; for(i=0;i<q;i++){ cin>>num; .原创 2021-05-21 21:40:28 · 298 阅读 · 0 评论 -
P5015 [NOIP2018 普及组] 标题统计
代码字符串的输出不能用cin,因为cin的">>"操作符输入字符串时,空格会被作为输入的分隔符,如果希望空格被读入,则需要用getline。#include<bits/stdc++.h>using namespace std;int main(){ string s; getline(cin,s); int i,cnt=0; while(s[i]){ if(s[i]!=' ') cnt++; i++; } cout<<cnt; retu.原创 2021-05-21 21:05:03 · 691 阅读 · 0 评论 -
P1125 [NOIP2008 提高组] 笨小猴
代码#include<bits/stdc++.h>using namespace std;int ZS(int x,int y);int main(){ char s[100]; int i,a[26],max=0,min=100; memset(a,0,sizeof(a)); cin>>s; i=0; while(s[i]){ a[s[i]-'a']++; i++; } for(i=0;i<26;i++){ if(a[i]>ma.原创 2021-05-18 21:21:43 · 267 阅读 · 0 评论 -
P1914 小书童——凯撒密码
代码#include<bits/stdc++.h>using namespace std;int main(){ int n,i=0; char s[50]; cin>>n>>s; while(s[i]){ s[i]='a'+(s[i]-'a'+n)%26; i++; } cout<<s; return 0;}原创 2021-05-17 23:02:16 · 347 阅读 · 0 评论 -
P5733 【深基6.例1】自动修正
题目描述大家都知道一些办公软件有自动将字母转换为大写的功能。输入一个长度不超过 100 且不包括空格的字符串。要求将该字符串中的所有小写字母变成大写字母并输出。代码#include<bits/stdc++.h>using namespace std;int main(){ char s[100]; cin>>s; int i=0; while(s[i]){ if(s[i]<='z'&&s[i]>='a') s[i]-=('a原创 2021-05-17 22:43:28 · 282 阅读 · 0 评论 -
P1205 [USACO1.2]方块转换 Transformations
代码二维数组a[][]:存储原始图案;二维数组b[][]:存储新图案;一维数组c[]:存储变换后的图案,用一维数组存储方便比较;函数cmp():用于比较变换后的正方形和新图案进行比较;函数f1~f6():代表前六个转换方式;#include<bits/stdc++.h>using namespace std;int n;char a[12][12],b[12][12],c[150];int cmp();int f1();int f2();int f3();int .原创 2021-05-17 20:54:13 · 303 阅读 · 0 评论 -
P1320 压缩技术(续集版)
代码为了避免在判断0 1过程中还要换行,所以我把每一行的字符串拼接在了一起;需要注意的是如果第一个字符是’1’的话,也就是’0’的个数为0,这个0也需要输出。#include<bits/stdc++.h>using namespace std;int main(){ int i,n,cnt=1; string a,s; cin>>a; s=a; n=a.length(); for(i=1;i<n;i++){ cin>>a; s+.原创 2021-05-16 17:06:51 · 490 阅读 · 0 评论 -
P1319 压缩技术
代码输入压缩码的时候需要注意:先获取第一个数即为n,后面数通过其和等于n平方时终止输入。然后就是先将字符数组初始化为‘0’,只需要将连续为1的元素赋值就好了;这里我用的是一位数组,这样赋值的时候比较方便,只需要在最后输出的时候进行换行处理就可以了。#include<bits/stdc++.h>using namespace std;int main(){ int i,a[200],n,j=0,k,cnt=0,u=0; char s[40000]; memset(s,'0',s.原创 2021-05-16 16:01:33 · 409 阅读 · 1 评论 -
P1789 【Mc生存】插火把
代码初始化一个全为0的字符数组,‘0’表示黑暗,每输入一个火把或者荧光石的坐标就把其照亮的范围内的元素变为‘1’表示明亮,最后搜索黑暗的地方,输出个数。#include<bits/stdc++.h>using namespace std;int main(){ int n,m,k,i,x,y,u,v,cnt=0; char s[105][105]; memset(s,'0',sizeof(s)); cin>>n>>m>>k; for(i.原创 2021-05-16 15:06:41 · 471 阅读 · 0 评论 -
P5732 【深基5.习7】杨辉三角
题目描述给出 n(n≤20),输出杨辉三角的前 n 行。如果你不知道什么是杨辉三角,可以观察样例找找规律。代码杨辉三角形的每一行其实就是一组组合数,就只需要把每个组合数算出然后一次输出就好了。#include<bits/stdc++.h>using namespace std;int C(int n,int m);void H(int x);int main(){ int n,i; cin>>n; for(i=0;i<n;i++) H(i);原创 2021-05-15 21:42:14 · 662 阅读 · 2 评论 -
P5731 【深基5.习6】蛇形方阵
题目描述给出一个不大于 9 的正整数 n,输出 n×n 的蛇形方阵。从左上角填上 1 开始,顺时针方向依次填入数字,如同样例所示。注意每个数字有都会占用 3 个字符,前面使用空格补齐。代码按照顺时针方向一圈一圈的从外向内给方阵赋值,每一圈都是相同的四个步骤,向左——向下——向右——向上。#include<bits/stdc++.h>using namespace std;int main(){ int n,m=1,i=1,j=1,a[10][10]; memset(a,0,原创 2021-05-14 16:13:30 · 719 阅读 · 2 评论 -
P1161 开灯
题目描述在一条无限长的路上,有一排无限长的路灯,编号为1,2,3,4,…。每一盏灯只有两种可能的状态,开或者关。如果按一下某一盏灯的开关,那么这盏灯的状态将发生改变。如果原来是开,将变成关。如果原来是关,将变成开。在刚开始的时候,所有的灯都是关的。小明每次可以进行如下的操作:指定两个数a,t(a为实数,t为正整数)。将编号为[a],[2×a],[3×a],…,[t×a]的灯的开关各按一次。其中[k]表示实数k的整数部分。在小明进行了n次操作后,小明突然发现,这个时候只有一盏灯是开的,小明很想知道这原创 2021-05-14 15:28:38 · 278 阅读 · 1 评论
分享