Conclusion

/*
高中最后一个暑假  挺有意义的
考了一暑假的试 最后总结一下吧 
一天一天来吧

7.30
这一天的题有点变态啊 不过难题有难题的做法
T1斗地主
考试的时候打了0分  0分.....
原因好像是读入的格式错了 每次重新读n
认真读题.认真读题.认真读题
其实就算读进来了也只是25分的基础分
连那种赤裸裸的暴力都没打出来
暴力的水平还要提高啊....
正解嘛 很机智 很简洁 不说了
T2虫食算
这题打了暴力+剪枝本来能得70的 
然而考虑的不全面.不全面 忘了最前面的不能有进位
wa了两个 只得了50分
正解是根据等式的计算规则 从右往左+剪枝
T3食物链
这题打了好几遍了 但是自己写真心写不出来

8.3
T1楼房
第一遍爆零了.... 
先粘一下数据范围
对于30%的数据,n<=100
对于另外30%的数据,n<=100000,1<=h[i],l[i],r[i]<=1000
对于100%的数据,1<=n<=100000,1<=h[i]<=10^9,-10^9<=l[i]<r[i]<=10^9
100%的就不考虑了  说说暴力是如何爆零的
对于前30%的来说 n小 但是没有意识到lr大大大大大.....
被数据范围耍了.. 
只看见另外30%的lr小 可枚举区间
然后太贪心了 为了也过掉前30%处理负区间用了map
然后全超时了.....我滴心啊~
改回数组 水到了中间的30分
正解用了set 线段树也ok 后来自己都试过了 
这里稍微说一下离散化+线段树的做法
存入每个坐标 (每一条竖线)
sort一下 然后处理每个矩形的时候
先lower_bound一下位置 然后用这个位置作为下表搞线段树
最后感叹一句用set时sort的神奇作用
T2地鼠游戏
贪心+堆优化
如果赤裸裸的贪心 每次选当前马上就要消失的的话
有反例 比如 
1 2 2 
1 2 2 
倒序来看就能很好地解决这个问题了
循环一遍时间 把==当前时间的放到堆里面
每个时间学一个v最大的
T3关押罪犯
法一 染色
法二 并茶几

8.4
T1高级打字机
阿偶 可持久化线段树 不会
暴力50分 似乎noip不会考这个 就没看
T2海战
灌水
T3有趣的数
神数论题
考试的时候想了很久 最后还是大的暴力 34分
后来看了题解的神奇做法 ...
首先特判的情况比较简单 考场上也想到了
先统计 <k且字典序<k的个数 cnt 
1.如果cnt>=m cout 0
2.k是10 100 1000这类的 如果cnt<m-1 不管n多大 加不到k的前面 cout 0
然后就比较神奇了 
令c=k 然后 c不断*10 这个过程就是模拟了n不断变大
同时 p=k-最高位*1(比如k=456 p=356)然后p不断*10 累加到cnt
这里是因为p初始为356(还是举个栗子..)伴随着c的变大 p*10恰好是每次c的cnt的变化值
这样完事之后  cnt表示<c且字典序<c的个数 显然这个>m (要不for不终止)
并且多出来的这些都是排在k之前的 所以答案是 c-1-(cnt-m+1)
最后还要和k取大 避免取不到的情况 比如 10 2 
1 10 2 3 4 5 6 7 8 9  
这种题嘛 考试的时候保证暴力分就好了
但是 打暴力也是有技巧滴
同桌加了几个if就50分了
其实特判的情况也不是很难想 只是没有这个意识
想特判. 
想特判.
想特判.

8.5
T1爱在心中
Tarjan
T2最长链
这个题印象很深刻啊!
虽然我到现在也不知道为啥数组要开那么大
数组要开大大大大
T3匈牙利游戏
求严格次短路 不会正解 打暴力
然而算错了复杂度 算错了复杂度
其实暴力没有计算的那么慢 自己傻傻的+n<=10
乱搞的答案不对....2个点
正解是
正反跑spfa 记录每个节点的1跑过来的最短路和n跑过来的最短路
考试的时候想的是每个点的这两个值加起来 然后求此小值 
后来发现 样例都过不了.....
原因是 这里的dis数组的定义决定了会忽略一些边
所以 接着这个思路想下来 我们强制走某一条边
也就是我们枚举边 然后计算 disu + dis2v + uv 就是一条路径的长度
注意这里统计出来的数的个数不是路径数 因为同一条路径上的许多边都统计了一遍
但这里求的是严格次短路 这就很好的符合我们求出来的值 只需要找出第二小的不同的就好
也就是说 这种方法不能求次短路 
 
8.6
T1潜伏着
考虑不全考虑不全 有一种情况想到了 但傻傻的没写到代码里
T2细胞分裂
比较简单的数论题
细节处理的不好..有个/0的地方 
而且是第一个点 最简单的数据 如果自己交之前造出来试试的话就A了 
造数据的水平低... 
T3道路游戏
不算难得dp 写了很久没写出来....
dp太弱.... 
没留多少时间打暴力 写了个裸地 5分...
没把握的一定留出时间打暴力+剪枝 

8.8
T1裸地kmp
T3裸地manachar
T2 Hash
这个题纠正我对hash的认识....
之前以为hash就是用一个可存储的 一般是int 数据类型来记录信息
而这个题自己这样敲完之后就发现了问题
信息太多 而hash值关系到数组下标 又不能开太大 
这样碰撞的几率就大大增加了
果然的wa了
对于每个hash值 把它抽象成一个点 然后每个信息作为它连向的点
这样借助链表就存下来了 但是这个东西的复杂度理解的不好
有时候换的mod就T 甚至有时候用map都比他快.. 

8.9
T1餐巾
似乎是贪心 然而没有想出策略 打的暴力
废了很久的时间剪枝 然后后来想想 数据范围很大
比较稀疏 有的不剪就过 有的不管怎么剪都过不了..
考虑好哪里该用剪枝 
贪心策略嘛
其实这个贪心只能过cogs上的数据 别的只能用网络流
枚举一共买多少个 
前几天的尽量买 因为这样就能很快的进入循环 为后面省钱
然后对于每天的需求 除去买的 肯定输慢洗的优先(因为便宜)
然后用快洗的 这里注意优先使用刚刚洗出来的 保证这些快洗的用完后很快慢洗出来 
T2借教室
二分比线段树快!
T3路由选择
最短路 次短路 次次短路 
本来想用求次短路方式求 结果不能保证正确性.. 
n很小 暴力.暴力.暴力 
路径输出的时候麻烦点 

8.10
讲课没考 ^ ^
8.11
水题不说了

8.12
T1苹果树
这题给百度翻译坑了一把....
正解dfs序+树状数组 
T2平衡的阵容
ST表
注意注意
    int k=log(r-l+1)/log(2);
这句是很慢的 所以还是预处理一下的好
T3snow
又是hash 依旧按照自己想法
结果就是 ~ wa 还是因为hash值重了..
有个很适合这个题的算法叫最小表示法
不过这个算法没学会 按他的思想自己yy了一下就A了

8.13
T1开车旅行
暴力的复杂度是n*n的
首先预处理每个点的最短次短距离就Tle了
这里我们借助set O n 的解决这个问题
然后对于每个询问 利用倍增 logn的实现就不超时了  
T2聪明的质检员
注意注意!mxx开大开大开大~ 
T3观光公交
贪心

8.15
T1 2k进制数
我滴天~又算错复杂度 阶乘算成乘....
算好复杂度! 
T2互不侵犯
爆力 懒得剪枝了 50分
剪枝 每次搜右下 70分
剪枝剪枝剪枝! 
正解好神奇好神奇...表示自己要学的还很多
注意到n<=9 不是搜索就是状丫
搜索+剪枝 70分 枚举放或者不放
这里用状丫 f[i][j][k] 表示前i行 放了j个国王 i行的状态是k的方案数
转移的话 枚举下层的状态 算出这个状态中有几个国王 然后更新
复杂度 2^n*2^n*n*K*n 最后一个n是算国王数 这个可以预处理搞出来
还有一个问题就是 互相伤害的问题
首先在同一行里 相邻的不行 不同行的就左移右移一下就好了 顺带处理好两个状态能不能互相转移
最后Σf[n][K][i]  
T3Necklace of Beads
正解Polya 还没看懂.....

8.16
T1 Brackets Sequence
区间dp 然后递归输出 要special judge
T2 贪吃的九头龙 
调到吐血的树形dp….
状态定义的没错 就是考试的时候傻啦吧唧的转移左右孩子
其实之转移父亲就简单多了 不用考虑那么多
还有就是偷懒没有把谁有没有找过这个信息转过去
而是搞了个全局变量…wa到挺
再就是特盘的时候还有终止条件写的不好
递归的时候一定要看好 能不能定义全局变量! 
T3 剑客决斗 
编号为x的人能从所有人中胜出,必要条件是他能与自己相遇,
即把环看成链,x点拆成两个在这条链的两端,中间的人全部被淘汰出局,x保持不败。
这样,在连续几个人的链中,只须考虑头尾两个人能否胜利会师,中间的则不予考虑,
从而少了一维状态表示量。
 
8.17
T1飞扬的小鸟
暴力dp80
看了题解优化之后却wa75
因为不是自己想的 理解的不好 很久之后才想明白
T2 守卫者的挑战 
表示很遗憾..
开始状态想的没错 就是转移的时候出了问题 自己也想到了数组平移
然而没往下写 与正解擦肩而过….
然后为了好转移写了个4维的 时间不多了没来得及降维 草草的算算空间就交了…
尼玛double忘记*8了 华丽的直接Memory limit exceeded while compiling
我尼玛0分
考试后写了写用原来的状态写了写数组平移然后降维
数据太水就A了
想到就写啊 试一试 
T3 棋盘染色2
暴力+剪枝65
正解状丫不会写

8.18
T1 运输计划
之前做过这题 然而lca的时候&写成了&& 华丽的95分蹦成5分
还是太粗心 具体的不说了 orz神奇标记上传
细心细心细心 要对拍 要对拍 
T2解方程
很好的思路 mod 减小范围解决T的问题
T3国王游戏
我是不会说我考试的时候想到了正解却把金币取大看成金币求和的.... 
读三遍题 读三遍题 读三遍题! 

8.20
T1 digits
这题....输出是要换行的
读三遍题 读三遍题 读三遍题! 
T3 graph
k>=n
读三遍题 读三遍题 读三遍题!  
 
8.21 
T1 鬼子进村
不会正解 暴力80
学会好好利用STL封装好的数据结构 
T2 可怜的狗狗
暴力60 正解主席树
值得一提的是 有同学手打快排改进只排有贡献的一半70
也不要太依赖STL
T3 送花
读三遍题 读三遍题 读三遍题!
考虑全面 考虑全面 
删掉之后就又可以加了....

8.24
T2 疫情控制
这题要好好说说
考试的时候乱搞的 明知道正确性有问题还是写了
20分 比较给面子了....
其实暴力回溯的话可以40分
看来对于这种暴力还不是很会打
最起码这次没想到
暴力优先 打好暴力

8.25
T2 封锁阳光大学
这题可惜了啊 想到了正解 还是40分..
丫好几个联通快啊!
所以向染色啊 匈牙利啊 Tarjan啊 都是for一遍的
记住记住记住!QAQ 
 
8.26
T2 车站分级 
根据题意建立模型 
认真读题 认真读题 认真读题
停的站前后的没停的都要比他小….
然后找最长链 用记忆化加速 拓扑排序好像也行
*/

 

转载于:https://www.cnblogs.com/yanlifneg/p/5814766.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值