NOIP2012 普及组真题 4.13校模拟
考试状态:
我今天抽签看了洛谷的…

这我能怂???凶中带吉,我怕考试??我!不!怕!
看着整个机房的男同学们,我明白我是不会触发我的忌了。很好,开刷。
A. 【NOIP2012普及组真题】 质因数分解

麦芽的香气。行家啊!这题刷过的吧!!这个数据看起来是有点吓人,然而…
并没什么卵用。就是吓吓你。
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
int main(){
// freopen("prime.in","r",stdin);
// freopen("prime.out","w",stdout);
int n;
cin>>n;
for(int i=;i<=n;i++){
if(n%i==){
cout<<n/i;
return ;
}
}
}
仔细看题,看清楚了题目,这题就是个连printf都懒得用的水题…
好的下一个。
B. 【NOIP2012普及组真题】 寻宝



这种玩意…边看题边写…不断重构…不断修改…不断Debug
好吧,用搜索模拟一下其实就好了。
因为是边看边写,所以代码有点冗杂,有许多压根用不到的数据我也顺手存了下来。没事,反正一点点数据并不会爆炸。
#include<iostream>
#include<cstdio>
const int Mod=;
using namespace std;
struct BedRoom{
bool Up;
int Pointer;
int Num;
int Next;
}Building[][];
int Ftot[];
int n,m,x,y,ans;
void dfs(int Floor,int Room){
//cout<<"time check "<<Floor<<" "<<Room<<" "<<ans<<endl;
if(Floor==n){
//cout<<"End"<<endl;
ans+=Building[Floor][Room].Pointer;
ans%=Mod;
return;
}
int Go=Building[Floor][Room].Pointer;
//cout<<"Go "<<Go;
ans+=Go;
ans%=Mod;
if(Building[Floor][Room].Up==true){
Go--;
}
//Go%=Ftot[Floor];
int Index=Room;
for(int i=;i<=Go;){
//if(dfs(Floor,Building[Floor][Room].Next))
Index=Building[Floor][Index].Next;
if(Building[Floor][Index].Up){
i++;
}
}
dfs(Floor+,Index);
}
int main(){
// freopen("treasure.in","r",stdin);
// freopen("treasure.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++){
for(int j=;j<m;j++){
scanf("%d%d",&x,&y);
Building[i][j].Up=x;
if(x){
Ftot[i]++;
}
Building[i][j].Num=j;
Building[i][j].Pointer=y;
Building[i][j].Next=j+;
if(j+==m){
Building[i][j].Next=;
}
}
}
scanf("%d",&x);
dfs(,x);
printf("%d",ans);
}
看起来是简单轻巧…实际上显然这题是需要小小的优化的。一看那个指示牌上的爆炸数据就知道,如果直接傻兮兮的模拟, 你可能会疯狂跟他绕圈子,最后的结果嘛…当然你是TLE啦!
怎么优化?把指示牌上的数字MOD掉这一层所有的有楼梯的房间的个数就好。虽然我刚打完就想到了这个优化点,并且去做了优化。但发现直接取模之后居然疯狂WA!
无奈之下,只好放弃优化。先拿下模拟辛苦分好了。
出乎意料,辛苦分给的并不低。足足五十分呀同志,一半呐!!
(废话真多)
经过WKJ的指点,所以其实在取模的时候要考虑下直接Mod出0的情况,直接成0的话就会发生奇妙的错误。所以我们不妨把他先-1,最后再加回来就是了。
#include<iostream>
#include<cstdio>
const int Mod=;
using namespace std;
struct BedRoom{
bool Up;
int Pointer;
int Num;
int Next;
}Building[][];
int Ftot[];
int n,m,x,y,ans;
void dfs(int Floor,int Room){
//cout<<"time check "<<Floor<<" "<<Room<<" "<<ans<<endl;
if(Floor==n){
//cout<<"End"<<endl;
ans+=Building[Floor][Room].Pointer;
ans%=Mod;
return;
}
int Go=Building[Floor][Room].Pointer;
//cout<<"Go "<<Go;
ans+=Go;
ans%=Mod;
if(Building[Floor][Room].Up==true){
Go--;
}
Go=(Go-)%Ftot[Floor]+;
int Index=Room;
for(int i=;i<=Go;i=i){
//if(dfs(Floor,Building[Floor][Room].Next))
Index=Building[Floor][Index].Next;
if(Building[Floor][Index].Up){
i++;
}
}
dfs(Floor+,Index);
}
int main(){
// freopen("treasure.in","r",stdin);
// freopen("treasure.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++){
for(int j=;j<m;j++){
scanf("%d%d",&x,&y);
Building[i][j].Up=x;
if(x==){
Ftot[i]++;
}
Building[i][j].Num=j;
Building[i][j].Pointer=y;
Building[i][j].Next=j+;
if(j+==m){
Building[i][j].Next=;
}
}
}
scanf("%d",&x);
dfs(,x);
printf("%d",ans);
}
还行吧。代码有点冗杂,但在脑海里的逻辑还是很清晰的。
下一个。
C. 【NOIP2012普及组真题】 摆花
如果说考到以前刷过的作业是幸运,那这个简直就是幸运的1024次方了。
以前的考试考过。

