期中考总结&NOIP2017总结

2017年11月11日,我第二次参加NOIP普及组复赛。上一年,我的得分是250分,只拿到了二等奖。我便把目标定为拿到一等奖,考到300分以上。

早上8点多,我们去302教室,听同学讲考试注意事项(有十几条),有两条令我受益匪浅——要吃饱;不要定义与自带函数重名的变量或函数(如x0,y0什么的)。

我们看了自己的考试信息后,就上车了。11点多就到达广州了。

吃中午饭的地方是一间名叫都城快餐的快餐店,我们却吃了一个多小时的快餐(有人等饭等了四十多分钟)

吃完饭后,我们走去广州六中,接着在那里休息(睡午觉)。2点钟就去考场了。

比赛2点半开始,6点钟结束。开始考试后,我用了40分钟看了一下题目。

T1:

哇!好水呀!

直接输出\({\frac{2a}{10}+\frac{3b}{10}}+\frac{5c}{10}\)不就完事了吗?

这题不会那么水的!我又看了看题,确保万无一失,以防把这唾手可得的100分弄丢了。

然后就AC了。

T2:

嗯,挺水的。

一眼出正解——暴力!

我的方法就是暴力,只不过加了一点优化(因为比赛时我担心此题有坑)

考场AC!

PS:此题用字典树是最快的。

T3:

一开始想到了DFS,又想到了DP,到了动手做题前,才发现DP过不了,就打了个记忆化搜索。

相信许多人都觉得魔法特难搞,其实并不难。

通过找规律,我们不难发现,从有颜色的格子开始走,可以走到任意格子,不管它有没有颜色。

而没有颜色的格子却只能走到那些有颜色的格子上(不能连续两次用魔法)

那怎么计算使用魔法的花费呢?我发现,可以分成两种情况判断:



然后记录一下上一个格子坐标就好了。

考场AC!

T4:

这题我0分,题解见https://www.cnblogs.com/huangzihaoal/p/11154115.html


比赛结束后,我忐忑不安地离开考场。不知道今年我能考到多少分呢?应该是310~320吧(然而只拿了300分)!

晚饭我们不是在都城快餐吃了,我们去到了一间饭店吃。不知为何,老师点了特别多的菜,每一桌的菜数比人数还要多!

最后我们当然是没吃完的。有诗云:

锄禾日当午,汗滴禾下土。

谁知盘中餐,粒粒皆辛苦。

我的良心受到了谴责!


代码

T1:

#include<cstdio>
using namespace std;
int main()
{
freopen("score.in","r",stdin);
freopen("score.out","w",stdout);
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
printf("%d\n",a/10*2+b/10*3+c/10*5);
return 0;
}

T2:

#include<cstdio>
using namespace std;
int a[1010],s[11];
void qsort(int l,int r)
{
int i=l,j=r,mid=a[(l+r)/2],t;
while(i<=j)
{
while(a[i]<mid) i++;
while(a[j]>mid) j--;
if(i<=j)
{
t=a[i];
a[i]=a[j];
a[j]=t;
i++;j--;
}
}
if(i<r) qsort(i,r);
if(l<j) qsort(l,j);
}
int main()
{
freopen("librarian.in","r",stdin);
freopen("librarian.out","w",stdout);
int n,q,i,j=0,need,len,k=1;
bool haveFind_theBook;
scanf("%d%d",&n,&q);
for(i=1;i<=n;i++) scanf("%d",&a[i]);
qsort(1,n);
for(i=0;i<11;i++) s[i]=1;
for(i=1;i<=n;i++)
{
while(a[i]>=k)
{
j++;s[j]=i;
k=k*10;
}
}
while(q--)
{
scanf("%d%d",&len,&need);
if(len==0)
{
printf("-1\n");
continue;
}
k=1;haveFind_theBook=false;
for(i=1;i<=len;i++) k=k*10;
for(i=s[len];i<=n;i++)
{
if(a[i]%k==need)
{
haveFind_theBook=true;
printf("%d\n",a[i]);
break;
}
}
if(!haveFind_theBook) printf("-1\n");
}
return 0;
}

T3:

