题目涉及算法:

  • 数字反转:模拟;
  • 统计单词数:模拟;
  • 瑞士轮:模拟/排序;
  • 表达式的值:后缀表达式/DP。

数字反转

题目链接:https://www.luogu.org/problem/P1307

这道题目是一道基础的模拟题,只需要模拟将数字进行翻转就可以了,注意 \(0\) 和 负数。

实现代码如下:

#include <bits/stdc++.h>
using namespace std;
void solve(int num) {
if (num < 0) { putchar('-'); num = -num; }
if (num == 0) { cout << 0 << endl; return; }
int t = 0;
while (num > 0) {
t = t * 10 + num % 10;
num /= 10;
}
cout << t << endl;
}
int n;
int main() {
cin >> n;
solve(n);
return 0;
}

统计单词数

题目链接:https://www.luogu.org/problem/P1308

这道题目就是一道简单的字符串匹配问题。

关于字符串匹配问题有一些经典的算法(比如KMP等),但是我们这道题目数据量比驾小所以直接暴力比较就可以了。

需要注意的是字符串的读入( char 数组使用 getsstring 使用 cin.getline

实现代码如下:

#include <bits/stdc++.h>
using namespace std;
char s[12], t[1000010];
int n, m, cnt, idx;
int main() {
gets(s); gets(t);
for (n = 0; s[n]; n ++) s[n] = tolower(s[n]);
for (m = 0; t[m]; m ++) t[m] = tolower(t[m]);
for (int i = 0; i+n-1 < m; i ++) {
if ((i+n == m || t[i+n] == ' ') && (i == 0 || t[i-1] == ' ')) {
bool flag = true;
for (int j = 0; j < n; j ++) if (s[j] != t[i+j]) {
flag = false;
break;
}
if (flag) {
cnt ++;
if (cnt == 1) idx = i;
}
}
}
if (cnt) printf("%d %d\n", cnt, idx);
else puts("-1");
return 0;
}

瑞士轮

题目链接:https://www.luogu.org/problem/P1309

这道题目就是按照题目描述来模拟一下就可以了。

首先我们先设计我们的比较函数:分数从高到低排,分数相同时按编号从小到大排。

然后呢,循环R轮。

在最开始需要使用比较函数对这 2n 个人进行一下排序。

然后接下来(R轮里面的)每一轮,我都比较相邻的两个元素,然后实力高一点的那个加一分;然后再按照比较函数拍一下序。

实现代码如下(开了O2优化):

#include <bits/stdc++.h>
using namespace std;
const int maxn = 200200;
int n, R, Q;
struct Node {
int id, s, w;
} a[maxn];
bool cmp(Node a, Node b) { return a.s > b.s || a.s == b.s && a.id < b.id; }
int main() {
scanf("%d%d%d", &n, &R, &Q);
n *= 2;
for (int i = 0; i < n; i ++) a[i].id = i+1;
for (int i = 0; i < n; i ++) scanf("%d", &a[i].s);
for (int i = 0; i < n; i ++) scanf("%d", &a[i].w);
sort(a, a+n, cmp);
while (R --) {
for (int i = 0; i < n; i += 2) {
if (a[i].w > a[i+1].w) a[i].s ++;
else a[i+1].s ++;
}
sort(a, a+n, cmp);
}
printf("%d\n", a[Q-1].id);
return 0;
}

表达式的值

题目链接:https://www.luogu.org/problem/P1310

本题涉及算法:前缀表达式转后缀表达式,计算结果的时候有用到递归思想。

题解地址:https://www.cnblogs.com/codedecision/p/11746099.html

作者:zifeiy

2011年NOIP普及组复赛题解的更多相关文章

  1. 2010年NOIP普及组复赛题解

    题目及涉及的算法: 数字统计:入门题: 接水问题:基础模拟题: 导弹拦截:动态规划.贪心: 三国游戏:贪心.博弈论. 数字统计 题目链接:洛谷 P1179 这道题目是一道基础题. 我们只需要开一个变量 ...

  2. 2017年NOIP普及组复赛题解

    题目涉及算法: 成绩:入门题: 图书管理员:模拟: 棋盘:最短路/广搜: 跳房子:RMQ/二分答案/DP(本人解法). 成绩 题目链接:https://www.luogu.org/problemnew ...

  3. 2016年NOIP普及组复赛题解

    题目涉及算法: 买铅笔:入门题: 回文日期:枚举: 海港:双指针: 魔法阵:数学推理. 买铅笔 题目链接:https://www.luogu.org/problem/P1909 设至少要买 \(num ...

  4. 2014年NOIP普及组复赛题解

    题目涉及算法: 珠心算测验:枚举: 比例简化:枚举: 螺旋矩阵:模拟: 子矩阵:状态压缩/枚举/动态规划 珠心算测验 题目链接:https://www.luogu.org/problem/P2141 ...

  5. 2013年NOIP普及组复赛题解

    题目涉及算法: 计数问题:枚举: 表达式求值:栈: 小朋友的数字:动态规划: 车站分级:最长路. 计数问题 题目链接:https://www.luogu.org/problem/P1980 因为数据量 ...

  6. 2008年NOIP普及组复赛题解

    题目涉及算法: ISBN号码:简单字符串模拟: 排座椅:贪心: 传球游戏:动态规划: 立体图:模拟. ISBN号码 题目链接:https://www.luogu.org/problem/P1055 简 ...

  7. 2005年NOIP普及组复赛题解

    题目涉及算法: 陶陶摘苹果:入门题: 校门外的树:简单模拟: 采药:01背包: 循环:模拟.高精度. 陶陶摘苹果 题目链接:https://www.luogu.org/problem/P1046 循环 ...

  8. 2018年NOIP普及组复赛题解

    题目涉及算法: 标题统计:字符串入门题: 龙虎斗:数学题: 摆渡车:动态规划: 对称二叉树:搜索. 标题统计 题目链接:https://www.luogu.org/problem/P5015 这道题目 ...

  9. 2015年NOIP普及组复赛题解

    题目涉及算法: 金币:入门题: 扫雷游戏:入门题: 求和:简单数学推导: 推销员:贪心. 金币 题目链接:https://www.luogu.org/problem/P2669 入门题,直接开一个循环 ...

随机推荐

  1. selenium(3):学习操作元素基本方法

    来源:<selenium webdriver基于Python源码案例> 一.打开网页①第一步:从selenium里面导入webdriver模块②打开浏览器(Ie和Chrome对应下面的)③ ...

  2. Freckles (最小生成树)

    #include<iostream> #include<cstring> #include<stdio.h> #include<queue> #incl ...

  3. React高阶组件 和 Render Props

    高阶组件 本质 本质是函数,将组件作为接收参数,返回一个新的组件.HOC本身不是React API,是一种基于React组合的特而形成的设计模式. 解决的问题(作用) 一句话概括:功能的复用,减少代码 ...

  4. Python使用Pandas高效处理测试数据

    转自:https://www.cnblogs.com/keyou1/p/10948796.html 一.思考 1.Pandas是什么? 功能极其强大的数据分析库 可以高效地操作各种数据集 csv格式的 ...

  5. SDUT-3376_数据结构实验之查找四:二分查找

    数据结构实验之查找四:二分查找 Time Limit: 30 ms Memory Limit: 65536 KiB Problem Description 在一个给定的无重复元素的递增序列里,查找与给 ...

  6. Mathcad 是一种工程计算软件,主要运算功能:代数运算、线性代数、微积分、符号计算、2D和3D图表、动画、函数、程序编写、逻辑运算、变量与单位的定义和计算等。

    Mathcad软件包Mathcad是由MathSoft公司(2006 年4 月被美国PTC收购)推出的一种交互式数值计算系统. Mathcad 是一种工程计算软件,作为工程计算的全球标准,与专有的计算 ...

  7. shops

    #!/usr/bin/env python #coding:utf- import urllib2,sys,re,os,string reload(sys); sys.setdefaultencodi ...

  8. 目录中的pwd、cd及ls命令

    1.pwd命令(确定当前所在目录) pwd命令以绝对路径的方式显示用户当前工作目录.命令将当前目录的全路径名称(从根目录)写入标准输出.全部目录使用/分隔.第一个/表示根目录,最后一个目录是当前目录. ...

  9. day39-Spring 14-Spring的JDBC模板:DBCP连接池配置

    一般常用的连接池是DBCP和C3P0. package cn.itcast.spring3.demo1; import java.sql.DriverManager; import org.junit ...

  10. 使用virtualenv使得Python2和Python3并存

    1:下载python3源码并安装 wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz .tgz cd Python-.tgz . ...