题目涉及算法:

  • 计数问题:枚举;
  • 表达式求值:栈;
  • 小朋友的数字:动态规划;
  • 车站分级:最长路。

计数问题

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

因为数据量不大,所以直接枚举一下每个数,然后统计一下x出现的次数就可以了。

实现代码如下:

#include <bits/stdc++.h>
using namespace std;
int n, x, cnt;
int main() {
cin >> n >> x;
for (int i = 1; i <= n; i ++) {
int j = i;
while (j > 0) {
if (j % 10 == x) cnt ++;
j /= 10;
}
}
cout << cnt << endl;
return 0;
}

表达式求值

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

涉及栈前缀表达式转后缀表达式。

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

小朋友的数字

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

首先表示一下这道题目的题目意思真的好难看懂啊。

因为这句话:

“第一个小朋友的分数是他的特征值,其它小朋友的分数为排在他前面的所有小朋友中(不包括他本人),小朋友分数加上其特征值的最大值。”

到底这个 “其特征值” 是这个小朋友还是排在他前面的所有小朋友。一直没搞清楚啊~。

然后这是一道动态规划的题目。

首先需要求状态 \(f[i]\) ,它表示以 \(a[i]\) 结尾(且不需包含 \(a[i]\))的最大字段和,状态转移方程为:

\(f[i] = max(f[i-1],0) + a[i]\)

这一步操作我觉得是没有问题的。

但是题目没有看懂,所以我决定暂时先不错了~。嗯,就是这么任性。

车站分级

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

这道题目只需要建图+求最长路就可以了。

对于每一趟车,我们假设它的区间范围为 \([L,R]\) ,然后我们假设 \([L,R]\) 范围内的数分为两个集合:

  • 停靠的站对应的数的集合 \(S1\);
  • 没有停靠的站对应的数的集合 \(S2\);

我们知道没有停靠的站的优先级比停靠的站的肯定要低,所以对于每一趟车来说,我们从 \(S2\) 集合中的所有点向 \(S1\) 集合中的所有点连一条权值为 \(1\) 的边。

然后我们设一个起点 \(start\) , 对于所有入度为 0 的点,我们从起点连一条权值为 \(1\) 的点到这些点。

并且这个图是保证不存在环的。

然后我们直接套 SPFA 求一下最长路即可。

实现代码如下:

#include <bits/stdc++.h>
using namespace std;
const int maxn = 1010;
vector<int> g[maxn];
bool bg[maxn][maxn], d[maxn], vis[maxn];
int n, m, cnt, a[maxn], dist[maxn], ans;
queue<int> que;
void test() {
puts("[test]");
for (int i = 1; i <= n; i ++)
printf("\tdist[%2d] = %4d\n", i, dist[i]);
}
int main() {
scanf("%d%d", &n, &m);
while (m --) {
scanf("%d", &cnt);
for (int i = 0; i < cnt; i ++) scanf("%d", &a[i]);
for (int i = a[0], j = 0; i <= a[cnt-1]; i ++) {
if (a[j] == i) j ++;
else {
for (int k = 0; k < cnt; k ++)
bg[i][ a[k] ] = true;
}
}
}
for (int i = 1; i <= n; i ++) {
for (int j = 1; j <= n; j ++) {
if (bg[i][j]) {
g[i].push_back(j);
d[j] = true;
}
}
}
for (int i = 1; i <= n; i ++) {
if (!d[i]) {
dist[i] = 1;
que.push(i);
}
else dist[i] = -1;
}
while (!que.empty()) {
int u = que.front(); que.pop();
vis[u] = false;
int sz = g[u].size();
for (int i = 0; i < sz; i ++) {
int v = g[u][i];
if (dist[v] == -1 || dist[v] < dist[u] + 1) {
dist[v] = dist[u] + 1;
if (!vis[v]) {
vis[v] = true;
que.push(v);
}
}
}
}
for (int i = 1; i <= n; i ++) ans = max(ans, dist[i]);
printf("%d\n", ans);
return 0;
}

作者:zifeiy

2013年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. 2011年NOIP普及组复赛题解

    题目涉及算法: 数字反转:模拟: 统计单词数:模拟: 瑞士轮:模拟/排序: 表达式的值:后缀表达式/DP. 数字反转 题目链接:https://www.luogu.org/problem/P1307 ...

  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. C++中的 istringstream 的用法

    C++引入了ostringstream.istringstream.stringstream这三个类,要使用他们创建对象就必须包含<sstream>这个头文件. istringstream ...

  2. 打印begin~end

    要求: 输入:begin和end 输出:依次打印出begin到end import java.util.Scanner; //递归打印begin —— end public class demo1 { ...

  3. ubuntukylin-16.04安装

    目录 安装 虚拟机安装 系统安装 vmware tools 安装 优化 1.切换软件源 2.软件源和软件更新 3.vim插件 4.安装Sublime Text 3 5.安装福昕阅读器 6.安装Anac ...

  4. AI种黄桃AI卖黄桃 阿里巴巴推进一站式政务服务

    7月11日,武汉城市峰会期间,武汉.枣阳.荆门等多个城市发布了同阿里巴巴的最新合作.这些合作包括用人工智能改善武汉交通拥堵.降低枣阳黄桃种植成本.提升荆门城市治理和市民服务水平等.阿里云.蚂蚁金服.高 ...

  5. JavaScript--兼容问题总结

    以下兼容主要面向IE8以上的兼容. 一.window.navigator浏览器信息 <script> console.log(window.navigator); // 用户浏览器的类型 ...

  6. linux下清除tomcat缓存

    进入tomcat/bin目录下,执行命令:./shutdown.sh 然后执行命令:ps -aux ,查看tomcat是否真的关闭了 如果没有关闭则执行命令:kill -9 #pid来彻底关闭tomc ...

  7. ef core 随记

    EntityTypeConfiguration internal class OrderEntityTypeConfiguration : IEntityTypeConfiguration<Or ...

  8. BZOJ 4551树题解

    好吧,洛谷的数据比较水暴力就可以过....(而且跑到飞快) 不过(BZ水不过去)还是讲讲正规的做法. 其实一眼可以看出可以树剖,但是,码起来有点麻烦. 其实有一种更简单的离线做法. 我们很容易联想到并 ...

  9. 条件变量用例--解锁与signal的顺序问题

    我们知道,当调用signal/broadcast唤醒等待条件变量的其他线程时,既可以在加锁的情况下调用signal/broadcast,也可以在解锁的情况下调用. 那么,到底哪种情况更好呢?man手册 ...

  10. 利用IDEA构建springboot应用-构建好SpringBoot + SSM 框架

    一. 创建项目 选择 Spring Initiallizr 添加最基本的几个依赖 Web,MySQL,MyBatis,其他需求可以后续再添加 ; 数据库选择了 MySQL 二. 配置数据源 数据源中存 ...