提高组死亡选手来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. su和sudo的区别与使用,su命令,linux命令

    su和sudo的区别与使用 一.   使用 su 命令临时切换用户身份 1. su 的适用条件和威力 su命令就是切换用户 的工具,怎么理解呢?比如我们以普通用户beinan登录的,但要添加用户任务, ...

  2. POJ 2190 模拟

    按照题意模拟就好- 注意"X"只能出现在最后一位... // by SiriusRen #include <cstdio> using namespace std; c ...

  3. Kettle的四大不同环境工具

    不多说,直接上干货! kettle里有不同工具,分别用于ETL的不同阶段. 初学者,建议送Spoon开始.高手,是四大工具都会用. Sqoop: 图形界面工具,快速设计和维护复杂的ETL工作流.集成开 ...

  4. SSRS参数不能默认全选的解决方法

    解决方法选自<SQL Server 2008 R2 Reporting Services 报表服务>一书,亲测有效. 注意:参数默认值如果是字符串需要类型转换 =CStr("AL ...

  5. SGU 180 Inversions【树状数组】

    题意:求逆序数 和POJ那题求逆序数的一样,不过这题离散化之后,要去一下重,然后要开到long long #include<iostream> #include<cstdio> ...

  6. shell-4.bash的变量:用户自定义变量

    目录 内容

  7. BZOJ 4870: [Shoi2017]组合数问题 矩阵乘法_递推

    Code: #include <cstdio> #include <cstring> #include <algorithm> #define setIO(s) f ...

  8. 中国象棋程序的设计与实现(五)--回答CSDN读者的一些问题

    最近写了很多文章,同时,也上传了很多免积分的FansUnion原创的优质资源,有兴趣的同学可以看来我的CSDN博客瞧瞧 http://blog.csdn.net/FansUnion. 近期,收到了不少 ...

  9. nginx php No input file specified 怎样处理?

    配置nginx支持php 出现了No input file specified ? 仅仅要改动下安装文件夹下的  nginx.conf下的 location ~ \.php$ {           ...

  10. hdoj Let the Balloon Rise

     /*Let the Balloon Rise Problem Description Contest time again! How excited it is to see balloons ...