写在前面

05/10/19

今天心情很糟糕,没学新东西,复习没复习,作业没写完,下午要网课,明天要月考,脑子里就像是被一团棉花塞住了。静静的思考了半个小时,把自己手头上的事情排了个序,所以决定先把游记写个一半。刚刚把耳机捂热了,却不放任何的歌曲——我可以静一静了。

再见,那些知识点

暨·两年后填坑清单【不完整

加粗为截至05/10/19尚未掌握的知识点
基本上每个知识点都会附上代码或者是例题,或许还会有一些当时学习的心得?

基础算法

  • 贪心

  • 分治

    • 外星密码//这道题在luogu中打了分治的标签,分解括号确实是的(很多时候我都没察觉到考分治),乍一看这题很简单,但是调代码似乎要有点久……
  • 高精度

  • 递归与递推

  • BFS && 双向BFS

    • 马的遍历//现在怎么也想不起来当初的代码是怎么WA了的,对比了一下似乎也没什么区别鸭……
  • DFS && 回溯

  • 前缀和

    • 前缀和和差分//总是会很有用的优化技巧
  • 离散化

    • 离散化//应该是吧抄老师的代码的emmm这里还有手写删除函数等待挑战
  • 倍增(QMI、RMQ、LCA、ST算法……)

  • 二分、实数域上的二分和三分//注意左右取舍间的开闭情况

    //**单调递增序列中**
    
    //x或x的后继
    while(l<r){
    	int mid=(l+r)>>1;
    	if(a[mid]>=x)	r=mid;
    	else	l=mid+1;
    }
    return a[l];
    
    //x或x的前驱
    while(l<r){
    	int mid=(l+r)>>1;
    	if(a[mid]<=x)	l=mid;
    	else	r=mid-1;
    }
    return a[l];
    
  • 模拟

STL

//关于STL的博客,就不在这里一一列了

  • vector
  • set
  • map && multimap
  • stack
  • queue && priority_queue
  • bitset

数据结构

    • 二叉树 这是二叉树……
    • 树状数组:树状数组1树状数组2【学了差不多忘了……太对不起xqy了!ごめんなさい!
    • 线段树【同上……对不起对不起对不起对不起……
    • 树的直径//没见过没学过没用过……请参考
    • 树的旋转
    • LCA
    • 树链剖分
    • 平衡树
    • 拓扑排序(AOV、AOE)
  • 单调栈
a[n+1]=p=0;
for(int i=1;i<=n+1;++i){
	if(a[i]>s[p]){
		s[++p]=a[i];
		w[p]=1;
	}
	else{
		int width=0;
		while(s[p]>a[i]){
			width+=w[p];
			ans=max(ans,(long long)width*s[p]);
			p--;
		}
		s[++p]=a[i];
		w[p]=width+1;
	}
}
int l=1;r=1;
q[1]=0;
for(int i=1;i<=n;++i){
	while(l<=r&&q[l]<i-m)	l++;
	ans=max(ans,sum[i]-sum[q[l]]);
	while(l<=r&&sum[q[r]]>=sum[i])	r--;
	q[++r]=i;
}

字符串处理

图论

//我会永远记得奇怪的电梯的!

数论

谁能想到我现在学的里面最全的居然是数论……

请参考寒假的博客请麻烦压一下定理的棺材板啦

  • 质数与约数
  • 线性筛/欧拉筛法
  • 辗转相除法
  • 扩展欧几里德
  • 快速幂
  • 欧拉函数
  • 威尔逊定理
  • 卢卡斯定理
  • 费马小定理
  • 矩阵
  • 高斯消元
  • 容斥原理
  • 博弈论//关于NIM
  • 组合数
  • 中国剩余定理

动态规划

一些零碎/未曾遇见的知识点

  • 对拍//有用小技能
  • 命令行//有用小技能*2
  • 计算几何
  • 莫队
  • 位运算
  • 打表//打表出奇迹!
  • 随机化