#include<cstdio>
using namespace std;
#define maxlongint 0x7fffffff
const int dx[4]={1,0,-1,0};
const int dy[4]={0,1,0,-1};
int n,c[101][101],f[101][101];
void dfs(int x,int y,int cost,int X,int Y)
{
if(f[x][y]<=cost) return;
f[x][y]=cost;
int i,xx,yy;
for(i=0;i<4;i++)
{
xx=x+dx[i];yy=y+dy[i];
if(xx>0&&yy>0&&xx<=n&&yy<=n)
{
if(c[x][y]==0)
{
if(c[xx][yy]==0) continue;
else
{
if(c[X][Y]==c[xx][yy])
{
dfs(xx,yy,cost,1,1);
}
else dfs(xx,yy,cost+1,1,1);
}
}
else
{
if(c[xx][yy]==0)
{
dfs(xx,yy,cost+2,x,y);
}
else
{
if(c[x][y]==c[xx][yy])
{
dfs(xx,yy,cost,1,1);
}
else dfs(xx,yy,cost+1,1,1);
}
}
}
}
}
int main()
{
freopen("chess.in","r",stdin);
freopen("chess.out","w",stdout);
int m,i,j,x,y,z;
scanf("%d%d",&n,&m);
for(i=1;i<=m;i++)
{
scanf("%d%d%d",&x,&y,&z);
c[x][y]=z+1;
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
f[i][j]=maxlongint;
}
}
dfs(1,1,0,1,1);
if(f[n][n]==maxlongint) printf("-1\n");
else printf("%d\n",f[n][n]);
return 0;
}

T4:

#include<cstdio>
using namespace std;
#define maxlongint 1999999999//事实证明,用-maxlongint的效果最好
int f[500001],queue[500001],x[500001],s[500001];
int main()
{
freopen("jump.in","r",stdin);
freopen("jump.out","w",stdout);
int n,d,k,l=0,r=1000000000,mid,i,j,t,ans=-1,maxx,minn,head,tail,last;
bool bk,bz;
scanf("%d%d%d",&n,&d,&k);
for(i=1;i<=n;i++) scanf("%d%d",&x[i],&s[i]);
l=0;r=1000000000;
while(l<=r)
{
mid=(l+r)/2;
maxx=d+mid;bk=false;bz=true;
minn=d-mid;last=0;
if(minn<1) minn=1;
tail=head=1;
queue[1]=0;
for(i=1;i<=n;i++)
{
if(maxx>=x[i]&&minn<=x[i])
{
bz=false;
break;
}
}
if(bz)
{
l=mid+1;
continue;
}
for(i=1;i<=n;i++)
{
f[i]=maxlongint;
for(j=last+1;j<i;j++)
{
if(x[j]+minn>x[i]) break;
if(x[j]+maxx<x[i]) continue;
last=j;
if(f[j]==maxlongint) continue;
while(head<=tail&&f[queue[tail]]<=f[j]) queue[tail--]=0;
queue[++tail]=j;
}
while(head<tail&&x[queue[head]]+maxx<x[i]) head++;
if(x[queue[head]]+maxx<x[i]||x[queue[head]]+minn>x[i]) f[i]=maxlongint;
else f[i]=f[queue[head]]+s[i];
if(f[i]<maxlongint&&f[i]>=k)
{
bk=true;
break;
}
}
if(bk)
{
ans=mid;
r=mid-1;
}
else l=mid+1;
}
printf("%d\n",ans);
return 0;
}

