提高组死亡选手来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普及组题的更多相关文章

  1. [NOIP2017 普及组]跳房子 【题解】

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

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

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

  3. 「LOJ 6373」NOIP2017 普及组题目大融合

    NOIP2017 普及组题目大融合 每个读者需要有某个后缀的书,可以暴力map,复杂度\(o(9*nlog(n))\),也可以反串建trie树,复杂度\(o(9*n)\). 故可以求出需要的最少的RM ...

  4. P3956 [NOIP2017 普及组] 棋盘

    P3956 [NOIP2017 普及组] 棋盘 题目 题目描述 有一个 m×m 的棋盘,棋盘上每一个格子可能是红色.黄色或没有任何颜色的.你现在要从棋盘的最左上角走到棋盘的最右下角. 任何一个时刻,你 ...

  5. NOIP2017普及组比赛总结

    期中考总结&NOIP2017总结 2017年11月11日,我第二次参加NOIP普及组复赛.上一年,我的得分是250分,只拿到了二等奖.我便把目标定为拿到一等奖,考到300分以上. 早上8点多, ...

  6. NOIP2017普及组解题报告

    刚参加完NOIP2017普及,只考了210,于是心生不爽,写下了这篇解题报告...(逃 第一次写博,望dalao们多多指导啊(膜 第一题score,学完helloworld的人也应该都会吧,之前好多人 ...

  7. NOIP2017普及组初赛试题及答案

    普及组C++语言试题 一.单项选择题(共 20 题,每题 1.5 分,共计 30 分:每题有且仅有一个正确选项) 1.在 8 位二进制补码中,10101011 表示的数是十进制下的( ). A. 43 ...

  8. NOIP2017普及组T2题解

    还是神奇的链接 上面依然是题目. 这道题依然很简单,比起2015年的普及组t2好像还是更水一些. 不过这道题能讲的比第一题多. 我们一起来看一下吧! 这一题,我们首先将书的编号全部读入,存在一个数组里 ...

  9. noip2017普及组

    过了这么久才来写博客,也是我这么一段时间都很低迷吧.... 老实来说,今年应该是要打提高组的...可还是打了普及组... 其实最猥琐的还是我连普及都写挂了,作为一个学了两年的人,图论,进阶dp都写过的 ...

随机推荐

  1. (一)Eureka 服务的注册与发现

    (一)服务的注册于发现(eureka); Eureka Server: 服务注册中心,负责服务列表的注册.维护和查询等功能 在Idea里,新建项目,选择Spring initializer. 下面的p ...

  2. 关于Tomcat的启动

    1.Tomcat分为安装版和解压版. 2.在Tomcat的解压版的bin路径下启动startup.bat的时候,如果没有启动成功,请检查是否设置了JAVA_HOME 3.建议不要在环境变量里面设置CA ...

  3. 17.广度优先遍历bfs

    #include <iostream> #include <boost/config.hpp> //图(矩阵实现) #include <boost/graph/adjac ...

  4. Ubuntu14.04下Mongodb官网卸载部署步骤(图文详解)(博主推荐)

    不多说,直接上干货! 前期博客 Ubuntu14.04下Mongodb官网安装部署步骤(图文详解)(博主推荐) https://docs.mongodb.com/manual/tutorial/ins ...

  5. mybastis_20190323

    1 数据表 items.user.orders.orderdetail user id,username,birthday,sex,address; 使用原生态的jdbc的问题总结? 1 数据库链接问 ...

  6. Golang 中的 面向对象: 方法, 类, 方法继承, 接口, 多态的简单描述与实现

    前言: Golang 相似与C语言, 基础语法与C基本一致,除了广受争议的 左花括号 必须与代码同行的问题, 别的基本差不多; 学会了C, 基本上万变不离其宗, 现在的高级语言身上都能看到C的影子; ...

  7. 洛谷 P3203 [HNOI2010]弹飞绵羊 分块

    我们只需将序列分成 n\sqrt{n}n​ 块,对于每一个点维护一个 val[i]val[i]val[i],to[i]to[i]to[i],分别代表该点跳到下一个块所需要的代价以及会跳到的节点编号.在 ...

  8. React diff机制(介绍虚拟DOM的机制)

    https://segmentfault.com/a/1190000004003055

  9. 【BZOJ4826】【HNOI2017】影魔

    题意: Description 影魔,奈文摩尔,据说有着一个诗人的灵魂.事实上,他吞噬的诗人灵魂早已成千上万.千百年来,他收集了各式各样的灵魂,包括诗人.牧师.帝王.乞丐.奴隶.罪人,当然,还有英雄. ...

  10. [arc076f]Exhausted? - 贪心

    题意: 给你m个椅子可以坐人,初始坐标为正整数1~m,有n个人,每个人希望坐的位置$\leq L_i$或者$\geq R_i$,可以添加若干个椅子在任意的实数位置,求最少要添加多少椅子使得所有人都有位 ...