常州培训 day6 解题报告
第一题:
题目大意:
给出一个N*N的矩阵,矩阵元素均为0或1。定义矩阵权值为sum(F[i][j]*F[j][i]);
给出K个操作:
- 询问矩阵的权值mod 2。
- 将矩阵的某一行元素取反(0变成1,1变成0)。
- 将矩阵的某一列元素取反。
N<=1000,K<=10^5
解题过程:
- 一开始看到K的范围有点大,肯定不能模拟,想到前几天N皇后那题大神讲了可以用60位压成一个long long优化,于是就傻乎乎的把每一行每一列都60位压缩。然后各种麻烦的操作,写到最后发现写不下去了,顿时心情糟透了,然后打算写个爆搜算了。结果在写爆搜的时候猛然发现。。这题其实是大水题。。
- 首先对于不相同的i,j,ans必然要加上F[i][j]*F[j][i]+F[j][i]*F[i][j]; 这个式子必然mod 2为0。所以影响答案的只有对角线的元素。只要一开始计算出ans,然后每进行一次操作2或者操作3,ans就会取反。总的时间复杂度其实是O(N+K);
- 没舍得把60位压缩的代码删了,然后脑残的想来练习一下压缩法,于是把对角线的元素放在一起做60位压缩,结果小细节没处理好爆0了。
- 经过测试证明,60位压缩的效率非常高,所以数据跑完是2146ms,标准算法是2096ms。虽然写起来稍微麻烦了点,还是非常好用的。
第二题:
题目描述:
粉刷N块宽度为1的木板,给出木板的高度,木板与木板紧密相邻且下对齐。
每次粉刷可以用宽度为1的刷子横着刷,也可以竖着刷,但不能刷到木板以外的地方。求最少的粉刷次数。
解题过程:
- 这一题乍一看以为是NOIP2013 day2第一题换了个背景,但看了半天还是没什么思路。。。只发现一点:如果有一个木板的高度是1,那么必定是横着刷(反正是要刷的,竖着只能刷一个,横着可以刷一排)。第一题花了很多时间,这题就只好随便写个贪心了。每次找到一个高度为1的,刷掉,然后剩下的全部竖着刷。。结果只骗到了10分。
- AC算法:先找到一个最矮的,设其高度为h,然后横着刷h行。(想象成底下砍掉h行)然后就分成了左右2个部分,分别递归求解。。当然对于区间[L,R],还是要考虑全部竖着刷的情况,两种情况取个最小值即可。
- 粗略证明(自己想的,不严密):只要证明在不考虑全部竖着刷的情况下,先横着刷min(H[i])行肯定不会比最优解差。。假设第k列的高度最小,那么如果第k列是竖着刷完的,那么在分出来的左右两个部分中,必然不会有横着刷的情况。因为如果有横着刷的情况,那横着刷的时候如果刷到k这行可以更优。。
第三题:
题目描述:
给出N个矩形,求出总的覆盖面积。
N<=10^5, 0<=xi<=10^6,0<=yi<=10^9,1<=ai,bi<=10^6
解题过程:
1.考试时线段树忘得差不多了。。不敢写,直接写了个暴力,骗了30分。
2.AC算法:扫描线线段树。。考虑到x的范围比较小,所以根据x做线段树,先根据线段y坐标排个序,把下边描述成一个开始事件,上边看成结束时间,从下往上扫描累加面积即可。
3.讲课的大神说x,y的坐标即使开到10的18次也可以做,只要用链表的形式存线段树,一个节点只有用到的时候才为它开辟空间。解决了静态存储空间不够的问题。
常州培训 day6 解题报告的更多相关文章
- 常州培训 day5 解题报告
第一题:(贪心) 题目大意:给出N*M的矩形,要用正方形将它铺满(正方形之间不能重叠),相邻的正方形颜色不能相同,颜色用ABCD表示.要求从上到下从左到右字典序最小. N,M<=100 解题过程 ...
- 常州培训 day7 解题报告
最后一天..有些感慨,这七天被虐的感动万分 第一题: 题目大意: 求出 n*i(i=1,2,3....n) mod p的逆元 n<p<=3000000 ,p是质数. 之前写过了,懒得再写 ...
- 常州培训 day4 解题报告
第一题:(简单的模拟题) 给出一个N位二进制数,有‘+’, ‘-’, ‘*’, ‘/’ 操作,分别表示加1,减1,乘2,除以2,给出M个操作,求出M个操作后的二进制数.N,M<=5000000; ...
- 常州培训 day3 解题报告
第一题: 给出数轴正半轴上N个点的坐标和其权值,给出初始体力值M,人一开始在位置0,体力值会随着走过路程的增加而增加,走多少个单位的路消耗多少体力值.到每个点可以打掉,消耗的体力值就是其权值.求 最多 ...
- 常州培训 day2 解题报告
第一题: 题目大意: 给出一个M面的骰子,投N次,求最大期望值. 最大期望值的定义: 比如M=2,N=2, 那么 2次可以是 1,1,最大值为1: 1,2最大值为2: 2,1最大值为2: 2,2 最大 ...
- 常州培训 day1 解题报告
第一题:(骗分容易,AC难.) 题目大意: 给出一个字符串,找出满足条件A的区间的个数.A:字符A,B,C的出现次数相同. 都出现0次也算,区间的长度可以是0(就是只有一个数).30% |S| ≤ 1 ...
- CH Round #56 - 国庆节欢乐赛解题报告
最近CH上的比赛很多,在此会全部写出解题报告,与大家交流一下解题方法与技巧. T1 魔幻森林 描述 Cortana来到了一片魔幻森林,这片森林可以被视作一个N*M的矩阵,矩阵中的每个位置上都长着一棵树 ...
- 二模13day1解题报告
二模13day1解题报告 T1.发射站(station) N个发射站,每个发射站有高度hi,发射信号强度vi,每个发射站的信号只会被左和右第一个比他高的收到.现在求收到信号最强的发射站. 我用了时间复 ...
- BZOJ 1051 最受欢迎的牛 解题报告
题目直接摆在这里! 1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4438 Solved: 2353[S ...
随机推荐
- PL/SQL 编写规范
大小写风格 所有数据库关键字和保留字均大写; 缩进风格 使用空格, 缩进2格(前边空两个格, 后边要与SQL语句的一致, 比如下面:) SELECT * FROM TABLE 空格及换行 1行只写1条 ...
- bootstrap学习笔记<十一>(导航条)
基础导航条.样式:class="navbar navbar-default",属性:role="navigation" <div class=" ...
- Linux系统负载排查
参考 http://www.ruanyifeng.com/blog/2011/07/linux_load_average_explained.html 在Linux系统中,我们一般使用uptime命 ...
- hdu 4870 Rating
题目链接:hdu 4870 这题应该算是概率 dp 吧,刚开始看了好几个博客都一头雾水,总有些细节理不清楚,后来看了 hdu 4870 Rating (概率dp) 这篇博客终于有如醍醐灌顶,就好像是第 ...
- hdu 5339 Untitled
这题很明显是签到题,可我比赛时却没做出,赤裸裸的爆零了,真悲剧…… 看了题解后才知道直接暴搜就行,只是需要把它们从大到小排序后再搜,我当时就没想到...不想再多说了 一开始我直接枚举所有情况: #in ...
- C++ 11 右值引用
C++11中引入的一个非常重要的概念就是右值引用.理解右值引用是学习“移动语义”(move semantics)的基础.而要理解右值引用,就必须先区分左值与右值. 注意:左值右值翻译可能有些问题 *L ...
- PSR-0的规范。
- java集合和scala集合互转
使用 scala.collection.JavaConverters 与Java集合交互.它有一系列的隐式转换,添加了asJava和asScala的转换方法.使用它们这些方法确保转换是显式的,有助于阅 ...
- Python策略模式实现源码分享
1.让一个对象的某个方法可以随时改变,而不用更改对象的代码 2.对于动态类型的Python语言,不需要定义接口 3.基本的实现方法:用类作为参数传递 例如: 12_eg3.py class Movea ...
- AngularJS的directive(指令)配置选项说明
js代码如下: var appModule = angular.module("appModule", []); appModule.controller("Ctrl&q ...