2020年12月11日凌晨随笔
终于连上我自己的服务器了,明天翘节离散去公安局备个案就大功告成了,wuhu~
我这个人其实不咋矫情的,但没想到停更这么久之后第一篇就是“深夜网抑云”,hh,也挺讽刺的吧
一
不知道为什么,最近几个月,开始莫名其妙变得很焦虑,很沮丧…甚至找不到什么特殊的理由,就是一直低落。
从进入大学以来,我差不多算是一事无成吧。
学习一团糟,天天忙自己所谓的梦想,却也只能当个云ACMer。
二
这两周天天摸鱼,我发现我真的好想保持这种的状态,一直打游戏睡觉,累了就听听歌看看天花板。
今天真开心,看了一天的jojo,晚上又看金咕咕直播不停的想笑,好久都没这么爽了
有点想家里面的大床了,刚刚好一个人躺平,想怎么动就怎么动,回家了看视频听歌也不用戴耳机,兴致来了就唱歌,就算晚上十二点练琴也不会吵到别人
三
明天又要早起,但现在已经是凌晨2点半了,欸,难顶
其实我好像这学期过得挺轻松的,但为什么心却这么累呢。就上几节课,做一点作业,基本上就没事了。可是心里 却像是压了一座山。
以后的人生也许一直都是这样吧。
四
不知道自己在写些什么傻不啦叽的蠢话,返回去读了读前面写的,搞得自己好像抑郁症似的,太扯了。 ...
Codeforces_Round#679_div2_E
这场总体难度不算大(感觉C,D,E的难度居然出奇的一致)
如果码力再强点,也许是能AK的,可惜只切了四题。不过一下子rk涨了100多,还是有点出乎我的意料hh
题目大意(E. Solo mid Oracle)
假设一个单位有H点生命值,你拥有一个技能能修改该单位的生命值H。
若在某一时刻t发动该技能,效果如下:首先,在t时刻对该单位在造成a点伤害;然后在t+1,t+2,t+3,...,t+ct+1,t+2,t+3,...,t+ct+1,t+2,t+3,...,t+c时刻治疗该单位,每次均治疗b点生命值
技能的冷却时间为d,也就是说,若在时刻t发动技能,则在t+d时刻才能继续使用该技能
0时刻单位的初始生命值为H,H>0。若某一时刻该单位生命值≤0\leq 0≤0,则该单位被击杀
若要使该单位被击杀,H的最大值为多少?若无解则输出-1。
数据范围
共有T组数据(1≤t≤50)(1\le t\le 50)(1≤t≤50),输入为a,b,c,da,b,c,da,b,c,d,其中1≤a,b,c,d≤1061\le a,b,c,d\le 10^61≤a,b,c,d≤106
要求输出一 ...
2020年10月13日随笔
现在是下午四点半,由于眼镜框坏掉(被我不小心压了然后掰坏的),我翘了离散数学的课,现在在宿舍码这一篇博客。
这篇博客是留给我自己的。
pb_ds简介
pb_ds简介
pb_ds 库全称 Policy-Based Data Structures,又称平板电视。
pb_ds 库封装了很多数据结构,比如哈希(Hash)表,平衡二叉树,字典树(Trie 树),堆(优先队列)等。
就像 vector 、 set 、 map 一样,其组件均符合 STL 的相关接口规范。部分(如优先队列)包含 STL 内对应组件的所有功能,但比 STL 功能更多。
pb_ds 只在使用 libstdc++ 为标准库的编译器下可以用。
堆
使用方法
123456789101112#include <ext/pb_ds/priority_queue.hpp>#include <bits/stdc++.h>// 注意<ext/pb_ds/priority_queue.hpp>不在<bits/stdc++.h>内using namespace __gnu_pbds;//注意pb_ds和std的类名称里有重复的地方//如果仅写这句话且不写using namespace std; ,则定义priority_queue&l ...
codeforces蓝名了!
蓝名了耶,finally!
昨天下午打完一场Education Round,虽然只切了四道,但是按照以往的经验,我的积分应该还是会上涨的。果不其然,今早看结果的时候直接升到蓝名了。芜湖~
说来也惭愧,接触OI也这么久了,还是人生第一次蓝名QAQ
从上次的CCPC网络赛失利开始,每一场cf的#div2比赛我都不会放过,才一点一点地打了上来,这期间大概上涨了200分,希望以后也再接再厉吧!
听vying说,他花了半年地时间从紫到橙。而已确定的一次校赛就在明年三月,距离现在也是差不多半年时间,希望我也能在校赛之前橙名。
加油!
Bitset小记
简介
std::bitset标准库中的一个存储0/1的大小不可变容器。严格来讲,它并不属于 STL。
由于内存地址是按字节即byte寻址,而非比特bit,一个bool类型的变量,虽然只能表示0/1, 但是也占了1 byte的内存。
bitset就是通过固定的优化,使得一个字节的八个比特能分别储存 8 位的0/1。
对于一个 4 字节的 int 变量,在只存0/1的意义下,bitset占用空间只是其132\frac{1}{32}321,计算一些信息时,所需时间也是其132\frac{1}{32}321。
在某些情况下通过bitset可以优化程序的运行效率。至于其优化的是复杂度还是常数,要看计算复杂度的角度。一般bitset的复杂度记为:(设原复杂度为O(n)O(n)O(n))
O(nw)O(\frac{n}{w})O(wn),其中w=32w=32w=32,这种记法较为普遍接受
O(nlogw)O(\frac{n}{logw})O(logwn),其中wvwvwv为计算机一个整型变量的大小
构造函数
用字符串构造时,字符串只能包含 ‘0’ 或 ‘1’ ,否则会抛出异常。
构造 ...
STL的简单应用
迭代器
指向某个STL容器container中的元素的迭代器的类型一般为container::iterator
迭代器可以用来遍历容器
注意auto可以起到同样的效果
123456789101112131415vector<int> data(10);// 使用下标访问元素for (int i = 0; i < data.size(); i++) cout << data[i] << endl; // 使用迭代器访问元素for (vector<int>::iterator iter = data.begin(); iter != data.end(); iter++) cout << *iter << endl; for (auto iter = data.begin(); iter != data.end(); iter++) cout << *iter << endl; for (auto x : data) cout << x << endl ...
数论杂项
类欧几里得算法
时间复杂度O(logn)O(logn)O(logn) 求f(a,b,c,n)=∑i=0n⌊ai+bc⌋g(a,b,c,n)=∑i=0ni⌊ai+bc⌋h(a,b,c,n)=∑i=0n⌊ai+bc⌋2f(a,b,c,n)=\sum_{i=0}^{n} \lfloor \frac{ai+b}{c} \rfloor \quad g(a,b,c,n)=\sum_{i=0}^{n} i\lfloor \frac{ai+b}{c} \rfloor \quad h(a,b,c,n)=\sum_{i=0}^{n} \lfloor \frac{ai+b}{c} \rfloor^2f(a,b,c,n)=∑i=0n⌊cai+b⌋g(a,b,c,n)=∑i=0ni⌊cai+b⌋h(a,b,c,n)=∑i=0n⌊cai+b⌋2 这三个函数的值
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849#include <bits/stdc++.h> ...
鸽巢原理
简介
雀巢原理:如果把n+1个个物体放进n个盒子,那么至少有一个盒子包含两个或者更多个物体
加强版1:设q1,q2,…,qnq_1,q_2,\ldots,q_nq1,q2,…,qn是正整数。若将q1+q2+⋯+qn−n+1q_1+q_2+\cdots+q_n-n+1q1+q2+⋯+qn−n+1个物体放入n个盒子中,那么或者第一个盒子至少含有q1q_1q1个物体,或者第二个盒子至少含有q2q_2q2个物体,…或者第n个盒子至少含有qnq_nqn个物体
加强版2:设n和r都是正整数。如果把n(r−1)+1n(r-1)+1n(r−1)+1个物体分配到n个盒子中,那么至少有一个盒子含有r个或更多的物体。
应用1
在13个人中存在两个人,他们的生日在同一个月份里。
应用2:
设有n对情侣,至少要从这2n个人中选出n+1个人才能保证能够选出一对情侣。
应用3:
给定m个整数a1,a2,a3,…,ama_1,a_2,a_3,\ldots,a_ma1,a2,a3,…,am,存在满足0≤i<j≤m0\le i<j\le m0≤i<j≤m的整数i和j ...
筛法
欧拉(Euler)筛法求素数
时间复杂度为O(n)
1234567891011121314151617181920void init(){ phi[1]=1; for(int i=2;i<MAXN;i++){ if(!vis[i]){ phi[i]=i-1; pri[cnt++]=i;//cnt为素数的总数 } for(int j=0;j<cnt;j++){ if(1LL*i*pri[j]>=MAXN)break; vis[i*pri[j]]=1; if(i%pri[j]){ phi[i*pri[j]]=phi[i]*(pri[j]-1); } else { phi[i*pri[j]]=phi[i]*pri[j]; ...