NOIP2017普及组比赛总结的更多相关文章

  1. [NOIP2017普及组]跳房子(二分,单调队列优化dp)

    [NOIP2017普及组]跳房子 题目描述 跳房子,也叫跳飞机,是一种世界性的儿童游戏,也是中国民间传统的体育游戏之一. 跳房子的游戏规则如下: 在地面上确定一个起点,然后在起点右侧画 nn 个格子, ...

  2. 2016.8.15上午纪中初中部NOIP普及组比赛

    2016.8.15上午纪中初中部NOIP普及组比赛 链接:https://jzoj.net/junior/#contest/home/1333 这次比赛不怎么好,因为这套题目我并不是很擅长. 可同学们 ...

  3. 2016.9.15初中部上午NOIP普及组比赛总结

    2016.9.15初中部上午NOIP普及组比赛总结 2016.09.15[初中部 NOIP普及组 ]模拟赛 又翻车了!表示时超和空超很可恨! 进度 比赛:AC+0+0+20=120 改题:AC+80+ ...

  4. 2016.9.10初中部上午NOIP普及组比赛总结

    2016.9.10初中部上午NOIP普及组比赛总结 链接:https://jzoj.net/junior/#contest/home/1340 好不爽!翻车了!不过排名差不多在中间偏上一点, 还好不是 ...

  5. 2016.9.3初中部上午NOIP普及组比赛总结

    2016.9.3初中部上午NOIP普及组比赛总结 链接:https://jzoj.net/junior/#contest/home/1339 这次真爽,拿了个第四!(我还被班主任叫过去1小时呢!) 进 ...

  6. 2016.8.19上午初中部NOIP普及组比赛总结

    2016.8.19上午初中部NOIP普及组比赛总结 链接:https://jzoj.net/junior/#contest/home/1338 这次总结发得有点晚啊!我在这里解释一下, 因为浏览器的问 ...

  7. 2016.8.18上午纪中初中部NOIP普及组比赛

    2016.8.18上午纪中初中部NOIP普及组比赛 链接:https://jzoj.net/junior/#contest/home/1336 翻!车!啦!好吧,那是因为大神归来. 进度: 比赛:AC ...

  8. 2016.8.17上午纪中初中部NOIP普及组比赛

    2016.8.17上午纪中初中部NOIP普及组比赛 链接:https://jzoj.net/junior/#contest/home/1335 本来觉得自己能考高分,但只得160分,并列第九.至少又挤 ...

  9. 2016.8.16上午纪中初中部NOIP普及组比赛

    2016.8.16上午纪中初中部NOIP普及组比赛 链接:https://jzoj.net/junior/#contest/home/1334 这次也翻车了,感觉比之前难多了. 辛辛苦苦改完了,太难改 ...

随机推荐

  1. JSP通过URL给Servlet传值

    jsp传数据: <a id="a1" href="" ></a> <script> $("#a1").a ...

  2. CPU上下文切换分析

    一.CPU上下文切换 1.上下文切换,有时也称做进程切换或任务切换,是指CPU从一个进程或线程切换到另一个进程或线程. 2.vmstat是一个常用的系统性能分析工具,主要用来分析系统内存使用情况,也常 ...

  3. linux 查看系统性能

    1. 查看内存和CPU信息 cat /proc/cpuinfo                   cpu信息 cat /proc/meminfo |grep MemTotal    内存信息 查看物 ...

  4. Keras学习笔记一:修改数据读入方式为本地图片读入

    第一种方法: Keras官方给的图片去噪示例要自动下载mnist数据集并处理,不能修改和加入自己的数据集. from keras.datasets import mnist (x_train, _), ...

  5. webservice代码编写主要包括服务器端发布和客户端调用。

    一.java工程发布,java工程调用   (一).服务器端的编写 1.在eclipse里新建java project工程,创建功能类,通过关键字@webservice(name="newI ...

  6. LVS配置

    今天面试时,突然被面试官问到怎样用shell命令搞定某个文件夹下java代码行数的统计. 想了一下,基本思路就是找到这个文件夹下面的所有java文件,然后每个文件统计一下代码,外层套个for循环,叠加 ...

  7. legend3---lavarel安装debugbar工具条

    legend3---lavarel安装debugbar工具条 一.总结 一句话总结: ` lavarel插件一般是composer官网下载,然后config/app.php中声明和加别名 ` 直接照官 ...

  8. SQLSTATE[HY000] [2002] Connection refused

    //域名绑定到模块 '__domain__' => [ 'admin' => 'admin', 'post' => 'api', 'user' => 'index', 'www ...

  9. PHP中try catch的用法

    异常(Exception)用于在指定的错误发生时改变脚本的正常流程. 什么是异常? PHP 5 提供了一种新的面向对象的错误处理方法. 异常处理用于在指定的错误(异常)情况发生时改变脚本的正常流程.这 ...

  10. [windows菜鸟]Windows API函数大全(完整)

    Windows API函数大全,从事软件开发的朋友可以参考下 1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一 ...