清 · 北 · Ⅱ

noip倒计时…

似乎没有之前那么狼狈、不堪了…

人总要向前看…

还是做一下这两天的总结…

昨天上午t1交错文件掉了两百分…两!百!

t3是个不错的题,一个点就是:询问第一个不能被满足的请求这类问题可以二分!

二分一个询问判断能不能达到。

然后并查集真是个好东西。如果要把一些区间赋值成1,并且查询区间内是否都被覆盖,可以用并查集实现。用f[i]表示点i右边最近的是0的点的编号。

初始f[i]=i;
两个操作:覆盖[l,r]:

for(int i=find(l);i<=r;i++)
{
    f[find(i)]=find(l+1);
}

查询[l,r]中是否有0:

if(find(l)>r) return false;
else return true;

妙啊!

来看看下午。

t1是一道叫做“水题”的题。

看上去像是二分图匹配…但发现妥妥地t…

其实这个两维的问题可以先考虑一维的情况,那就是左边的长ai覆盖右边比小于等于它的第一个bi。当然这可以用一个简单的平衡树实现…(其实multiset就好)…

那么两维怎么办?

先把第一维从小到大排序,从前往后扫,这样后扫到的一定能覆盖前面的(只看第一维),也就是不用考虑第一维,就可以把问题转化成一维的了。

然后就是t2…

第一问挺好想的,第二问我打的暴力…

但是暴力打的太丑了,其实如果打得好或者转dp就是可以过的。

dp的状态其实和爆搜是一样的…

今天上午t1是个贪心,想出了正解但是写挂了得了60…

t2神奇的题目…

t3有一个神奇的做法,就是开一个vector f[i][j]表示mod i==j的数的编号

妙不可言。

那么如何求[l,r]中mod p==v 的个数?

在f[p][v]里二分!

二分出大于等于l的最小的元素,和小于等于r的最大的元素,他们在f[p][v]里下表的差就是要求的个数。

下午t1、t2**题。

t3难度有点大…思路虽然是对的但是写出来是 有点 有些 有很大难度的…

但有一个point,就是当状态数很多的时候,可以用记忆化搜索代替dp,这样就只求出了有用的状态。并且开一个map代替数组。

反正考试看到这么难的题直接部分分到手就万事大吉…

两天590…

脸上笑嘻嘻…

那么,晚安…

Leaving…

下周的这个时候我就已经在考场上了…

抱着电脑不知道该写些什么…

学OI已经将近半年了,所有的付出都在七个小时里开花…

彷徨,不安…

就像自招前…

可是又大不相同…

我不知道结果会怎样…

“人生不是动态规划,而是贪心。”

可是我做不到…做不到不去想任何东西…做不到乐观面对一个没有什么期望的结果…

“我要变强…”

只能给自己唯一的安慰,一直相信着的,也许验证不了的理由…

愿你走出半生,归来仍是少年…

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值