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 入门题,直接开一个循环 ...
随机推荐
- dns-prefetch对网站速度能提升有多少?详解dns-prefetch。
DNS解析场景 有很多大型的网站,都会用N 个CDN 域名来做图片.静态文件等资源访问.比如新浪,我们经常会看到有下列域. img1.sina.com.cn . img2.sina.com.cn .i ...
- AOP Aspect 统一日志、异常处理、数据格式 【转】
package com.gsww.chis.aop; import java.util.Arrays; import com.google.common.base.Throwables; import ...
- 注解1 --- JDK内置的三个基本注解 --- 技术搬运工(尚硅谷)
@Override: 限定重写父类方法, 该注解只能用于方法 @Deprecated: 用于表示所修饰的元素(类, 方法等)已过时.通常是因为所修饰的结构危险或存在更好的选择 @SuppressWar ...
- 全面系统Python3入门+进阶课程
全面系统Python3入门+进阶课程 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问题,大家看的时候 ...
- Python3.7.4入门-4模块
4 模块 Python有一种方法可以把定义放在一个文件里,并在脚本或解释器的交互式实例中使用它们.这样的文件被称作 模块 :模块中的定义可以 导入 到其它模块或者 主 模块 模块是一个包含Python ...
- Ubuntu查找通过apt命令已安装软件
方法一 apt list --installed 方法二 dpkg -l
- iOS开发之NSRunLoop的进一步理解
http://www.cnblogs.com/pengyingh/articles/2343920.html iPhone应用开发中关于NSRunLoop的概述是本文要介绍的内容,NSRunLoop是 ...
- VLSM(可变长子网掩码)
http://blog.sina.com.cn/s/blog_635e1a9e0100yk51.html(转载) VLSM的介绍: VLSM(VLSM(Variable Length Subnetwo ...
- Unrecognised tag: 'build'
[ERROR] [ERROR] Some problems were encountered while processing the POMs:[ERROR] Malformed POM H:\ec ...
- js表格上下移动添加删除
html部分 <div onclick='fn()'>加</div> <table width="250" border="1" ...