NOIP2017普及组题
提高组死亡选手来AK普及(耗时两天)。
T1
#include<bits/stdc++.h>
using namespace std;
int A,B,C;
int main()
{
cin>>A>>B>>C;
cout<<(A*+B*+C*)/<<"\n";
return ;
}
T2
无脑找答案
#include<bits/stdc++.h>
using namespace std;
int N,Q,a[],b,x,t;
int main()
{
cin>>N>>Q;
for(int i=;i<=N;i++)cin>>a[i];
sort(a+,a+N+);
while(Q--){
cin>>b>>x;
t=pow(,b);
int ans=-;
for(int i=;i<=N;i++)
if(a[i]%t==x){
ans=a[i];
break;
}
cout<<ans<<"\n";
}
return ;
}
T3
连边,取一个有颜色的块,
1.四周有颜色的块 相同连0 不同连1
2.与他距离为2的块 相同连2 不同连3
3.这一点忘了就少一半分,四周没有颜色的块要连2,否则有好多都会误判成“-1”
然后跑SPFA,没了
#include<bits/stdc++.h>
using namespace std;
int N,M,color[][],last[],cnt,
x,y,z,d1[]={,-,,},d2[]={,,-,},dis[];
int D1[]={,,,-,,,-,-},D2[]={,-,,,,-,,-};
bool vis[];
queue <int> q;
struct Edge{
int other,pre,val;
}e[];
void connect(int x,int y,int z){
e[++cnt]=(Edge){y,last[x],z};
last[x]=cnt;
}
int main()
{
cin>>M>>N;
for(int i=;i<=N;i++){
cin>>x>>y>>z;
color[x][y]=z+; //0 nah 1 red 2 yellow
}
for(int i=;i<=M;i++)
for(int j=;j<=M;j++)
if(color[i][j]){
for(int k=;k<=;k++){
int tx=i+d1[k],ty=j+d2[k];
if(tx<||tx>M||ty<||ty>M)continue;
// printf("[%d,%d]\n",tx,ty);
if(color[tx][ty]){
int v=;
if(color[tx][ty]==color[i][j])v=;
// printf("(%d,%d)->(%d,%d)cost=%d\n",i,j,tx,ty,v);
connect((i-)*M+j,(tx-)*M+ty,v);
}
else {
connect((i-)*M+j,(tx-)*M+ty,);// printf("z(%d,%d)->(%d,%d)cost=%d\n",i,j,tx,ty,2);
}
}
for(int l=;l<=;l++){
int lx=i+D1[l],ly=j+D2[l];
if(lx<&&lx>M&&ly<&&ly>M)continue;
if(lx==i&&ly==j)continue;
if(!color[lx][ly])continue;
int v=;
if(color[i][j]==color[lx][ly])v=;
// printf("(%d,%d)->(%d,%d)cost=%d\n",i,j,lx,ly,v);
connect((i-)*M+j,(lx-)*M+ly,v);
}
}
memset(dis,0x3f,sizeof dis);
vis[]=,dis[]=;
q.push();
while(!q.empty()){
int u=q.front();
vis[u]=,q.pop();
for(int i=last[u];i;i=e[i].pre){
int v=e[i].other;
if(dis[v]>dis[u]+e[i].val){
dis[v]=dis[u]+e[i].val;
if(!vis[v]){
vis[v]=;
q.push(v);
}
}
}
}
if(dis[M*M]==dis[])puts("-1");
else printf("%d\n",dis[M*M]);
return ;
}
T4
二分答案+DP
朴素DP N^2 我们很容易的看出可以拿单调队列优化
#include<bits/stdc++.h>
#define MAXN 500005
#define INF 0x7f7f7f7f
using namespace std;
int read(){
int x=,t=;char c=getchar();
while(c<''||c>''){if(c=='-')t=-;c=getchar();}
while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
return x*t;
}
int N,D,K,x[MAXN],c[MAXN],f[MAXN];
pair <int,int> q[MAXN];
bool Judge(int L){
memset(f,,sizeof f);
int a=D-L,b=D+L,head=,tail=-,cur=;
if(a<=)a=;
for(int i=;i<=N;i++){
for(cur;cur<i&&x[cur]<=x[i]-a;cur++){
while(head<=tail&&q[tail].first<f[cur])tail--;
if(f[cur]<=-INF)continue;
q[++tail].first=f[cur],q[tail].second=x[cur];
}
while(head<=tail&&x[i]-q[head].second>b)head++;
if(head<=tail)f[i]=q[head].first+c[i];
else f[i]=-INF;
if(f[i]>=K)return ;
}
return ;
}
int main()
{
N=read(),D=read(),K=read();
for(int i=;i<=N;i++)x[i]=read(),c[i]=read();
if(!Judge(x[N]))puts("-1");
else{
int l=,r=x[N];
while(l<r){
int mid=l+r>>;
if(Judge(mid))r=mid;
else l=mid+;
}
printf("%d\n",l);
}
return ;
}
NOIP2017普及组题的更多相关文章
- [NOIP2017 普及组]跳房子 【题解】
题目背景 NOIP2017 普及组 T4 题目描述 跳房子,也叫跳飞机,是一种世界性的儿童游戏,也是中国民间传统的体育游戏之一. 跳房子的游戏规则如下: 在地面上确定一个起点,然后在起点右侧画 \(n ...
- [NOIP2017普及组]跳房子(二分,单调队列优化dp)
[NOIP2017普及组]跳房子 题目描述 跳房子,也叫跳飞机,是一种世界性的儿童游戏,也是中国民间传统的体育游戏之一. 跳房子的游戏规则如下: 在地面上确定一个起点,然后在起点右侧画 nn 个格子, ...
- 「LOJ 6373」NOIP2017 普及组题目大融合
NOIP2017 普及组题目大融合 每个读者需要有某个后缀的书,可以暴力map,复杂度\(o(9*nlog(n))\),也可以反串建trie树,复杂度\(o(9*n)\). 故可以求出需要的最少的RM ...
- P3956 [NOIP2017 普及组] 棋盘
P3956 [NOIP2017 普及组] 棋盘 题目 题目描述 有一个 m×m 的棋盘,棋盘上每一个格子可能是红色.黄色或没有任何颜色的.你现在要从棋盘的最左上角走到棋盘的最右下角. 任何一个时刻,你 ...
- NOIP2017普及组比赛总结
期中考总结&NOIP2017总结 2017年11月11日,我第二次参加NOIP普及组复赛.上一年,我的得分是250分,只拿到了二等奖.我便把目标定为拿到一等奖,考到300分以上. 早上8点多, ...
- NOIP2017普及组解题报告
刚参加完NOIP2017普及,只考了210,于是心生不爽,写下了这篇解题报告...(逃 第一次写博,望dalao们多多指导啊(膜 第一题score,学完helloworld的人也应该都会吧,之前好多人 ...
- NOIP2017普及组初赛试题及答案
普及组C++语言试题 一.单项选择题(共 20 题,每题 1.5 分,共计 30 分:每题有且仅有一个正确选项) 1.在 8 位二进制补码中,10101011 表示的数是十进制下的( ). A. 43 ...
- NOIP2017普及组T2题解
还是神奇的链接 上面依然是题目. 这道题依然很简单,比起2015年的普及组t2好像还是更水一些. 不过这道题能讲的比第一题多. 我们一起来看一下吧! 这一题,我们首先将书的编号全部读入,存在一个数组里 ...
- noip2017普及组
过了这么久才来写博客,也是我这么一段时间都很低迷吧.... 老实来说,今年应该是要打提高组的...可还是打了普及组... 其实最猥琐的还是我连普及都写挂了,作为一个学了两年的人,图论,进阶dp都写过的 ...
随机推荐
- su和sudo的区别与使用,su命令,linux命令
su和sudo的区别与使用 一. 使用 su 命令临时切换用户身份 1. su 的适用条件和威力 su命令就是切换用户 的工具,怎么理解呢?比如我们以普通用户beinan登录的,但要添加用户任务, ...
- POJ 2190 模拟
按照题意模拟就好- 注意"X"只能出现在最后一位... // by SiriusRen #include <cstdio> using namespace std; c ...
- Kettle的四大不同环境工具
不多说,直接上干货! kettle里有不同工具,分别用于ETL的不同阶段. 初学者,建议送Spoon开始.高手,是四大工具都会用. Sqoop: 图形界面工具,快速设计和维护复杂的ETL工作流.集成开 ...
- SSRS参数不能默认全选的解决方法
解决方法选自<SQL Server 2008 R2 Reporting Services 报表服务>一书,亲测有效. 注意:参数默认值如果是字符串需要类型转换 =CStr("AL ...
- SGU 180 Inversions【树状数组】
题意:求逆序数 和POJ那题求逆序数的一样,不过这题离散化之后,要去一下重,然后要开到long long #include<iostream> #include<cstdio> ...
- shell-4.bash的变量:用户自定义变量
目录 内容
- BZOJ 4870: [Shoi2017]组合数问题 矩阵乘法_递推
Code: #include <cstdio> #include <cstring> #include <algorithm> #define setIO(s) f ...
- 中国象棋程序的设计与实现(五)--回答CSDN读者的一些问题
最近写了很多文章,同时,也上传了很多免积分的FansUnion原创的优质资源,有兴趣的同学可以看来我的CSDN博客瞧瞧 http://blog.csdn.net/FansUnion. 近期,收到了不少 ...
- nginx php No input file specified 怎样处理?
配置nginx支持php 出现了No input file specified ? 仅仅要改动下安装文件夹下的 nginx.conf下的 location ~ \.php$ { ...
- hdoj Let the Balloon Rise
/*Let the Balloon Rise Problem Description Contest time again! How excited it is to see balloons ...