#include<iostream>
#include<cstdio>
using namespace std;
const int MAXN=;
int n,m;
int a[MAXN];
int dp[MAXN][MAXN];
int main(){
cin>>n>>m;
for(int i=;i<=n;i++){
cin>>a[i];
}
dp[][]=;
for(int i=;i<=n;i++)
for(int k=;k<=a[i];k++)
for(int j=;j<=m-k;j++)
dp[i][j+k]=(dp[i-][j]+dp[i][j+k])%;
cout<<dp[n][m];
}
i来代表花种类,k代表花的盆数,j代表这种花放的盆数。
状态转移方程:dp[i][k]+=dp[i-1][j]
D. 【NOIP2012普及组真题】文化之旅


最短路径问题。数据量不大,弗洛伊德都可以搞定。但难点在于,文化排斥使得一些路是并不可以走的。
嗯,所以难点难住了我…没想出来,暂时搁置一下。
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
const int MAXN=;
int n,k,m,s,t;
int Map[MAXN][MAXN];
int Cultrue[MAXN];
int Dis[MAXN][MAXN];
int d[MAXN];
bool v[MAXN];
int Now[MAXN];
int main(){
memset(Map,0x3f,sizeof(Map));
int u,v,l;
//
freopen("culture.in","r",stdin);
//
freopen("culture.out","w",stdout);
scanf("%d%d%d%d%d",&n,&k,&m,&s,&t);
//国家个数,文化种数,道路千万条,起点,终点
for(int i=;i<=n;i++){
scanf("%d",&Cultrue[i]);
Map[i][i]=;
}
for(int i=;i<=k;i++){
for(int j=;j<=k;j++){
scanf("%d",&Dis[i][j]);
}
}
for(int i=;i<=m;i++){
scanf("%d%d%d",&u,&v,&l);
Map[u][v]=min(Map[u][v],l);
Map[v][u]=min(Map[u][v],l);
}
for(int k=;k<=n;k++){
for(int j=;j<=n;j++){
for(int i=;i<=n;i++){
Map[i][j]=min((Map[i][k]+Map[k][j]),Map[i][j]);
}
}
}
cout<<Map[s][t];
}
以上,考场临时骗分的,运气不错,数据里很多都直接无视了文化,所以拿到了90分。
NOIP2012 普及组真题 4.13校模拟的更多相关文章
- 0025:2011年NOIp普及组真题——瑞士轮题解
题目链接:https://www.luogu.com.cn/problem/P1309 如果是新手可能马上会想到sort排序,每比一次就排一次,但是这样的时间复杂度有点高,只有60分: 这是因为每次比 ...
- NOIP2018初赛普及组原题&题解
NOIP2018初赛普及组原题&题解 目录 NOIP2018初赛普及组原题&题解 原题&答案 题解 单项选择题 第$1$题 第$2$题 第$3$题 第$4$题 第$5$题 第$ ...
- 05:统计单词数【NOIP2011复赛普及组第二题】
05:统计单词数 总时间限制: 1000ms 内存限制: 65536kB 描述 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次 ...
- NOIP2010提高组真题部分整理(没有关押罪犯)
目录 \(NOIP2010\)提高组真题部分整理 \(T1\)机器翻译: 题目背景: 题目描述: 输入输出格式: 输入输出样例: 说明: 题解: 代码: \(T2\)乌龟棋 题目背景: 题目描述: 输 ...
- 纪中10日T1 2300. 【noip普及组第一题】模板题
2300. [noip普及组第一题]模板题 (File IO): input:template.in output:template.out 时间限制: 1000 ms 空间限制: 262144 K ...
- 洛谷P1067 多项式输出 NOIP 2009 普及组 第一题
洛谷P1067 多项式输出 NOIP 2009 普及组 第一题 题目描述 一元n次多项式可用如下的表达式表示: 输入输出格式 输入格式 输入共有 2 行 第一行 1 个整数,n,表示一元多项式的次数. ...
- NOIP2012 普及组 T3 摆花——S.B.S.
题目描述 小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共m盆.通过调查顾客的喜好,小明列出了顾客最喜欢的n种花,从1到n标号.为了在门口展出更多种花,规定第i种花不能超过ai盆,摆花时 ...
- noip2008普及组4题题解-rLq
(啊啊啊终于补到了今天的作业了) 本题地址:http://www.luogu.org/problem/show?pid=1058 题目描述 小渊是个聪明的孩子,他经常会给周围的小朋友们将写自己认为有趣 ...
- noip2008普及组3题题解-rLq
(第一次写题解,随意喷) (只是前一天的作业哈) (先凑个数) 题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏.游戏规则是这样的:n个同学站成一个圆圈 ...
随机推荐
- ubuntu server遇到的问题
1.在呢用is把隐藏的文件显示出来: ls -a 就可以啦 2.vim退出: 在命令模式中,连按两次大写字母Z,若当前编辑的文档曾被修改过,则Vi保存该文档后退出,返回到shell:若当前编辑的文档没 ...
- MyEclipse 远程调试Tomcat
当Web项目部署在服务器之后,当项目出现问题的时候就需要远程调试[远程调试的代码要与本地代码一致] 配置远程调试的具体步骤如下: 1.Linux 中配置tomcat在catalina.sh中添加如下C ...
- Hadoop 学习之——HDFS
HDFS是HADOOP中的核心技术之一——分布式文件存储系统.Hadoop的作者Doug Cutting 和Mike 是根据Google发布关于GFS 的研究报告所设计出的分布式文件存储系统. 一.H ...
- Illegal modifier for parameter userMapper; only final is permitted
报错的原因是 package com.chen.service.impl; import java.io.IOException; import java.io.InputStream; import ...
- 让 shell(bash) 命令行显示当前 git 的分支名称
早上测试脚本的时候,偶然在这篇文章<Git – setting up a remote repository and doing an initial push>看到一个关于 git 的好 ...
- 多线程异步非阻塞之CompletionService
引自:https://www.cnblogs.com/swiftma/p/6691235.html 上节,我们提到,在异步任务程序中,一种常见的场景是,主线程提交多个异步任务,然后希望有任务完成就处理 ...
- 新手Linux命令学习
一.dd命令:1.可以复制文件,2.可以制作ios镜像,简单理解就是备份 常用的参数 if 设置输入文件的名称 of 设置输出文件的名称 bs 设置每个“”块“”大小 count 要复制“块” ...
- 常用的JavaScript设计模式(二)Factory(工厂)模式
Factory通过提供一个通用的接口来创建对象,同时,我们还可以指定我们想要创建的对象实例的类型. 假设现在有一个汽车工厂VehicleFactory,支持创建Car和Truck类型的对象实例,现在需 ...
- 六个比较好用的php数组Array函数
1. array_column 返回输入数组中某个单一列的值.2. array_filter 用回调函数过滤数组中的元素.3. array_map 将用户自定义函数作用到给定数组的每个值上,返回新的值 ...
- 报错: Name node is in safe mode
将本地文件拷贝到hdfs上去,结果上错误:Name node is in safe mode 这是因为在分布式文件系统启动的时候,开始的时候会有安全模式,当分布式文件系统处于安全模式的情况下,文件系统 ...