10.17 NOIP模拟赛
2018.10.17 NOIP模拟赛
时间:1h15min(实际)
期望得分:100+100+100
实际得分:100+70+100
为什么这么困啊。。
A 咒语curse
#include <cstdio>
#include <cctype>
#include <cstring>
#include <algorithm>
#define gc() getchar()
typedef long long LL;
const int N=1005;
int tm[N];
char s[N],ans[N];
inline int read()
{
int now=0;register char c=gc();
for(;!isdigit(c);c=gc());
for(;isdigit(c);now=now*10+c-'0',c=gc());
return now;
}
int main()
{
freopen("curse.in","r",stdin);
freopen("curse.out","w",stdout);
int n=read();
scanf("%s",s+1); int len=strlen(s+1);
for(int j=1; j<=len; ++j) if(s[j]=='0') ++tm[j];
for(int i=2; i<=n; ++i)
{
scanf("%s",s+1);
for(int j=1; j<=len; ++j) if(s[j]=='0') ++tm[j];
}
for(int i=1; i<=len; ++i)
if(tm[i]>=n-tm[i]) ans[i]='0';
else ans[i]='1';
ans[len+1]='\0', puts(ans+1);
return 0;
}
B 神光light(二分 DP)
\(f[i][j]\)表示用了\(i\)次红光\(j\)次绿光最远能到达哪个点。预处理之后转移即可。
考试的时候很困,很sb的写了\(O(n)\)贪心。。
#include <cstdio>
#include <cctype>
#include <cstring>
#include <algorithm>
#define gc() getchar()
typedef long long LL;
const int N=2005;
int n,A,B,pos[N];
inline int read()
{
int now=0;register char c=gc();
for(;!isdigit(c);c=gc());
for(;isdigit(c);now=now*10+c-'0',c=gc());
return now;
}
int Calc(int x,int len)
{
int l=x,r=n,mid,ans=l; x=pos[x];//!
while(l<=r)
if(pos[mid=l+r>>1]-x+1<=len) ans=mid,l=mid+1;
else r=mid-1;
return ans;
}
bool Check(int len)
{
static int f[N][N],p1[N],p2[N];
for(int i=1; i<=n; ++i)
p1[i]=Calc(i,len), p2[i]=Calc(i,len<<1);
memset(f,0,sizeof f);
f[0][0]=0/*not 1...*/, p1[n+1]=p2[n+1]=n;
for(int i=0; i<=A; ++i)
for(int j=0; j<=B; ++j)
f[i+1][j]=std::max(f[i+1][j],p1[f[i][j]+1]), f[i][j+1]=std::max(f[i][j+1],p2[f[i][j]+1]);
return f[A][B]>=n;
}
int main()
{
freopen("light.in","r",stdin);
freopen("light.out","w",stdout);
n=read(),A=std::min(n,read()),B=std::min(n,read());
if(A+B>=n) return puts("1"),0;
for(int i=1; i<=n; ++i) pos[i]=read();
std::sort(pos+1,pos+1+n);
int l=1,r=pos[n]-pos[1]+1,mid,ans=r;
while(l<=r)
{
if(Check(mid=l+r>>1)) ans=mid,r=mid-1;
else l=mid+1;
}
printf("%d\n",ans);
return 0;
}
C 迷宫maze(次短路)
枚举每一条边\((u,v,w)\),\(次短路 = 1到u的最短路 + w + v到n的最短路\)。
因为次短路与最短路相比会有一段绕路,且不会有两次绕路。
这题边可以多次走,所以不存在次短路时要多走两次最短路上边权最小的边。
忘了这个问题,但数据水过了,不改了。
辣鸡题解还是个DFS,出\(n=5000\)。
#include <queue>
#include <cstdio>
#include <cctype>
#include <cstring>
#include <algorithm>
#define mp std::make_pair
#define pr std::pair<int,int>
#define gc() getchar()
typedef long long LL;
const int N=5005,M=2e5+5;
int Enum,H[N],nxt[M],fr[M],to[M],len[M],ds[N],dt[N];
inline int read()
{
int now=0;register char c=gc();
for(;!isdigit(c);c=gc());
for(;isdigit(c);now=now*10+c-'0',c=gc());
return now;
}
inline void AE(int w,int u,int v)
{
to[++Enum]=v, fr[Enum]=u, nxt[Enum]=H[u], H[u]=Enum, len[Enum]=w;
to[++Enum]=u, fr[Enum]=v, nxt[Enum]=H[v], H[v]=Enum, len[Enum]=w;
}
void Dijkstra(int s,int *dis)
{
static bool vis[N];
static std::priority_queue<pr> q;
memset(vis,0,sizeof vis);
memset(dis,0x3f,sizeof ds);
dis[s]=0, q.push(mp(0,s));
while(!q.empty())
{
int x=q.top().second; q.pop();
if(vis[x]) continue;
vis[x]=1;
for(int i=H[x]; i; i=nxt[i])
if(dis[to[i]]>dis[x]+len[i]) q.push(mp(-(dis[to[i]]=dis[x]+len[i]),to[i]));
}
}
int main()
{
freopen("maze.in","r",stdin);
freopen("maze.out","w",stdout);
int n=read(),m=read();
for(int i=1; i<=m; ++i) AE(read(),read(),read());
Dijkstra(1,ds), Dijkstra(n,dt);
int ans=2e9,Min=ds[n];
for(int i=1,tmp; i<=Enum; ++i)
if((tmp=ds[fr[i]]+dt[to[i]]+len[i])>Min) ans=std::min(ans,tmp);
printf("%d\n",ans);
return 0;
}
考试代码
B
#include <cstdio>
#include <cctype>
#include <algorithm>
#define gc() getchar()
typedef long long LL;
const int N=1e5+5;//2005;
int n,A,B,pos[N],L[N],R[N];
inline int read()
{
int now=0;register char c=gc();
for(;!isdigit(c);c=gc());
for(;isdigit(c);now=now*10+c-'0',c=gc());
return now;
}
bool Check(int len)
{
int now=1,cnt=1; L[1]=pos[1];
while(now<n)
{
if(pos[now+1]-L[cnt]+1>len)
R[cnt]=pos[now], L[++cnt]=pos[++now];
else ++now;
}
R[cnt]=pos[n];
if(cnt<=A) return 1;
int rest=cnt-A,used=0;
for(int i=2; i<=cnt; ++i)
if(R[i]-L[i-1]+1<=2*len)
{
++used, rest-=2, ++i;
if(used>B) return 0;
if(rest<=0) return 1;
}
return rest-B+used<=0;
}
int main()
{
// freopen("light5.in","r",stdin);
// freopen("light.out","w",stdout);
n=read(),A=read(),B=read();
for(int i=1; i<=n; ++i) pos[i]=read();
std::sort(pos+1,pos+1+n);
int l=1,r=1e9,mid,ans=1e9;
while(l<=r)
{
if(Check(mid=l+r>>1)) ans=mid,r=mid-1;
else l=mid+1;
}
printf("%d\n",ans);
return 0;
}/*
7 1 2
1
3
5
7
9
11
21
*/
10.17 NOIP模拟赛的更多相关文章
- 10.16 NOIP模拟赛
目录 2018.10.16 NOIP模拟赛 A 购物shop B 期望exp(DP 期望 按位计算) C 魔法迷宫maze(状压 暴力) 考试代码 C 2018.10.16 NOIP模拟赛 时间:2h ...
- 2018.10.16 NOIP模拟赛解题报告
心路历程 预计得分:\(100 + 100 + 20 = 220\) 实际得分:\(100 + 100 + 30 = 230\) 辣鸡模拟赛.. T1T2都是一眼题,T3考验卡常数还只有一档暴力分. ...
- 2016.10.30 NOIP模拟赛 day2 AM 整理
题目+数据:链接:http://pan.baidu.com/s/1gfBg4h1 密码:ho7o 总共得了:130分, 1:100分 2:30分(只会这30分的暴力) 3:0(毫无思路) 虽然不高, ...
- 2016.10.30 NOIP模拟赛 day2 PM 整理
满分:300分 直接全部爆零,真的是很坑啊! 10.30的题目+数据:链接:http://pan.baidu.com/s/1jHXLace 密码:i784 T1: 题目中的难点就是每次折叠的点可能应经 ...
- 2017 10.25 NOIP模拟赛
期望得分:100+40+100=240 实际得分:50+40+20=110 T1 start取了min没有用,w(゚Д゚)w O(≧口≦)O T3 代码3个bug :数组开小了,一个细节没注意, ...
- 2018.10.03 NOIP+ 模拟赛 解题报告
得分: \(30+5+0=35\)(考得真不咋滴) \(T1\):奥义商店(点此看题面) 以为很简单,对着这题想了一个多小时,最后果断打了个暴力交了... ... 看完题解发现其实也不是很难. 对于\ ...
- 2018.10.30 NOIp模拟赛 T1 改造二叉树
[题目描述] 小Y在学树论时看到了有关二叉树的介绍:在计算机科学中,二叉树是每个结点最多有两个子结点的有序树.通常子结点被称作“左孩子”和“右孩子”.二叉树被用作二叉搜索树和二叉堆.随后他又和他人讨论 ...
- 2016.10.29 NOIP模拟赛 PM 考试整理
300分的题,只得了第三题的100分. 题目+数据:链接:http://pan.baidu.com/s/1o7P4YXs 密码:4how T1:这道题目存在着诸多的问题: 1.开始的序列是无法消除的( ...
- 2018.10.17 NOIP模拟 管道(状压dp)
传送门 状压dp好题. 怎么今天道道题都有点东西啊 对于今天题目神仙出题人先膜为上策:%%%%DzYoAk_UoI%%%% 设f[i][j]f[i][j]f[i][j]表示选取点的状态集合为iii,当 ...
随机推荐
- springboot学习笔记-6 springboot整合RabbitMQ
一 RabbitMQ的介绍 RabbitMQ是消息中间件的一种,消息中间件即分布式系统中完成消息的发送和接收的基础软件.这些软件有很多,包括ActiveMQ(apache公司的),RocketMQ(阿 ...
- python的技巧和方法你了解多少?
学了这些你的python代码将会改善与你的技巧将会提高. 1. 路径操作 比起os模块的path方法,python3标准库的pathlib模块的Path处理起路径更加的容易. 获取当前文件路径 前提导 ...
- SharePoint 2013 Workflow Manager 1.0 远程服务器返回错误: (400) 错误的请求。 不支持查询字符串中的 api-version
环境: Windows Server 2012 R2 Standard SharePoint Server 2013 with sp1 通过Web 平台安装程序 5.0,已安装 Workflow Ma ...
- centos系统设置通过windows代理上网
网络环境说明: 物理机windows xp sp3系统 ip:192.168.29.21(通过路由上网,有权限设置proxy给其他机器代理上网) 虚拟机centos5.5系统 ip:192.168.2 ...
- 关于ajax请求,返回json数据格式
使用servlet测试 后台数据为:返回类型没有设置(方式一) String str = "["+ "{ id:1, pId:0, name:\"可折腾的父节点 ...
- jquery学习集合
跳转网页:$(location).attr('href', '/index');
- 常见的js算法
参考地址:链接
- OCM_第十六天课程:Section7 —》GI 及 ASM 安装配置 _安装 GRID 软件/创建和管理 ASM 磁盘组/创建和管理 ASM 实例
注:本文为原著(其内容来自 腾科教育培训课堂).阅读本文注意事项如下: 1:所有文章的转载请标注本文出处. 2:本文非本人不得用于商业用途.违者将承当相应法律责任. 3:该系列文章目录列表: 一:&l ...
- vue-router之路由钩子(组件内路由钩子必须在路由组件调用,子组件没用)
模式 vue-router中的模式选项主要在router实例化的时候进行定义的,如下 const router = new VueRouter({ mode: 'history', // 两种类型hi ...
- 关于Newtonsoft.Json,反序列化jason,内容有key的转换
Newtonsoft.Json,反序列化,对于result里面的结果,可以使用Dictionary<string, List<类名>>,string是key值,value又是一 ...