提高组死亡选手来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. [ZJOJ2014] 力 解题报告 (FFT)

    题目链接: https://www.luogu.org/problemnew/show/P3338 题目: 给出$n$个数$q_i$,令$F_j=\sum_{i<j}\frac{q_iq_j}{ ...

  2. BZOJ 2045 容斥原理

    思路: 同BZOJ 2005 http://blog.csdn.net/qq_31785871/article/details/54314774 //By SiriusRen #include < ...

  3. Codeforces 676E The Last Fight Between Human and AI 规律

    链接 Codeforces 676E The Last Fight Between Human and AI 题意 给一个多项式,有些系数不确定.人和机器轮流填系数,系数可以是任何数,问是否能使得最后 ...

  4. 分组后取每组内排名的Top N的SQL语句

    给个MySQL例子参考 -----查询每门课程的前2名成绩 CREATE   TABLE   StudentGrade( stuId   CHAR(4),         --学号 subId   I ...

  5. jq 方法函数(淡入淡出,查找元素,过滤)遍历

    淡入淡出:fadeIn fadeOut fadeToggle fadeTo 淡入:fadeIn(speed[,callback])   速度和回调函数 回调函数可以写匿名函数,或者方法名不加括号. s ...

  6. 让placeholder中的默认文字居中,或者缩进多少像素

    直接给input或者textarea的样式加texta-align:center; <input type="" name="" id="&qu ...

  7. (转载)[Android开发]zxing扫描结果乱码

    ZXing扫描二维码出现中文乱码的问题最近项目的功能需要用到扫描二维码.就参考了google的开源项目ZXing..功能完成后..发现扫条形码没有问题..但是扫描二维码的时候却有一部分是乱码..或者不 ...

  8. QT笔记 -- (2) 文件相关操作、中文路径乱码

    1.显示文件对话框,选择一个目录,显示选中目录中的所有图片的代码如下 主要class: QFileDialog QStringList QFileInfoList QDir void open(){ ...

  9. HDU 5273 Dylans loves sequence【 树状数组 】

    题意:给出n个数,再给出q个询问,求L到R的逆序对的个数 先自己写的时候,是每次询问都重新插入来求sum(r)-sum(l) 果断T 后来还是看了别人的代码---- 预处理一下,把所有可能的区间的询问 ...

  10. Day92

    # session:用于保存客户端历史访问的信息# BeautifulSoup是一个模块,该模块用于接收一个HTML或XML字符串,然后将其进行格式化,# 之后遍可以使用他提供的方法进行快速查找指定元 ...