学习记录(2023.11.11~12.31)

文章目录

学习记录(2023.11.11~12.31)

学习记录总览

2023

Nov.(2023.11)

1 1 t h 11^{th} 11th, S a t . Sat. Sat.(2023.11.11)
  • Morning
    KMP,倍增(算吧,过了几道题)

  • Afternoon
    Trie树及应用,AC自动机

  • 留了一道题——奇怪的厨师

1 8 t h 18^{th} 18th, S a t . Sat. Sat.(2023.11.18)

受不了了,整个下午都在改 Phone List

真该死啊啊啊啊啊

以为几分钟就改得出来,结果到 18:53:14 还没改出来

不想改了

放弃吧

1 9 t h 19^{th} 19th, S u n . Sun. Sun.(2023.11.19)

开始改字典树的 F. The XOR-longest Path 了。。。

RE,0,有可能是数组开小了,等我看看


vector 没 resize …

2 1 s t 21^{st} 21st, T u e . Tue. Tue.(2023.11.21)

啊啊啊啊啊啊

Phone List 没清空完啊啊啊啊啊啊啊啊啊啊

end没清空啊啊啊啊啊啊啊

2 3 r d 23^{rd} 23rd, W e d . Wed. Wed.(2023.11.23)
  • Noon
    机房旁边的饮水机太好用了。

    一摁 “开水” 键,开水就呈360°无死角状分布。

  • Afternoon
    把AC自动机T1 A. Keywords Search 改完了。

    好多离谱错误……

3 0 t h 30^{th} 30th, T h u r . Thur. Thur.(2023.11.30)

我知道了,我们学校的饮水机肯定很久没人接过水。

但凡摁一下,水就飘出来。

……

今天还是把很久以前没A的题改了吧。

顺便写写社团作业。

Dec.(2023.12)

1 s t 1^{st} 1st, F r i . Fri. Fri.(2023.12.1)

13:01:49

好困啊,写一下最小生成树吧。

算了,还是做字典树吧。但是想不起来网址了……

只能做最小生成树了。

2 e d 2^{ed} 2ed, S a t . Sat. Sat.(2023.12.2)

笑亖我了

if ((cnt *= 2) >= mod)

(cnt*=2) 没加括号。。。

7 t h 7^{th} 7th, T h u r . Thur. Thur.(2023.12.7)

十一迷宫 改疯了。
服了。

改了一周了。
其他同学来改还是没改出来……

8 t h 8^{th} 8th, F r i . Fri. Fri.(2023.12.8)

机房新添了一个饮水机。

……或者说叫水壶?

12:54:38,准备继续死磕 十一迷宫

双向广搜,记住你了。


中午请同学帮我改,改了一中午玄学问题,依然没有效果……

连样例都T,输出 “No solution!” 的点一直跑不出来,输出16的点跑了6400多ms。

各种卡常、玄学……(比如把4个使用map的地方换成了2个,自增加括号)之后降到了6100ms。

直到最后5分钟,把本来 value 是2个int的结构体的 map 换成了2个 value 是int的 map,正、反方向各一个。

结果输出16的点直接变成78ms,输出 “No solution!” 的点瞬间跑出来!

交上去居然过了!

现在也没弄明白到底哪里玄学了。

9 t h 9^{th} 9th, S a t . Sat. Sat.(2023.12.9)

推了一个多小时的思维题,整整两页草稿纸,极其复杂的公式,然后题解的公式:

( n − 1 ) ( m − 1 ) + 1 (n-1)(m-1)+1 (n1)(m1)+1

心态崩了。

1 1 s t 11^{st} 11st, M o n . Mon. Mon.(2023.12.11)

哎,做做 奇怪的厨师 吧。

13:24:35

在老师和题解的亲切帮助下,总算是搞懂了。
但是要睡觉了……剩下的交给明天吧(* ̄︶ ̄)

