2016.11.03解题报告

2016.11.03解题报告

今天的题几乎全是多组读入数据且数据很大的,所以准备好读入优化(cin就不一定保险)和longlong还是有必要的……养成好习惯,以免出低级bug

Part.1 防线

乍一看似乎是道数论题,然而看到数据范围——跪了。不过某种意义上这道题确实是数据范围剧透解法系列……

解题思路

都到2^31-1了,也只能有logn不会超时了,进而想到了二分。那么问题来了,二分啥?有什么量是符合二分性质的?题目中说“防线上也最多只有一个位置有奇数个防具“,所以单数个防具的位置所在的区间防具总数也一定是单数。也就是说,如果一个区间的防具总数为单数,那么该区间内一定有解,否则该区间内一定无解。这样就满足性质,可以二分了。每次取mid,枚举i(1<=i<=n)累加判断左半个(或者右半个也无所谓)区间的防具总数,此处用到了公式:区间[l,r]内满足max(l,s[i])<=s[i]+d[i]<=min(r,e[i])的i的总数为:

if (mid>e[i]) cnt=(e[i]-s[i])/d[i]+1;

else cnt=(mid-s[i])/d[i]+1;

二分结束时判断左右端点哪个成立即可,若都不成立则无解。

Part.2 星象仪(pla

一开始确实想到了树P,然而死于位运算和题目理解……愣是瞅了半个小时才看懂题目样例是怎么跑的……

解题思路

先树型DP跑出根节点第一次输出1时需要调整的次数,之后每变一次信号答案就+1(证明:因为跑完树P后dp[1]得到的是把根节点调成1的最小步数,所以在此之前一定都是0,也就是说无论怎样一定有一种状态满足当前为0、再调一步为1)。至于树P的跑法,据说是对于两颗子节点的返回值,”|”门取较小,”&”门求和……

Part.3 分形之城(fra

一道变态的分治题……首先你要火眼金睛看出来这个图相邻两级的关系,即n级图是怎样由n-1级转来转去转出来的(此刻HP已掉了1/3),然后你还要确定每一种转法得到的坐标与原图的关系(系统提示:您的HP已经见底,请注意安全),最后还要处理最后的距离问题,虽然不难但是也有炸long long和吞精度的风险……

(原题是openjudge分治里的stupidcat&doge)

解题思路

每一级图都是由上一级经过旋转对称得来的,显然是四块图拼起来,按街区编号的顺序分成1、2、3、4号子图,则由观察得出2、3号子图和上一级一毛一样,1号子图是上一级顺时针旋转90度再重新标号,4号子图是逆时针转90度再重新标号。由此我们可以一直递归,直到找到第1级图,返回对应的1、2、3、4号点的坐标再进行处理就好了。至于坐标关系,最好还是看代码分析分析得了……

k表示原图里第num号点在子图中的序号,1号子图里就是num2号是num-p(子图大小),3号是num-2p4号是num-3p

x表示横坐标,y表示纵坐标)

1号子图第k个点x:n-1级图第k个点的y;

2号子图第k个点x:n-1级图第k个点的x;

3号子图第k个点x:n-1级图第k个点的x+子图边长;

4号子图第k个点x:n-1级图第k个点的y*(-1)+1+原图边长;

1号子图第k个点y:n-1级图第k个点的x;

2号子图第k个点x:n-1级图第k个点的y+子图边长;

3号子图第k个点x:n-1级图第k个点的y+子图边长;

4号子图第k个点x:n-1级图第k个点的x*(-1)+1+子图边长;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值