2011年NOIP普及组复赛题解
题目涉及算法:
- 数字反转:模拟;
- 统计单词数:模拟;
- 瑞士轮:模拟/排序;
- 表达式的值:后缀表达式/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 数组使用 gets , string 使用 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普及组复赛题解的更多相关文章
- 2010年NOIP普及组复赛题解
题目及涉及的算法: 数字统计:入门题: 接水问题:基础模拟题: 导弹拦截:动态规划.贪心: 三国游戏:贪心.博弈论. 数字统计 题目链接:洛谷 P1179 这道题目是一道基础题. 我们只需要开一个变量 ...
- 2017年NOIP普及组复赛题解
题目涉及算法: 成绩:入门题: 图书管理员:模拟: 棋盘:最短路/广搜: 跳房子:RMQ/二分答案/DP(本人解法). 成绩 题目链接:https://www.luogu.org/problemnew ...
- 2016年NOIP普及组复赛题解
题目涉及算法: 买铅笔:入门题: 回文日期:枚举: 海港:双指针: 魔法阵:数学推理. 买铅笔 题目链接:https://www.luogu.org/problem/P1909 设至少要买 \(num ...
- 2014年NOIP普及组复赛题解
题目涉及算法: 珠心算测验:枚举: 比例简化:枚举: 螺旋矩阵:模拟: 子矩阵:状态压缩/枚举/动态规划 珠心算测验 题目链接:https://www.luogu.org/problem/P2141 ...
- 2013年NOIP普及组复赛题解
题目涉及算法: 计数问题:枚举: 表达式求值:栈: 小朋友的数字:动态规划: 车站分级:最长路. 计数问题 题目链接:https://www.luogu.org/problem/P1980 因为数据量 ...
- 2008年NOIP普及组复赛题解
题目涉及算法: ISBN号码:简单字符串模拟: 排座椅:贪心: 传球游戏:动态规划: 立体图:模拟. ISBN号码 题目链接:https://www.luogu.org/problem/P1055 简 ...
- 2005年NOIP普及组复赛题解
题目涉及算法: 陶陶摘苹果:入门题: 校门外的树:简单模拟: 采药:01背包: 循环:模拟.高精度. 陶陶摘苹果 题目链接:https://www.luogu.org/problem/P1046 循环 ...
- 2018年NOIP普及组复赛题解
题目涉及算法: 标题统计:字符串入门题: 龙虎斗:数学题: 摆渡车:动态规划: 对称二叉树:搜索. 标题统计 题目链接:https://www.luogu.org/problem/P5015 这道题目 ...
- 2015年NOIP普及组复赛题解
题目涉及算法: 金币:入门题: 扫雷游戏:入门题: 求和:简单数学推导: 推销员:贪心. 金币 题目链接:https://www.luogu.org/problem/P2669 入门题,直接开一个循环 ...
随机推荐
- JZOJ 平衡的子集
Description 夏令营有N个人,每个人的力气为M(i).请大家从这N个人中选出若干人,如果这些人可以分成两组且两组力气之和完全相等,则称为一个合法的选法,问有多少种合法的选法? Input 第 ...
- php去除文件bom头
有时候在ajax返回的json数据前多出一些不明的字符,就是所谓的bom头,导致javascript解析json格式失败,下面贴出一段PHP代码实现检测和去除bom头. <?php header ...
- Eclipse创建jsp web项目
Eclipse 是一个开放源代码的.基于Java的可扩展开发平台.就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境.幸运的是,Eclipse 附带了一个标准的插件集,包括Java开 ...
- 计算机网络3.2&3.3(第二节介质&第三节多路复用)
有限的传播介质 双绞线 双绞线电缆 双绞线总结 2 同轴电缆 粗细电缆的传输距离 现在基本都用双绞线和光线 同轴电缆用于居民小区和家庭使用 3 光纤 光纤中以光信号的形式进行传播 正如我们现在看到这样 ...
- 使用split_size优化的ODPS SQL的场景
使用split_size优化的ODPS SQL的场景 首先有两个大背景需要说明如下:说明1:split_size,设定一个map的最大数据输入量,单位M,默认256M.用户可以通过控制这个变量,从而达 ...
- bzoj1821 部落划分
Description 聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒岛上的所有野人都属于同一个部落,野人们总是拉帮结派形成属于自己的部落,不同的部落之间则经常发生争斗.只是,这一切都成 ...
- vagrant up提示"Couldn't open file /path/to/base"的错误解决方法
在vagrant使用命令vagrant up启动虚拟机时 出错: C:\Vagrant>vagrant up Bringing machine 'default' up with 'virtua ...
- 重装系统后ORACLE数据库恢复的方法
如果我们的操作系统出现问题,重装系统后,ORACLE数据库应该如何恢复呢?下文就为您列举了两个重装系统后ORACLE数据库恢复的方法,供您参考. ORACLE数据库恢复的方法我们经常会用到,下面就为您 ...
- 在 Linux Mint 19 上安装 zsh 和设置小键盘一步到位
在 Linux Mint 19 上安装 zsh 和设置小键盘 安装 zsh 并设置 zsh 为默认 shell 安装 sudo apt install zsh 设置 zsh 为默认 shell,注意没 ...
- [java]网上商城错误集锦 2016-05-08 21:49 499人阅读 评论(32) 收藏
网上商城敲到了第三天,马上就要踏入第四天啦,不过敲得这几天,学习到了不少东西,也接触了很多新东西,当然,遇到最多的,就是各种bug!下面总结一下自己遇到的这些bug. 一.时间获取不到 这个bug起源 ...