1 2 n d 12^{nd} 12nd, T u e . Tue. Tue.(2023.12.12)
  • Noon

    12:43:04

    惊喜!
    我居然是全机房创新编程大赛总分最高的!!!😄

    先定个小目标,这周周考除了思维题,一定要再A一道。至少200pts!
    破题能力还是太弱了啊。(;′⌒`)

还是把 奇怪的厨师 做了吧。

  • Afternoon

    14:54:44

    现在才知道,居然是年级第一!

1 4 t h 14^{th} 14th, T h u r . Thur. Thur.(2023.12.14)

吉夫特 写了一半……

1 5 t h 15^{th} 15th, F r i . Fri. Fri.(2023.12.15)

今天还是把 吉夫特 做完吧。

13:20:16
做完了( ̄▽ ̄)~*

1 7 t h 17^{th} 17th, S u n . Sun. Sun.(2023.12.17)

反思:

T1:

A. 粮仓 rice
题目描述

很久很久以前,有一个非常富有的国王,在他的手中,有非常非常多的粮食。为了存储这些粮食,他下令建造了一个巨大的粮仓,他要把所有的谷物都放进这个粮仓当中。在这个粮仓当中,最多可以容纳个谷物,一开始时,粮仓是满的。可是,这个粮仓的底下有一些小洞,每天都有鸟飞来拿走一些谷物飞走。每只小鸟可以叼走一粒谷物,第一天有一只小鸟飞来叼走谷物,第二天有两只小鸟飞来叼走谷物,第三天有三只小鸟, … \dots ,第 i i i 天有 i i i 只小鸟,以此类推。为了补上这些小鸟带来的谷物损失,国王命令每天带上个谷物前往粮仓填补亏空,直到将个谷物用完或补满粮仓为止。请问,照此下去,国王的粮仓将在第几天变空。(对于每天而言,国王会先补上粮食,然后才会被小鸟吃掉。)

数据范围与提示

对于40%的数据, 1 ≤ n , m ≤ 1 0 9 1 \le n,m \le 10^9 1n,m109

对于100%的数据, 1 ≤ n , m ≤ 1 0 18 1 \le n,m \le 10^{18} 1n,m1018


T1明明思路是对的,可是暴力的前40分挂了。

这是考试交的:((;へ:)想写二分,结果写错了,一怒之下直接解一元二次方程)

#include <cstdio>
#include <cmath>

typedef long long ll;

int main() {
	freopen("rice.in", "r", stdin);
	freopen("rice.out", "w", stdout);

	ll n, m;
	scanf("%lld%lld", &n, &m);

	double k1 = (-1 + sqrt(1 + 8 * (n - m))) / 2;
	ll k = ll(k1 + 0.99999);
	printf("%lld", m + k);
	/*
	//	n-m > (1+k)k/2
	ll l = 0, r = 1e9, mid, ans = -1;
	ll res = 2 * (n - m);

	while (l <= r) {
		mid = (l + r) / 2;
		if (res > (1 + mid)*mid)
			l = mid + 1, ans = mid;
		else
			r = mid - 1;
		printf("l=%lld r=%lld mid=%lld (1 + mid)*mid=%lld\n"
		       , l, r, mid, (1 + mid)*mid);
	}

	printf("%lld", m + ans + 1);

	*/
}

结果。。。

忏悔录:

#include <cstdio>
#include <cmath>

typedef long long ll;

int main() {
	ll n, m;
	scanf("%lld%lld", &n, &m);
//	不知道为什么,考试没想到特判
	if (n <= m) {
		printf("%lld", n);
		return 0;
	}

//	精度问题
	long double k1 = (sqrtl(1 + 8 * (n - m)) - 1) / 2;
	ll k = ll(k1 + (long double)0.9999999999);
	printf("%lld", m + k);
}

T2:

其中的一行:

//    仔细想一下,到底贪没贪对

不出意外,挂掉。

T3:

就一个子集枚举,50pts 的部分分都没拿到。


上午把创新编程大赛复赛考了。

1 8 t h 18^{th} 18th, M o n . Mon. Mon.(2023.12.18)

今天把几乎和 ABC214E(Atcoder)/ABC214E(洛谷) 一模一样的题做了。

优先队列忘开小根堆了  ̄へ ̄

1 9 t h 19^{th} 19th, T u e . Tue. Tue.(2023.12.19)
  • Noon

    听了一下 USACO 18FEB 的并查集做法。

  • Afternoon

    继续做 USACO 18FEB

  • Evening

    20:17:33
    还是继续做 USACO 18FEB

    听听课吧。

    21:33:45
    啊啊啊啊啊
    现在还没做完。

2 0 t h 20^{th} 20th, W e d . Wed. Wed.(2023.12.20)

用一种奇怪的方法做 P3834 【模板】可持久化线段树 2,因为并没有用可持久化线段树做。
看直播写代码都写错了。(T_T)
稀里糊涂的,改崩溃了。

然后稀里糊涂的过了。

真的稀里糊涂。

2 1 s t 21^{st} 21st, T h u r . Thur. Thur.(2023.12.21)

12:43:54
看一下分块吧。
顺便把 USACO 18FEB 改改。

13:36:10
实在无语了,已经数不清改了多少个地方了。
还是老师厉害。

看看这惨烈的战场:

#include <cstdio>
#include <bitset>
#include <algorithm>

// 积雪和靴子合并处理,要开两倍空间
// d = 0 表示是积雪
struct node {int s, d, id;} a[200003];
// f、fa、size表示的是积雪,只用开1e5
// 改了2次,smax初值应是0,因为开始没有积雪
int f[100003], fa[100003], size[100003], smax;
inline int find(const int& x)
{return x == fa[x] ? x : fa[x] = find(fa[x]);}
inline void merge(int x, int y) {
//	本来不用判,由于涉及size的操作,要判
	x = find(x), y = find(y);
	if (x == y) return;
	fa[y] = x;
	size[x] += size[y];
	if (size[x] > smax)
		smax = size[x];
}
// ans表示的是靴子,vis表示的是积雪
std::bitset<100003>ans, vis;

inline bool cmp(const node& x, const node& y) {
	if (x.s != y.s) return x.s > y.s;
	return x.d > y.d;
}

int main() {
	int n, b;
	scanf("%d%d", &n, &b);
//	snow
	for (int i = 1; i <= n; i++) {
		scanf("%d", &f[i]);
		a[i].id = i, a[i].s = f[i];
//		居然写成f[i] = i了
		fa[i] = i, size[i] = 1;
	}
//	合并处理,特殊处理编号
//	boot
	for (int i = 1; i <= b; i++) {
		scanf("%d%d", &a[i + n].s, &a[i + n].d);
		a[i + n].id = i;
	}

//	应该从大到小排序
	std::sort(a + 1, a + 1 + n + b, cmp);

	for (int i = 1; i <= n + b; i++)
//		a[i] : boot
		if (a[i].d)
//			改了2次...
			ans[a[i].id] = a[i].d > smax;
//		a[i] : snow
		else {
//			第1个积雪无法合并,需要特判
			if (smax == 0) smax = 1;
			vis[a[i].id] = 1;
			if (vis[a[i].id - 1])
				merge(a[i].id, a[i].id - 1);
			if (vis[a[i].id + 1])
				merge(a[i].id, a[i].id + 1);
		}

	for (int i = 1; i <= b; i++)
		puts(ans[i] ? "1" : "0");
}

165E - Codeforces 过了。

2 2 n d 22^{nd} 22nd, F r i . Fri. Fri.(2023.12.22)

13:48:58
看了一下分块,顺便过了道模板。
唉。

2 3 r d 23^{rd} 23rd, S a t . Sat. Sat.(2023.12.23)
  • Morning

    周考炸了。

    T1:
    虽然这次第一次9分钟就想出T1,但是调了40多分钟。
    可这是T1啊!

    各种神奇错误, i 、 j i、j ij 写反都算不得稀奇了。
    快读快写错了3次。
    质数筛都写错。

    大样例错了2次,甚至一度怀疑自己推错了。
    再推,突然瞟到快读快写的位运算写错了。

    真的服了,T1都能改出来这么多错。

    关键最后还眼瞎了,调快读快写的时候中间过程没删。
    但是因为输入只有一次换行,Windows下检查不出来,因为只有一个’\n’。
    可是Linux下是’\n’和’\r’。
    不想说了,自己看吧。

    while ((c = getchar()) < '0' || c > '9') printf("c=%c", c);
    

    后面的题也应该有部分分的,可是1分都没有。
    然后就爆零了。


    虽然就只有几个人(包括我,年级第二)进了创新编程大赛决赛,但是还是不开心。
    (╯︵╰)

    10:04:01
    等等,好像没爆零

    基本都有思路,但都没拿全分。

    10:44:16
    啊啊
    疯了

    T3本来是80分,方便调试把数组开到23,只剩20分了啊啊啊啊啊啊啊啊啊啊

  • Noon

    对于本次周考深刻的反思:

    考试结束前15~20分钟一定不要做了,如果做得出来早就做出来了。

    一定检查一下所有源文件,有没有低级错误。

    一定要检查!!!全部耐心地看一遍!!!

    唉,惨痛的教训。

  • Afternoon

    16:48:18
    把以前的知识复习了一些。

2 5 t h 25^{th} 25th, M o n . Mon. Mon.(2023.12.25)

嗯~~
今天是圣诞节(好像是吧,如果没记错的话,是12.25吧)

虽然和我没什么关系。
唉,不放假

上周其他校区都 春游 冬游了。

今天把 Atcoder AGC036B 改出来了。

看看我写的都是什么:

这是一直RE,33分的

for (int i = 1; i <= maxa; i++)
    if (!p[a[i]].empty()) {
        for (int j = 0; j < (int)p[i].size() - 1; j++)
            nxt[p[i][j]] = p[i][j + 1];
        nxt[p[i].back()] = p[i][0];
    }

这是改之后的

#define now p[a[i]]
for (int i = 0; i < n; i++)
    if (!now.empty()) {
        for (int j = 0; j < (int)now.size() - 1; j++)
            nxt[now[j]] = now[j + 1];
        nxt[now.back()] = now[0];
    }

好吧,现在又开始狂改 Atcoder ABC107D 了。

2 7 t h 27^{th} 27th, W e d . Wed. Wed.(2023.12.27)

2023年就要结束了。

昨天艺术节,中午化妆,来不了机房,整个下午候场+表演,信息课也没有了。
最关键的是,晚自习居然忘了要上课!!

脑子不好使了。

3 0 t h 30^{th} 30th, S a t . Sat. Sat.(2023.12.30)

服了。
一整个下午都在改 #6278. 数列分块入门 2 - 题目 - LibreOJ
关键还没改出来(╬ ̄皿 ̄)

再看看这些,都是什么人类智慧?
#4. Quine - 题目 - LibreOJ
#5. 猜数字 1 - 题目 - LibreOJ

现在满脑子都是怎么输出自己。

现在是2023年12月30日20:49:27

这是这篇文章最后一次更新了。

下篇文章见。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值