常州培训 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 ...
随机推荐
- Python学习(4)运算符
目录 Python 算术运算符 Python 比较运算符 Python 赋值运算符 Python 位运算符 Python 逻辑运算符 Python 成员运算符 Python 身份运算符 Python ...
- Linux 中如何卸载已安装的软件
Linux 中如何卸载已安装的软件. Linux软件的安装和卸载一直是困扰许多新用户的难题.在Windows中,我们可以使用软件自带的安装卸载程序或在控制面板中的“添加/删除程序”来实现.与其相类似, ...
- JavaSE复习_7 异常
△子父类涉及的异常问题: 1.子类在覆盖方法时,父类的方法如果抛出了异常,那么子类的方法只能抛出父类的异常或者该异常的子类,且只能抛出异常的子集 2.如果父类抛出了多个异常,子类只 ...
- ajax发布评论 、显示评论
<!DOCTYPE html><html lang="zh-CN"><head> <meta charset="UTF-8&qu ...
- Maven——聚合与继承
原文:http://www.cnblogs.com/xdp-gacl/p/4058008.html 一.聚合 如果我们想一次构建多个项目模块,那我们就需要对多个项目模块进行聚合 1.1.聚合配置代码 ...
- 关于Split方法
String a="1000,"; String[] b=a.split(","); System.out.println(b); 关于以上代码,b中只有一个元 ...
- easyui combobox 智能提示搜索
<!-- 获取机会点名称列表 --><script> function initOpportunityNameFuzzyQuery() { $('#jihuidianmingc ...
- Working with Data » 使用Visual Studio开发ASP.NET Core MVC and Entity Framework Core初学者教程
原文地址:https://docs.asp.net/en/latest/data/ef-mvc/intro.html The Contoso University sample web applica ...
- javaScript DOM编程
1.DOM概述 1.1. 什么是DOM? DOM= Document Object Model,文档对象模型, DOM 是 W3C(万维网联盟)的标准.DOM 定义了访问 HTM ...
- IE7浏览器下CSS属性选择器二三事
一.为何专门说起IE7 以前,或者说数年前,我们从事桌面端网页开发的时候,基本上都还要兼顾IE6浏览器, 即使有些特性,IE7支持,我们也会忽略之.于是,我们会不自然地把IE6和IE7浏览器归为一路货 ...