再见,那些题与时刻

再见,那些代码

2018.7码风

#include<bits/stdc++.h>
using namespace std;
    int pay[13];
    int money[13];
    int save[13];
    int y[13];
    int x[13];
    int cannot;
    int total;
    double finalget;
int main(){
	money[1]=0;
    for(int a=1;a<=12;a++)
	{
      cin>>pay[a];
    }
    for(int i=1;i<=12;i++)
	{
      x[i]=money[i-1]+300-pay[i];
      money[i]=x[i]%100;
      if(x[i]<0)
      {
        cannot=-i;break;
      }
      else
      {
        y[i]=(money[i-1]+300-pay[i])/100;
        save[i]=y[i]*100;
        total+=save[i];
      }

    }
    {
        if(cannot==0)
    {
        finalget=total*1.2+money[12];
        cout<<finalget<<endl;
    }

    else
    {
        cout<<cannot<<endl;
    }

    }
      return 0;
}

2019.1码风

#include<bits/stdc++.h>
using namespace std;
long long n,m,d=1,num,a=1,b,c;
long long gcd(long long x,long long y)
{
    if(y>x)
    {
        int tmp;
        tmp=x;
        x=y;
        y=tmp;
    }
    if(x%y==0)
    {
        return y;
    }
    else gcd(y,x%y);
}
long long fun(long long x1,long long y1,long long x2,long long y2){
    if(y2==n+1) return m;
    m=x1*y2+x2*y1;
    return fun(m,y1*y2,1,y2+1);
}
int main(){
    cin>>n;
    if(n==2)    m=3;
    else    m=fun(1,1,1,2);
    for(int i=1;i<=n;i++)
    {
        d=d*(i/gcd(m,i));
        m=m/gcd(m,i);
    }
    m=m*n/gcd(d,n);
    d=d/gcd(d,n);
    if(m>d)
    {
        num=m/d;
        m=m-d*num;
    }
    if(m==0)    cout<<num;
    else
    {
        a=num;
        while(a>0)
        {
            b++;
            a/=10;
        }
        a=d;
        while(a>0)
        {
            c++;
            a/=10;
        }
        for(int i=1;i<=b;i++)    printf(" ");
        printf("%lld\n%lld",m,num);
        for(int i=1;i<=c;i++)    printf("-");
        printf("\n");
        for(int i=1;i<=b;i++)    printf(" ");
        printf("%lld\n",d);
    }
    return 0;
}

2019.8码风

#include<cstdio>
#include<algorithm>
using namespace std;
const int N=1e6+10;
int T,n,cnt,t[N],c[N],f[N];
inline void sakura(){
	for(int i=1;i<=n;++i){
		int a,b,s;
		scanf("%d%d%d",&a,&b,&s);
		if(s==0)	s=9999999;
		for(int k=1;k<=s;k<<=1){
			s-=k;
			c[++cnt]=a*k;
			t[cnt]=b*k;
		}
		if(s>0){
			c[++cnt]=a*s;
			t[cnt]=b*s;
		}
	}
}
inline int time(){
	int t1,t2,t3,t4;
	scanf("%d:%d %d:%d",&t1,&t2,&t3,&t4);
	t2+=t1*60,t4+=t3*60;
	return t4-t2;
}
int main(){
	T=time();
	scanf("%d",&n);
	sakura();
	for(int i=1;i<=cnt;++i)
		for(int j=T;j>=c[i];--j)
			f[j]=max(f[j],f[j-c[i]]+t[i]);
	printf("%d",f[T]);
	return 0;
}

再见,那些OJ/网站

再见,那些人与事

此篇不作公开(像是有人会看一样),单独私发。

一年左右了,我在机房里讲的话两只手可以数过来,可是这次我想无声地说一次“大话”:请在2021/06/26的时间轴上等我,80个志愿,我只需要一个——

浙江大学 工科试验班(信息)

05-22 08:37