QbztDay1游记
qbzt爆零记Day1
T1
我们为什么不把这个机器人直接报废掉呢?
素质题目
其实这就是个膜你模拟
坑点:
如果走到了水池并掉进去了,位置并不是水池前面的格子,而是执行这条指令之前的位置
来自老师的一点建议
可以分成几个独立的函数来写,例如把机器人运动和机器人旋转写到一起之类的
T2
迷路的刺豚(expand,1.5s,64M)
题目描述
有一只名叫小T的刺豚,一大早它妈妈就让它出门买菜。
它看见了一只可爱的小海马,一路追着它跑啊跑啊。
结果……小T迷路了。但妈妈在家里等得很着急,它要赶紧买完菜回家。
所以!当务之急!它要知道去买菜的路……
它记得所有菜店的坐标,也知道它现在的坐标。请你帮帮她,找到一条买完菜的路吧。
它已经急得快哭了,它想要买完菜回家。因此它需要你找到一条最短的路买菜。
由于它是一条可以膨胀的刺豚,它喜欢自己大大的体格,因此它希望在路径最短的情况下使自己的体格
最大,即在移动时离障碍尽可能远。
因为你开着上帝视角,所以你知道小T所在的地图。你能帮它找到一条路吗?
注意:
1、此处的离障碍最远是保证在任何时候、在保证路径最短的情况下离障碍最远。当然小T只需要你保证
在每个位置的体格之和尽可能大。
2、不需要考虑小T回家的路
输入格式
第一行两个数 ,表示小T所在的地图大小和小T的最大体格。
体格为 表示小T会占据 个格子。
接下来 行每行 个数字表示地图,其中‘1’表示障碍,'0'表示空地。
接下来一行三个数 表示小T所在的坐标 和菜店数量 。
接下来 行,第 两个数表示菜店 所在的坐标。
输出格式
输出两个数,表示最短路长度以及每个位置的体格之和。
数据范围
对于20% 的数据,所有菜市位置和小T所在的位置在一条水平直线上。
对于另外 30%的数据,s=0 ,其中20% 的数据还满足n,m≤50
对于另外20% 的数据,p=1
**对于100%的数据,\(n,m\leq 300\) ,\(s \leq 10\) ,\(p \leq 15**\)
样例输入1
4 5 3
0 1 1 1 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 4 1
0 0
样例输出
6 0
样例输入2
4 6 3
1 1 1 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 4 1
3 0
样例输出
7 5
一条直线的那个点:
先走坐,再走右和先走右再走左看哪个短
体格:从最大体格开始减,看哪个体格刚好可以走完所有的菜店并且不碰到障碍
最短路:
旅行商问题
用二进制(状压dp)表示每个点经没经过,枚举每个点是由哪个点转移过来的(两点之间最小距离可以用bfs求)
\(f[s|1<<j][j]=f[s][i]+dis[i][j]\)
\(s∪1<<j由j转移过来\)
dp时可以用bfs求两点间距离
体格
设一个size[x] [y],表示由x到y的最大体积
当前点为x,若dis[x] [y] 和dis[x] [ty]相等,则比较size(x,y),size(x,ty),选择较大的那个size的ty作为当前所在点的前驱
T3
生日(birthday.cpp/1s/256M)
题目描述
9102 年,科学家在离太阳很远之外发现一颗恒星叫许愿星,许愿星有一个行星叫夏之
星,夏之星上的理化性质和地球相似,也存在大气层,适合人类居住。
夏之星的南山幼儿园内计划了许多场生日派对。
现在有 n 个小朋友,编号为 1~n。
每次生日派对校长会初选择[L,R]区间内的小朋友参加生日派对,再由老师决定在校长
选中的小朋友中挑选出部分小朋友分为两个集合,一个集合的小朋友上午参加派对,一个集
合的小朋友下午参加派对。
编号为 i 的孩子,初始想要礼物价格为 a[i],对应的礼物的花费会为 a[i]+1,其中 1
元为邮费。当上午参加的小朋友的礼物总花费和下午参加的小朋友礼物总花销不同时,就会
引起花销少一方的小朋友的家长的不满,从而收到他们的投诉。
每次派对老师要仔细挑选参加派对的小朋友,尽量避免投诉。现在方老师怀孕了,会休
假很长时间,拜托你来帮她代管她们班的小朋友。你不仅要负责划分好参加生日派对的小朋
友,还要负责采购礼物和调查礼物价格的浮动。
相信聪明的你一定能解决这个问题
输入格式
一行 3 个正整数,分别表示 n,m,v。分别表示有 n 个小朋友,开生日派对或礼物价格
变化总共 m 次,初始礼物价格上限 v。
之后一行 n 个整数,第 i 个整数表示初始第 i 个小朋友礼物的价格为 ai。
之后 m 行每行三个数,opt,l,r。
opt 为 1 表示举办一场生日派对,校长选择区间为[l,r]。你需在[l,r]内挑选两个非
空集合 X,Y,满足:
1、X 和 Y 没有交集,即同一个小朋友不能同时出现在 X 集合和 Y 集合
2、设集合 X 有一个小朋友为 x,则花费为 a[x] + 1,要求集合 X 总花费和集合 Y
元素的总花费相等。
如果能选择出这两个集合输出 Yes,如果不能输出 No。
opt 为 2 表示礼物价格有变动。区间为[l,r]的小朋友所对应的礼物价格从 a[x]变化为
a[x]a[x]a[x] % v,即区间立方模 v。
输出格式
设操作 1 有 c 次,输出 c 行,每行一个字符串 Yes 或 No 表示能否选出这两个集合
一行一个整数,即答案
样例太长了,所以没有样例qwq
60%:
每个小盆友可以放到x集合里,也可以放到y集合里,也可以不理这个小盆友(不选)
对于\(r-l+1\leq 7\)的数据,我们可以爆搜枚举
在这里我们将放进x集合里的元素的系数设为1,放进y集合里的元素的系数设为-1,然后不选的设为0,爆搜出是否有和为0的方案数
显然复杂度不会炸
那么考虑\(r-l+1 >7\)的区间长度
我们要找到两个集合x,y,使得\(\sum_{s\in x}{a[s]+1}=\sum_{k \in y}{a[k]+1}\)
先考虑x集合
每个元素只有选和不选两种方案,设区间长度为len,所以,会有\(2^{len}\)种集合,但考虑每个元素的大小不超过v,所以这个区间的和最多是v*len,
显然当len足够大的时候,\(2^{len}\geq v*len\),这个时候,至少有两个集合会对应到同一个值上去,我们就可以让这两个集合分别当集合x和集合y
手动解一下\(2^{len} \geq v*len,len\leq 14\),所以当询问的区间长度$\geq$14的时候,直接输出Yes即可
当区间长度<14的时候,怎么办呢?
我们在上面解决了当区间长度为7的问题,发现14=2*7,所以我们可以折半搜索
可以记录前半段搜出的每个值,然后看后半段是否能搜出前半段中任一值的相反数(还要考虑0,1,-1这三种系数)
就像酱紫:
假设我们要对 3 5 1 1 这一组数据进行操作
左半边的元素其实要考虑:3 5 -3 -5 0
当然了,折半搜索在其它bt的题目里还可以用map记录前半段搜出的每个值对应的状态,设题目要求前半段+后半段=t,在搜后半段的时候,每搜到一个t-前半段出现的值,
100%:
在线段树上搞区间修改
修改:暴力处理(下到最底层,然后合并)
因为tag叠着叠着就大了,所以要搞个类似快速幂(倍增)一样的东西来搞\(a[i]^x\)这类东西
QbztDay1游记的更多相关文章
- 【20161203-20161208】清华集训2016滚粗记&&酱油记&&游记
先挖坑(这个blog怎么变成游记专用了--) 已更完 #include <cstdio> using namespace std; int main(){ puts("转载请注明 ...
- 【20160722-20160728】NOI2016滚粗记&&酱油记&&游记
先挖坑 #include <cstdio> using namespace std; int main(){ puts("转载请注明出处:http://www.cnblogs.c ...
- NOIp2016 游记
DAY -2 不要问我为什么现在就开了一篇博客. 本来想起个NOIp2016爆零记或者NOIp2016退役记之类的,但是感觉现在不能乱立flag了.所以就叫游记算了. 前几场模拟赛崩了一场又一场,RP ...
- NOIP2016游记
只是游记而已.流水账. Day0:忘了. Day1:看完T1,本以为T2一如既往很简单,结果看了半天完全没有思路.然后看了一眼T3,期望,NOIP什么时候要考期望了,于是接着看T2.一开始我推的限制条 ...
- CTSC2016&&APIO2016滚粗记&&酱油记&&游记<del>(持续更新)</del>
挖一波坑 #include <cstdio> using namespace std; int main(){ puts("转载请注明出处:http://www.cnblogs. ...
- 游记——noip2016
2016.11.18 (day 0) 呆在家. 悠闲地呆在家.. 明后天可能出现的错误: 1)没打freopen.打了ctime: 2)对拍程序忘记怎么写了...忘记随机化种子怎么写了: 3)不知道厕 ...
- 【NOIP 2015 & SDOI 2016 Round1 & CTSC 2016 & SDOI2016 Round2】游记
我第一次写游记,,,, 正文在哪里?正文在哪里?正文在哪里?正文在哪里?正文在哪里?正文在哪里?正文在哪里?正文在哪里?正文在哪里?正文在哪里?正文在哪里?正文在哪里?正文在哪里?正文在哪里?正文在哪 ...
- ZJOI2016二试+游记
...excited.... 一场打回原形爽哦. T1莫名爆到了10分,T2T3均没交,一个小时过后就没再拿任何分数,perfectly狗带了... 总之没有给自己充足的时间去敲暴力,ZJOI啊..拿 ...
- NOIP2015游记——一次开心又失望的旅行
啊,一年一度的NOIP终于是结束了 以前的大神都有写自己的感受 然而我居然给忘了!!!! 吓得我赶紧来写一份游记 Day.-INF--出发前一个星期 机智的我选择了停课 就是为了OIER这伟大而又光荣 ...
随机推荐
- Linux文档整理之【Jenkins+Docker自动化部署.Net Core】
这次整理的文档是Jenkins+Docker实现自动化部署,很早之前就写的,今天有时间就搬到博客园做个记录. Jenkins是基于Java开发的一种持续集成工具,主要用于持续.自动的构建/测试软件等相 ...
- RocketMQ 源码分析 —— Message 发送与接收
1.概述 Producer 发送消息.主要是同步发送消息源码,涉及到 异步/Oneway发送消息,事务消息会跳过. Broker 接收消息.(存储消息在<RocketMQ 源码分析 —— Mes ...
- 现身说法:面对DDoS攻击时该如何防御?
上周,我们的网站遭到了一次DDoS攻击.虽然我对DDoS的防御还是比较了解,但是真正遇到时依然打了我个措手不及.DDoS防御是一件比较繁琐的事,面对各种不同类型的攻击,防御方式也不尽相同.对于攻击来的 ...
- centos7进入单用户模式修改root密码
1.开机 按“e”,然后输入init=/bin/sh 2.根据提示按ctrl+x 得如下图: 3.输入mount -o remount,rw / 输入passwd设置新密码.如下图: 4.输 ...
- CCPC-Wannafly Winter Camp Day8 (Div2, onsite) A 题 Aqours (精巧的树形DP)
题目链接: https://www.cometoj.com/contest/29/problem/A?problem_id=414 Aqours 题目描述 Aqours 正在 LoveLive! 决赛 ...
- zencart前台小语种后台英文 导入批量表 前后台不显示产品的问题
admin\includes\init_includes\init_languages.php 前台小语种后台英文导致批量表导入后,前后台不显示产品的问题将红色部分修改成前台语言对应的值,前台语言对应 ...
- BFPRT: O(n)最坏时间复杂度找第K大问题
同时找到最大值与最小值 找到n个元素中的最大/小值,比较次数为n-1, 找到n个元素中的最大值和最小值,可以Two Pass,比较次数为2n-2 也可以One Pass,比较次数至多为\(\left ...
- python中字符串格式化的两种方法
知识点汇总;1-字符串格式化输出方法一: % 1-print('名字是 %s,年龄是%s' % (name ,age)) 2- %s ---字符串-----相当于执行了str() 3- (name , ...
- 开启mysql审计功能
下面方式是在线开启,重启后会失效: 1.mysql社区版没有审计插件,先获取server_audit.so文件,我是先在一台测试服务器上安装了一个mariadb数据库,然后搜索find / -name ...
- redis优雅的批量删除key
redis优雅的批量删除key 近期在处理redis的故障中,发现需要删除大量的历史数据(也是bigkeys),好在符合正则表达式.要不然就很痛苦,这也体现了在设计key的时候遵循规范带来的维护好处之 ...