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游记的更多相关文章

  1. 【20161203-20161208】清华集训2016滚粗记&&酱油记&&游记

    先挖坑(这个blog怎么变成游记专用了--) 已更完 #include <cstdio> using namespace std; int main(){ puts("转载请注明 ...

  2. 【20160722-20160728】NOI2016滚粗记&&酱油记&&游记

    先挖坑 #include <cstdio> using namespace std; int main(){ puts("转载请注明出处:http://www.cnblogs.c ...

  3. NOIp2016 游记

    DAY -2 不要问我为什么现在就开了一篇博客. 本来想起个NOIp2016爆零记或者NOIp2016退役记之类的,但是感觉现在不能乱立flag了.所以就叫游记算了. 前几场模拟赛崩了一场又一场,RP ...

  4. NOIP2016游记

    只是游记而已.流水账. Day0:忘了. Day1:看完T1,本以为T2一如既往很简单,结果看了半天完全没有思路.然后看了一眼T3,期望,NOIP什么时候要考期望了,于是接着看T2.一开始我推的限制条 ...

  5. CTSC2016&&APIO2016滚粗记&&酱油记&&游记<del>(持续更新)</del>

    挖一波坑 #include <cstdio> using namespace std; int main(){ puts("转载请注明出处:http://www.cnblogs. ...

  6. 游记——noip2016

    2016.11.18 (day 0) 呆在家. 悠闲地呆在家.. 明后天可能出现的错误: 1)没打freopen.打了ctime: 2)对拍程序忘记怎么写了...忘记随机化种子怎么写了: 3)不知道厕 ...

  7. 【NOIP 2015 & SDOI 2016 Round1 & CTSC 2016 & SDOI2016 Round2】游记

    我第一次写游记,,,, 正文在哪里?正文在哪里?正文在哪里?正文在哪里?正文在哪里?正文在哪里?正文在哪里?正文在哪里?正文在哪里?正文在哪里?正文在哪里?正文在哪里?正文在哪里?正文在哪里?正文在哪 ...

  8. ZJOI2016二试+游记

    ...excited.... 一场打回原形爽哦. T1莫名爆到了10分,T2T3均没交,一个小时过后就没再拿任何分数,perfectly狗带了... 总之没有给自己充足的时间去敲暴力,ZJOI啊..拿 ...

  9. NOIP2015游记——一次开心又失望的旅行

    啊,一年一度的NOIP终于是结束了 以前的大神都有写自己的感受 然而我居然给忘了!!!! 吓得我赶紧来写一份游记 Day.-INF--出发前一个星期 机智的我选择了停课 就是为了OIER这伟大而又光荣 ...

随机推荐

  1. [转载]Linux软件包及dpkg\apt等方法

    Linux软件安装 来源:https://segmentfault.com/a/1190000011200004?share_user=1030000007255638 一.安装包分类 在Linux平 ...

  2. luogu P4631 [APIO2018] Circle selection 选圆圈

    传送门 那个当前半径最大的圆可以用堆维护.这道题一个想法就是优化找和当前圆有交的圆的过程.考虑对于所有圆心建KD-tree,然后在树上遍历的找这样的点.只要某个点子树内的点构成的矩形区域到当前圆心的最 ...

  3. python编码环境安装与基本语法

    一.pycharm的基本使用 1.python以及pycharm的安装 python的版本选择:3.x版本就行 pycharm的版本选择:社区版就够用 pycharm只是一个编写工具,python才是 ...

  4. ASP.NET 中 取得 Repeater 里的checkbox值

    前言:这两天在维护ASP.NET的项目,需要做一个checkbox来选择数据进行导出,下面提供两种解决思路 1.ASP:CheckBox asp:CheckBox自带控件,没有Value值 <a ...

  5. FPDF_CHAR_INFO

    typedef struct { FX_WCHAR m_Unicode; FX_WCHAR m_Charcode; FX_INT32 m_Flag; FX_FLOAT m_FontSize; FX_F ...

  6. Java基本的程序结构设计 字符类型

    char类型 char是2个字节,和short一样. char用单引号来表示. char可以通过数字来表示,也可以通过字母来表示,也可以通过unicode编码单元来表示,特殊字符还可以通过\+字符来表 ...

  7. 微信小程序横向滚动正确姿势

    <1>xml文件 <view> <scroll-view scroll-x class="scroll-header"> <view cl ...

  8. deepin 常见快捷键及常用命令

    常用命令 1)安装软件命令行:dpkg -i <.deb file name>示例:dpkg -i avg71flm_r28-1_i386.deb2)安装一个目录下面所有的软件包命令行:d ...

  9. HDU-3605-Escape(最大流, 状态压缩)

    链接: https://vjudge.net/problem/HDU-3605 题意: 2012 If this is the end of the world how to do? I do not ...

  10. matlab画二维直方图以及双y轴坐标如何修改另一边y轴的颜色

    1.首先讲一下如何用hist画二维直方图 x=[- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ...