0%

各位团员大家好,我是代主席LWH。

长话短说,直接开始。

一、为什么社会主义排斥商品经济/市场经济

​ 我一直认为,社会主义的两大核心是平等和自由。这两个概念其实早就被用烂了,也被拿去包装形形色色的意识形态。其中,包裹着“自由”外皮的市场经济是一大误区,而“商品经济”则是藏在市场经济之后的一个更大的误区。

​ 在市场经济体制下,商品交易似乎是“自由”的,或者说本应如此。那好,我们不妨假设市场经济真的是自由的,那么它平等吗?

显然不。为什么?

​ 市场经济体制是基于商品经济而产生的一种体制。而一切商品经济都有一个特点:不平等。

​ 这要联系到另一个话题:废除货币。

​ 马克思在他的著作中提到过共产主义社会中货币的废除是必然的。这不仅仅是因为货币失去了存在的价值,同时也是因为货币的不平等性。

​ 在早期的交易中,人们普遍使用以物易物的形式;后来才产生了货币。货币的存在意义就是将难以衡量的劳动在人的主观条件下赋予以价值。换句话说,人们搞不清楚一头牛可以换几条鱼,于是就创造出了货币,利用货币作为中间工具来单独对每一种产品进行赋值,最后借助货币这个“中间商”得出一头牛可以换几条鱼这个结论。

​ 这就使得货币看上去是平等的,但是实际上是不平等的:谁说饲养一头牛付出的劳动的价值一定等于抓那几条鱼付出的劳动的价值?没人能给出正确的数字,不平等因而产生了。

​ 再者,“市场经济是自由的”这其实是个假命题。

​ 按理来说,在市场经济下,“自由”是这么定义的:商家有出售一种商品的自由,也有不出售这种商品的自由;顾客有购买一种商品的自由,也有不购买这种商品的自由。

​ 然而事实是如此吗?请大家自己思考这个问题。

二、评《民意与伪民意》

​ 本文的主要观点就是,“伪民意”不是真正的“民意”。

​ “伪民意”不一定是假民意——指篡改数据——而是说人民没有选择的权利,他们接收信息的来源不完全、不充分,被“带节奏”。往往有人说“反右”是民意,但是在作者看来,那只是在文革之风下被裹挟的群众们的“伪民意”。

​ 回到现实,我们可以通过一些事例来说明真正的民意的重要性——我们反感外国人对中国(人)的偏见,其实那就是“伪民意”的一种体现:他们没有完善的信息来源渠道,听到的只是带有统治者情感因素的信息。我们也反感网暴——因为参与者多半是被片面的信息带了节奏,从而参与到网暴中。

三、评《给理想一点时间》

​ 本文基本都在评判激进主义,颂扬“自由主义”,这可以从其用词和情感上看出来。

​ 在作者看来,“激进主义”似乎是“专制”的代名词,而“自由主义”则是对人的意志的尊重。

​ 可能是作者写这本书的时候刚从英国回来的原因吧,带着一种公知高高在上的感觉。

​ 作者在书中举例“激进主义者”虽然在国共内战中短时间内赢得了大量支持,但是却在之后的集体化过程中损害了农民的利益(收回了土地所有权)。这点可以清晰地看出她并不站在社会主义一边,而是彻底地站到了“自由主义”的一边去了。

​ 书中对“自由主义”的描述是:无数“无形的手”组合起来的缓慢但无往不利的力量。从文中也可看出,她以“自由主义”指代国民党,认为其缓慢的土地改革不能迎合群众的愿望,因而败给了共产党。

​ 她没有认识到集体化是对个人权益的真正保护,也没认识到所谓“自由主义”是对自由的藐视。

​ 集体化能使所有权虚化,也即少数人不再有权力出售这些资产来为自己牟利,这才是真正的防止贫穷的铁丝网——而不是福利政策。

​ 工人给资本家打工不是出于他们的自由意志吗?但是承接上一部分,资本家给过工人选择的权力吗?资本家垄断着生产资料,变相逼迫工人为他们打工,无偿占有工人们的劳动果实。这“自由”吗?

激进主义从来不是专制的代名词。专制的缺点也不是暴政,而是在缺乏监督的情况下容易导致暴政

自由主义的缓慢性导致了自由主义者们通常会是墙头草,偏左和偏右两派互相争吵,这和共产主义的“提高效率”是矛盾的


以上是本届大会的讲稿内容。感谢阅读。

LWH,21.4.18

欢迎莅临

进入正题。

正题

1.头文件中间不加空格,虽然我知道这看上去不大美观。

2.main函数里面几乎没有定义变量,i和j都是在循环中定义的。

3.用Dev-C++ 5.11的我特别喜欢”格式化->风格->Allman”,所以for循环的三个表达式中间一般要有一个空格(当然,是格式化的时候自动加的)。

4.绝对没有空行!空行都被删了!全局变量要按类型和长度排序,极其厌恶乱七八糟的定义。

5.当for循环里面只有一个表达式的时候,我会坚决去掉那对大括号。

6.当if等语句里面的表达式过少时,我一般会用逗号连接它们(除非有continue/break/return之类的不能连起来的语句),以去掉那对大括号。

7.定义STL时,我都会在”STL种类”与”类型”之间加一个空格,在”类型”与”名称”之间加一个空格。因此,priority_queue特别令我讨厌。

8.必须把stdio的关联关掉。

范例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include<bits/stdc++.h>
#define INF 214748647
#define MAX_V 100S
using namespace std;
int n,m;
int x,y,z;
struct edge
{
int to,cost;
};
typedef pair <int,int> P;
vector <edge> G[MAX_V];
int d[MAX_V];
void dijkstra(int s)
{
priority_queue < P,vector<P>,greater<P> > que;
fill(d+1,d+n+1,INF);
d[s]=1;
que.push(P(1,s));
while(!que.empty())
{
P p=que.top();
que.pop();
int v=p.second;
if(d[v]<p.first)
continue;
for(int i=0; i<G[v].size(); i++)
{
edge e=G[v][i];
if(d[e.to]>d[v]*e.cost)
{
d[e.to]=d[v]*e.cost;
que.push(P(d[e.to],e.to));
}
}
}
}
int main()
{
ios::sync_with_stdio(0);
cin>>n>>m;
for(int j=1; j<=m; j++)
{
cin>>x>>y>>z;
edge now;
now.to=y,now.cost=z;
G[x].push_back(now);
}
dijkstra(1);
cout<<d[n]<<endl;
return 0;
}

有什么想法没有?欢迎在评论区留言评价。

注意,本篇blog只讲述搭建Hexo博客中域名的申请和解析!

曾参考博文

前言

上面提到的那篇博客个人认为域名申请部分还不够易懂(我们班三个OIer看了半天,折腾了一天半才弄好),因此,我将自己的经验整理了一下,发布成这份博客。

必备工具

  1. 搭建Hexo必备的各种软件(node.js等等)

  2. 一台可以登陆GitHub的电脑(进不去的网上有教程,搜索“GitHub进不去怎么办”)

  3. 系统建议是Windows7 64位,因为博主用的就是这个系统 (其实32位也差不多啦)

开始

首先进入freenom官网,进去之后是这样的:

不要在意我已经登陆了,你可以先去注册一个账号,点击你的网页右上角那个图片上显示“hello sopa”的按钮,然后注册一个账号,需要一个邮箱。

如果你已经登陆了或者注册完毕了,接下来:

在上图中那个大大的搜索框里面输入你想要的域名,比如百度官网www.baidu.com中中间那一段“baidu”就是你要输入的内容,~~当然不是叫你要输入baidu,打个比方而已~~

我做的样例示范是输入“arkhails”

完了之后点击右边那个蓝色的按钮。

之后应该是这样的:

因为我已经注册了arkhails.cf这个域名,所以它显示“upgrade”(升级),你必须看到有“free”的标签,因为这表示它还没有被人注册过。

点击右边的“Get it now!”之后就会是这样:

然后点击右上角的“Checkout”。

Hexo -4.png

将右边的“3 months @free”改成“12 months @ free”,点一下“Use DNS”(只点一下,不要再去修改),点“continue”。

如果你已经注册好了,应该是这样的:

拉下去,把“complete order”左边的勾打上,然后点击这个按钮。

之后点击确认,会回到主页。

然后这样:

看到菜单栏那栏拉下来的子菜单了没有?点击“my domains”,会显示你注册的域名。

我的是这样的:

上面那个是我在用的,另一个是示范用的。

接下来转到Cloudflare的官网

请自动无视已经绑定的域名

点“add a site”。

在框中输入你在freenom注册的域名,点“Add site”。

过一会,网站会加载好,这时点“Next”。

如果你发现没有,并且网站下面冒出来一条红色的警告信息,那么,已知原因:

你一定在注册域名的时候修改过DNS,回到你的freenom域名的管理页面,点“Management Tools”->“Nameservers”,会出现两个选项,点上面那个选项,然后点“Change Nameservers”!

继续主题。

此时网站会让你选择套餐,如果你没钱,选最左边那个(一共四个),再点”Confirm plan”。

会弹出一个提示框,点击“Confirm”即可。

回到你博客的安装文件夹,例如我的是E:\Blogs

打开cmd,cd到这个文件夹,然后输入“ping name.github.io”,其中name是你的GitHub名字。

会出来一条“正在 Ping name.github.io [IP] 具有32字节的数据”,将其中那段IP复制下来。

如此例,我的IP是185.199.111.153。

回到刚才弄完DNS的界面。

(请无视那两条数据)

照着图中的形式打。

一共两条数据:

第一条:

type:A;
name:你的域名;
value:刚才你得到的IP;
TTL:不管它;

最后点一下右边那朵橙色的云,让它变成灰色,输入完了点“Add Record”。

第二条:

type:CNAME;
name:www;
value:你的GitHub名字+.github.io;
TTL:还是不管它;
还是点一下右边那朵橙色的云,让它变成灰色,输入完了点“Add Record”。

把网站拉到下面,会有一栏“Cloudflare Nameservers”。

将里面的两条value那一栏的数据分别复制下来(注意是分别,先复制一条,待会再复制另一条),回到我上文说的freenom域名管理页面,点“Management Tools”->“Nameservers”,然后点下面那个选项!!!

会有五个框,你在第一个框和第二个框中分别填上上面你得到的两个解析服务器,点“Change Nameservers”。

过一会,应该就可以上了。

Hexo的优缺点

优点就是经济,你可以完全免费就搭建一个,“装备不花一分钱”。

缺点就是因为Hexo是静态博客,他是只读取缓存,意思就是你发布了一篇博客之后通常都要等上五分钟左右才能看到,因为你上传的文章GitHub不会马上给你更新,网站的更新会有一个周期,周期时间到了,GitHub才会给你“编译”一下你的博客源文件,生成缓存,因此Hexo通常不是即时性的,虽然这并不是什么大问题

为什么要更新GCC 8.1.0?

GCC 8.1.0解决了Dev-C++ 5.11自带的GCC 4.9.2的调试中查看变量的问题(修复了不能查看STL的bug和一添加STL变量查看就卡死的bug)

配料:

1.一台装配了Dev-C++(推荐5.11)的Windows电脑。

2.一个GCC 8.1.0的rar压缩包(好吧其实是MinGW)。

不知道Dev-C++去哪里下?戳我(注意点“普通下载”)

GCC 8.1.0下载链接
提取码:qbnx

制作工艺:

1.先找到你的Dev-C++安装文件夹。如下图:

我用的是默认安装路径,环境为Windows7 64位。

2.将GCC 8.1.0的rar压缩包解压到一个文件夹中。解压完的文件夹叫“mingw64”:

3.将你的Dev-C++安装文件夹中的WinGW64文件夹复制到一个地方做备份。

4.进入刚才解压完的mingw64文件夹,Ctrl+A,然后Ctrl+C复制所有内容,转到之前Dev-C++安装文件夹中的MinGW64文件夹,把所有文件复制进去,提示重名文件的话直接选择“复制并粘贴”,也就是全部覆盖掉原来的文件。完成之后应该有这么几个文件(夹):

5.打开你的Dev-C++,点击菜单栏中的工具->编译选项,这时候应该是这样的(我已经更换过了所以显示的不是原来的编译器):

6.点击“设定编译器”右边的那五个按钮中最左边的那个,这时候,Dev会提示:

这时你直接点“Yes”就可以更新完成啦!

but

你原来设定的编译器设置会被覆盖(也就是return 0),你必须重新设置一次。

7.重新打开你复制后的MinGW64/32文件夹,就像这样:

在右上角的搜索框里输入“.dll”,搜索所有的后缀名为.dll的文件,全部复制到C:\Windows\system32目录下,这样可以部分解决因缺少.dll文件而引起的崩溃/错误(博主就是因为有一次崩溃了之后才花了两天时间摸索解决方法的)。

后续事项

如果你不幸失败了,你可以将原来备份的文件复制回去,然后重复以上5-6过程。

Part 1

日期:2019年9月某日

尊敬的同学,亲爱的老师们:

​ 鉴于我的合作伙伴——ljq——每周需要8*25小时的睡眠以保证上课的精神状态,我只能独自完成这篇搞笑严肃的律师函演讲稿。

​ 在大家观赏本作时我大约不在场,因此我无法对大家致以我最诚挚的问候,希望大家能原谅这个弥天大谎。同时我也点个名:没到的同学请举手!麻烦戴老师替我看一下谁举了手,到时候罚他请全班每人一瓶凉白开。

以上内容请忽略不计,以下是正文。

​ 在得知要加入梅石班的消息的时候,我是非常不情愿的,毕竟手机还没玩够而且我前一天刚坐完两个小时的车,晕车都还没好,你又让我第二天下来???我可以让戴老师替我放个牌位吗?

​ 当然最后还是…

​ 令我惊讶的是竟然有几个从未谋面的别班的人能叫出我的名字?也许这是某张我的著名的照片的功劳吧…

​ 梅石班给我最大的感受就是如同hwj的一句话一样(非常贴切,我以人格担保):“都是一群要长痔疮的人。”下课基本除了我就没有离开座位的人了(当然,这也是有侧面反映的)。

2020.6.7注:当时写的时候没有标记日期,推测时间应在9月,从这也可以看出本作咕咕咕了很久

又注:本来是想所有来梅石班的九位同学一起写的,但是最后发现就我一个人愿意写,于是就…

又又注:由于刚来梅石班,体验不是很充分,为了凑字数才有了上面那么一大段基本都是搞笑和废话的杂糅体,但是感情基调基本都是相对比较愉悦的。


Part 2

日期:2020年1月13日中午

​ 说起来,这份拖了很久了。隐约记得是九月多的时候开始写的,但后来一直没想到要写什么,就一直拖着。今天突然有感而发,才接着写下来。

​ 本来中午出去吃饭,顺带买了几包速溶咖啡粉回来泡,按照惯例去七班打水。

​ 然后倒完水之后我巡视了一下教室,发现靠走廊的墙上新贴了两张合照。大概看了一下,一张是和校门口的某张政治色彩很浓的图片拍的,另一张应该是艺术节结束后拍的。显而易见,我没有位列其中。

​ 记得曾经在七班的时候,每次看到合照,心里都没什么感觉,毕竟司空见惯么。

​ 但这次我心里突然有一种孤独感,感觉自己彻底被排斥出去了一样,就像当年我刚来一中时那种举目无亲的感觉。

​ 回想起来,我和七班的联系,也越来越淡了。地生会考的时候我上台讲话,我只记得我也就是语无伦次,但是现在似乎连讲台都不想站上去了,不想成为众人的焦点。

​ 梅石班的地理位置距离其他班较远,相对来说比较(其实我觉得,这个词应该是过于)安静。刚来的时候还好,小白和林教士都会和我聊天。但到了后来我一段时间没主动去找他们之后,我只发现一个残酷(也许只是人之常情?)的事实——地球没了我,照样转。这里不多你一个,也不少你一个。

​ 对于其他人来说,梅石班到其他班级的距离顶多就是空间上远了一点,但是我感觉我在精神上被隔离了。

​ 我也是人,一个普通人,是学生,不是学习的机器。我需要假期,也需要关心和交流。父母给的很少是关心,更多的让我感觉是管教*。

​ 我发现xyl给林教士的评语也很适合我:“你是个xxx的好学生,你也是个不是很用功的学生。”我不否认我的成绩似乎算是比较好的,但是我基本没有(初中以来)真正认真读过书,因为我感觉不到需要,感觉不到小学时的那种…好吧我也不知道怎么形容。要是哪天我放下游戏开始认真读书了,我希望有人把我送去某大桥旁的医院,因为如果是那样的话,我要么就是没得玩了,要么就是(套用一句著名的话)“脑翻癫”了。

​ 最后引用一些话,代表我现在复杂的感情。

​ 我们都在幻想自己得不到的东西。

​ 我们都在为我们带不走的东西而战,这是我们的天性。

​ 还能见到诸位的时间,大概还剩五个月吧。但我承诺送出去的那张明信片,大概是没机会送出去了。

​ (这里应某人的威逼利诱加上一句话,虽然我个人觉得不大应景。)

​ 不要轻易对女孩子许下你无法实现的诺言。 ——Cortana

​ 至于其它的一些感受,我在某一篇被当成范文打印出来并广而传阅之的英语作文中有写到,内容基本都属实(当然,由于行文需要,对某些部分作了夸大处理,比如轻松得高分)。

​ 除了写作文之外,很久没有一次性写这么多字了。

​ 希望能有第三部分吧,并希望能在毕业典礼那一天在七班展示。

*注:本段话只是一时情绪的发泄。


Part 3

日期:2020年6月8日22:11

​ 记得我小学的时候算是一个比较活泼的人,也有几个哥们,那时的爱好也很健康,就是在毕业考之前的数学考试中快速写完然后去打乒乓球。

​ 但是遗憾的是初中以来我打乒乓球的次数至今为止只有三次,因为球桌离教室实在是“Too far to reach”。

​ 上初中以来,我自己就察觉到我在慢慢地,但又似乎不可逆转地变内向。

​ 希望别人主动来找自己说话而不是我主动去找别人;经常感觉无话可说;爱好变少;话变少;等等。

​ 似乎从接触《刺客信条》开始,这些表现更明显了。我更经常感到内心的冲突:作为“刺客”的隐秘、安静、平凡、混迹于人群,和我本身渴望交流、希望有人可以秉烛夜谈。

​ 而且从初二下半学期开始,我就开始思考人生。有时也会去网上搜索一些资料。

​ 其中有一点很有趣:人都希望别人肯定自己的价值。这本来是从一位资本家的嘴中说出来的,用意是与马克思主义辩论*。

​ (*注:原话大意如此:人都希望别人肯定自己的价值。封建时代和奴隶时代,佃户/农奴/奴隶都是被迫承认他们主人的价值(言下之意就是封建地主与奴隶主并不承认他们的仆从的价值),但是资本主义将他们解放了出来,从此“认可价值”变成了相互的、平等的。)

​ 这句话有一定的思考意义,因为它实在更贴切不过了。它可以用来解释我希望别人主动来找我说话,因为我主观地认为别人找我说话是对我的一种肯定。

​ 我思考人生的意义。

​ 科学向上是哲学,再上是玄学,再上,是神学。

​ 我是谁?我从哪里来?

​ 我是我被熟知的那个代号——刘为华吗?我从何处来?是转生,还是本来这就是一个虚拟世界?

​ 人有什么意义?

​ 人生来就是在破坏,几乎人类的一切所做所为都给这颗星球带来深重的灾难。至于所说的“保护生态”,“保护环境”,也不过像是奴隶主不愿意杀奴隶一样,因为前者将后者看作自己的财产,谁会主动毁掉自己的财产呢?人类保护环境,也不过是人类生存需要罢了。这么一个充满野蛮、暴力、破坏的文明,存在下去是否有必要?

​ 人,究竟是为了破坏而生,还是为创造而生?

​ 如果是为了破坏,那为什么有人歌颂艺术、歌颂科学?为什么倡导“文明”?如果是创造,为什么人创造如此之慢,而破坏却如此之快?

​ 我的存在,每一个存在于文明中的个体的存在,是否有其必要性,或者必然性?我们能做什么?将人类文明改造为“自省”的——即真正意义上的包容共生——吗?这似乎很美好,但是有一句话又是这么说的:“自己生存是以征服和消灭别人为基础的,这是这个宇宙中生命和文明生存的铁的法则,谁要首先不遵从它而自省起来,就必死无疑。”

​ 文明不扩张且不与另外的文明交流,内卷*是必然的。人类文明是否已经在内卷?

​ *注:“内卷”可以简单理解为“有增长却无发展”。


Part 4

日期:2020年6月9日22:10

​ 这几天有一件大事,趁热说一下吧,刚好我家长在跟我争论学习。

​ 今天xyl宣布明天晚上开始晚自习到十点(但是允许离家远的人申请早放学),于是在我到家前的半个小时我都在和我爸争这件事。

​ 他的主要观点就是我每天晚上回来就是玩游戏,在学校学习时间少,所以表示不会申请早放学。

​ 作为学生,我的观点自然是需要早放学。

​ 他就指责我:作为学生不好好学习,天天玩游戏,一点上进心都没有,没有压力和紧迫感,然后就是一顿鸡汤。

​ 我就用某人跳楼的事来反驳他。

​ 我为什么每天回来玩游戏?为什么我在市质检期间照样每天上线半小时?

​ 并不是因为我“有恃无恐”,因为我知道我会考得很好。实际上我心里真的比谁都虚,真的。

​ 这只是因为我不想挑战我承受能力的极限(那个时候我还不知道上面我提到的那件事)。

​ 下面是我对这件事的根本原因的个人看法与杂七杂八的感想、评论等等,大家也可以自己思考一下。

​ 我把这件事结合了我自己的情况。

​ 我估计很多同学都不明白学习的意义在哪里,都不知道学习的目标是什么,都是在学校、老师和家长的三重压迫下被迫学习。

​ 因为我也是这么过来的。

​ 然后就开始真正的怀疑人生。

​ 我的生命有没有价值?如果有,为什么他们一直逼我做我不想做的事,还冠以“为我好”的名义?这样子难道是真的“为我好”吗?如果没有,为什么他们要生我养我,教我读书做事?

​ 说实话,我现在挺感觉当时的我像当年的黑人奴隶。

​ 一些奴隶主不得不用绳索把奴隶锁在柱子上或者别的什么东西上,以防止奴隶逃跑或者自杀。

​ (只不过我们现在没有这根绳子罢了。)

​ 黑人奴隶为什么想逃跑和自杀?因为他们被迫劳动,他们感觉不到这种劳动的意义,不知道劳动的目标是什么。他们怀疑他们人生的价值何在:是为自己而活,还是为奴隶主而活?是为自己做事,还是为奴隶主做事?

​ 历史总是惊人地相似。早就废除了的奴隶制,竟然以另一种形式、在另一个社会存在。

​ 这不过是换了一副面貌罢了,表现不同而结果相同。

​ 教育如此失败,谁的责任?

​ 还有上周日晚上,cfl说周日和周三晚上要留到九点四十分。

​ 我放学我就跟我爸说了这件事。当然,他一贯支持老师 ,坚决反对我。

​ 敢问延长教学时间有什么用处?是学习更好,还是心态更差?

​ 不从效率上下功夫,从时间上做文章有何意义?

​ 中国为什么无法在工业化中保持一贯的优势?为什么会被英国击败?

​ 古中国的发展模式是什么?数量至上。

​ 欧洲为什么能率先开始工业化?因为他们人口不够。

​ 中国人口太多了,劳动力价格低廉,所以商人不会花大价钱去改进技术、提高效率。他们只知道多雇人就可以满足一切需求。

​ 但欧洲不一样。他们人口少,必须在单位产出上下功夫。

​ 同样的,我们一味地延长时间,而不从效率上下功夫,最终我们能取得胜利吗?

​ 可能有人会说,学生素质都不一样,结果怎么会一样呢?

​ 以五中举例,这是一所公办学校。

​ 是什么造成了一中和五中如此大的差距?无非就是教师与学生两方面。

​ 公办学校初中招生一般都是电脑随机派位,自主招生的占少数。

​ 根据随机平等性,我们可以得出,两所学校初一的学生的平均素质基本在同一水平。

​ 这也就是说,学生方面的差异是几可忽略不计的。

​ 显然问题出在教师方面。

​ 我记得段长在一次会议上说过,他去厦门一中,发现那里的教学效率很高,因此少有拖课、补习的现象,厦门一中更接近“素质教育”,一中也会逐渐推进素质教育。我的印象中好像段长说过反对拖课的话。我们姑且信任段长关于厦门一中的叙述。

​ 所以,都知道问题在哪里了,为什么解决途径还是只有“拖课”,或者说所谓“培优”这一条?

​ 哦对了补充一点,zwb老师相当长一段时间以前就说他报上去的名单上只有五六个人,但是全班都要留下来听课,时间是周二和周四晚上,放学推迟到九点四十分。cfl也是先问zwb几点下课然后决定也要到九点四十分。

​ 就这?

​ 我不得不怀疑学校所谓“向素质教育迈进”的真实性。

​ 请问欺下瞒上在古代是什么罪?我记得欺君好像是死刑吧,记得没错的话好像是凌迟?

​ 我不会说这是“瞒上”,因为大家心里都清楚,包括jyj的众位领导。谁不希望自己辖区的成绩高呢是不是?这大家都可以理解嘛!

​ 于是上下串通一气,嘴上一套实际一套,家长压制想举报的学生,jyj不公布举报电话,或者干脆不接,甚至于还有直接让接线员劝退的(没错,指的就是疫情刚过复学那会的一件事,一个学生打电话要向jyj举报学校,接线员很直接地回了一句:你疫情期间放假还没放够?)

​ 我找了一下,还真给我找着了,哟,还是人民日报发的微博哦!大家期不期待呢?

下面是一位网友的回答:

我去查了一下人民日报,看到了一个出乎意料的东西。

​ 哈,毛主席的批语。

​ 多么有趣,多么精彩!

​ 说回正题。

​ 不从效率上下功夫,不在教学方式上思考改进。

​ 难怪了。

​ 但是苦的是谁?我们学生。

​ “全世界学生们,联合起来!”


Part 5

日期:2020年6月10日23:15

​ 本来我应该都已经开始写一个多小时了,但是…没办法,生活所迫。

​ 到这里已经四千五百字了,估计需要相当长的时间你们才能看完,毕竟不是谁都可以一分钟读五六百字。顺带扯一下,习惯读这么快其实不是什么好事,真的。我就是因为默读练太好了,一分钟可以读差不多四五百字,但是这就造成了我读什么都是这个速度,上到经典名著,下到网络小说,这就直接导致无法理解名著的内涵,因为都是一遍就过,每个字只能停留0.1秒,基本没什么时间思考。

​ 下面是正题。

​ 今天和某人聊着聊着就谈到了占有欲这个东西。

​ 我窃以为占有欲不能强,因为占有欲强就会害怕失去,越害怕就越容易。

​ 别想着我会讲一个故事来论述。我不想提,因此我只能是以过来人的身份告诫大家。

​ 成绩也如此。

​ 成绩虚无缥缈,你说不清它到底是个什么东西,它存在于哪里?存在于你的内心。

​ 因为很多人把成绩看得太重,也即“占有欲太强”,一考差就恨不得…

​ 其实,大家扪心自问一下,是成绩重要还是人生重要?

​ 可能你们会反驳:成绩不好,怎么会有一个好的人生?

​ 那我只能说,此“人生”非彼“人生”。

​ 人生,难道家财万贯才叫“好”,难道三妻四妾才叫“好”?金钱,功名,这些是人生的什么?是附属品,还是核心?

​ 成绩好,未来固然可能会有好的前途。但是请记住,前途不等于人生。

​ 功,名,利,禄,哪一个能让你快乐一辈子?哪一个最能让你得到真正的幸福?

​ 抱歉,都不能。

​ 生不带来死不带去的东西,看那么重干嘛?

​ 世上本没有成绩,考的人多了,也便有了成绩。

​ 最早考试是怎么来的?秦朝对官吏的定期考核。

​ 后来发展到科举入仕。

​ 再后来,扩展到升学。

​ 然后就是工作。

​ 考试无处不在,成绩亦然。

​ 古时候,读书就是读书。读书,入仕也可,不入仕也可。

​ 你愿意一辈子隐居田园,躬耕南阳,没人管你;

​ 你愿意在名利场上追逐一辈子,博取“封妻荫子”,也没人管你。

​ 这才使读书真正成为“读书”。

​ 当然,古代读书大部分也都是为了入仕,这个不可否认。但是在古代,你不入仕,自然有其它出路。现代则大大不同,你读书,就是为了继续读书,为了之后能在社会上生存。

​ 读书逐渐成为“生存技能”。

​ 为什么古代读书这么悠闲?

​ 因为古中国强盛,世界上没有国家可以与之媲美。国家没有竞争,自然不需要大批所谓“高素质人才”。

​ 没有迫切需要,读书就渐渐带上了一点娱乐性。

​ 但现在不同。

​ 新中国国力仍然不强,对外强敌虎视眈眈,对内公知港独污染思想、破坏稳定。

​ 新中国亟需快速发展,以尽早克服一切困难。这自然需要大量人才。

​ 因此“读书”便不再为“读书”,是为“应试教育”。

​ “素质教育”者何?“应试教育”者耳,无其形而有其实。

​ 一切都是时代的需要,我们不过是时代的傀儡罢了。

​ 承上,“好”的人生,并不在于你书读得很好,钱赚了很多;

​ 而在于你活得很开心;

​ 在于:这,是你想要的人生。


Part 6

日期:2020年6月11日23:18

​ 今天我们来聊一聊初中三年大部分人绕不开的两个话题:游戏和恋爱。

​ 这两个我都觉得无可厚非,毕竟这是个人的权利。

​ 游戏,是娱乐的一种。既然是娱乐,那么你花在它上面的时间不应该比你做正事花的时间多。

​ 毕竟,学习是你生存之本。

​ 至于恋爱么,我觉得说“早恋”也就罢了,但是大张旗鼓地明令禁止实属不必要之举。

​ 本来情窦初开的年纪还要逼着人去读书,这不是强人所难是什么?

​ 我不赞成早恋,但是我坚决捍卫你们谈对象的权利,就像我对待吃狗肉那样。

​ 但是,谈谈也就罢了,要是做什么出格的事……我祝愿双方家长对这门亲事感到非常满意。

​ 两性话题是迟早要接触的,这基本上是无法避免的,除非你愿意做个修行者。

​ 太晚接触这个话题我个人认为不是什么好事,但是太早同样不好。

​ 国家显然是觉得中学谈恋爱是没什么大毛病的,完全在个人。只是为了身体健康着想,才在法律上规定了多个性同意年龄。如果国家觉得中学谈恋爱明显不妥,早就立法禁止了。

​ 有一个相关的事例:最近美国犹他州修改了重婚罪的惩罚,把惩罚下降到了750美元罚款及社区服务。

​ 因为该州的摩门教教徒众多,而摩门教强调男人的妻子要多才能上天堂。clh估计会很开心。

​ 这在网上引起了热议。

​ 舆论有一定的两极分化倾向:

​ 一派斥责这是“社会的退步”,理由是一夫多妻是过时的制度,早就应该废除,以及“宗教不应该成为一切的理由”。

​ 另一派则表示赞成,目测应该多数是摩门教徒以及clh这样的人。

​ 中立派数量明显偏少,主要观点是:这是人家的权利,只要你情我愿就应该是被允许的。

​ 我持中立态度。

​ 以及游戏。

​ 网上一搜“游戏成瘾对学习的影响”,马上就可以搜到各种文章,开篇大多都是“游戏成瘾堪比毒品上瘾”,“网络游戏就是电子海洛因”等等论调。

​ 我一看,真不知道我是该发火还是该笑。

​ 来看看这一段文字:

网络游戏的危害等同于毒品成瘾 。痴迷于网络游戏不可自拔与服用毒品成瘾一样,危害深重,需要社会和政府的早期干预。

​ 乍一看语言好像没什么毛病,用词很严谨嘛!

​ 我承认后面一句是对的,问题就出在前面那一句上。

​ 再来看一遍:

网络游戏的危害等同于毒品成瘾 。

​ 这是文章开篇第一句话。

​ 请注意,第一句话就给网络游戏扣上了一个帽子。

​ 这个帽子本身危害不大,但是一般人/家长就会选择性地看或者选择性地理解:

网络游戏=毒品

​ 敢问什么东西的危害不比毒品成瘾大?

​ 再来看看文章的内容:

物竟天择,适者生存。人类的进化史就是这样的。

网游就是一个考验,能通过考验一定是最优秀的。但别忘了,“物竟天择,适者生存”是宏观角度上看得的结果,是用人类进化了几十万年的时间来体现的。如果现在让网游听之任之,那么相信中国一定会有超过50%的青少年被淘汰,然后另外不足50%通过考验的优秀分子中的大部分将在成年后被未通过考验的青少年用暴力干掉,或是花费大量的时间和精力解决由此产生的社会问题。

​ 怎么我看着这么像滑坡论证*呢?

​ *注:这一论证力图以采取第一步会导致其他具有灾难性后果为由,劝阻听众不要采取第一步。

​ 我们来分析一下。

​ 第一:网游是考验。

​ 第二:网游会造成两极分化,通过考验的会越来越好,没通过的反之。

​ 第三:导致没通过考验的人对通过考验的人的仇视,进而引发更大规模的社会性问题或事件。

​ 好像每一步都很合理嘛!

​ 但这就是滑坡论证的“优势”之所在,偏偏这个焦点是本来就被扣上“电子海洛因”的帽子的网游,这就会使得这段论证更有说服力。

​ 但滑坡论证的破绽在哪里?

这个论证一般被认为不能令人信服,因为我们不能确切地在合理和不合理之间划线,这是没有任何合理根据的,尽管最初的步骤也许会改变对随后的步骤加以判断的背景。

​ 人话就是说,你上一步的决策并不必然会导致或影响下一步的决策,尽管这两个决策之间看起来有明显关联。

​ 比如那个著名的“如果不给我的作文打高分”,就是一个非常典型的滑坡论证,典型到用的句式都能让人一眼看出来。但其漏洞显然比这个大多了,其原因就在于“电子海洛因”论被过分地宣传,导致我们在潜意识里会对其有一定的认同感。


Part 7

日期:2020/6/17-22:44

​ 本来是感觉没什么想写的,因为关于生活中的一些比较大的、普遍的问题基本都讲了,而且因为睡眠时间的原因被迫停笔半周。

​ 但是看到最近各种头条,我又忍不住了。

深圳立法禁止吃狗肉?

​ 我记得我当时我看到的时候是在上网课,然后我当场一拍桌子(键盘)就站了起来,显示器都差点倒下去。

​ 我去查了一下条例原文,里面通篇没有一个“狗”字,于是我去查了一下焦点,发现一个问题。

​ 自媒体在作怪。

​ 并不是深圳立法吃狗肉引起争议,事实上从条例上来说,深圳这次也并没有禁止吃狗肉。

​ 引起争议的是深圳人大常委会法工委负责人说的一段话:

明确禁止食用用于科学实验、公众展示、宠物饲养等非食用性利用的动物及其制品,主要考虑到这些非食用性利用的动物有其特殊的饲养目的和饲养方法,在检验检疫标准上与供食用的动物不同;同时,猫狗作为宠物,与人类建立起比其他动物更为亲近的关系,禁止使用猫狗等宠物是许多发达国家和中国香港、中国台湾的通行做法,也是现代人类文明的要求和体现。

​ 我随便一举都可以从一堆方面来反驳这种xxxx的——原谅我想不出合适的形容词——观点。

我标题都想好了,就叫《十问深圳人大常委会》。以下对于深圳人大常委会均使用第一人称,将其视为单数,或者一个团体。

第一问,所谓“许多发达国家和中国香港、中国台湾”禁止吃狗肉,和我们有什么关系?

​ 他们是你爹?还是你祖宗?人家做什么你就要跟着?你是没有独立思考的能力,还是说你只是人家意志的傀儡?

第二问,将不吃狗肉作为“现代人类文明的要求和体现”,请问你如何得出这个结论?

​ 今天假借文明之名禁食狗肉,明天假借照顾伊斯兰教同胞为名禁食猪肉,后天假借团结印度兄弟之名禁食牛肉,最后全面推行佛教理念禁食一切肉类,这总文明了吧?

第三问,请问你说这句话之前,经过脑子没有?

​ 人大,是反映人民意志的地方。人大的一切行为,都应符合人民的期望,保障人民的利益。请问你真的做过民调没有?坐在特殊的位置上,就要注意自己的言行,这个懂不懂?不是每个人都可以像懂王那样张嘴就来的好吧?!如果你只是以个人身份发表言论,我不反对,但是请问你在发言之前不声明是仅以个人身份发表,那自然默认这些话是人民的意志。那请问你究竟是忘了声明,没过脑子,还是不做民调,随便发言?前者没脑子,应该撤职,人民不能接受没有脑子的人管理自己;后者嘛,我个人认为应该抓去枪毙。谁给你的权利不经过人民同意就给人民扣上一顶帽子?谁让你捏造出这么一席话?

​ 我就不一一列举了,罄竹难书啊!

关于GCD的一些杂谈

​ 接下来我就不得不谈到GCD了,虽然这有点zz错误。

​ 首先是关于印度共产党。

2012年4月上旬,印共(马)*召开第20届党代会,该党政治局委员亚秋里提交了“关于一些思想认识问题”的议案,指出了中国社会主义模式的缺点,分析了拉丁美洲、朝鲜、古巴和越南模式,并得出结论认为,印共必须从这些国家的经验中“正确地吸取教训”,根据印度的“具体情况”制定出路线图。

​ (来自BD百科)

据《印度时报》报道,会上参加讨论的多数代表对中国经济增长模式持批评态度,认为中国模式“更注重培养亿万富翁而轻视解决城乡差距问题”。在印共(马)党代会上,不少代表提出了中国模式的各种问题,包括贪污腐败、不平等和失业率上升等。代表们认为,中 国出现的新资本家、贫富之间差距的加大和中国工人微薄的工资,都显示中国“偏离了社会主义道路”。来自印度北部的一些代表建议印共(马)效仿拉丁美洲的左翼政府,而不是学中国。但喀拉拉邦和西孟加拉邦的代表明确支持中国模式里好的元素,并建议在印度模式中采纳。

​ *注:印共(马)指印度共产党(马克思主义),因为印度共产党暂不是执政党,有分裂经历,多个派别都自称印度共产党(这种情况和欧洲共产党相似),为了区分,在后面标注他们的信仰。

​ 我觉得印共(马)这段分析算是相当精辟的,虽然在某些方面有失偏颇。

​ 改革开放早期确实存在“更注重培养亿万富翁而轻视解决城乡差距问题”,这个不可否认,毕竟“先富带动后富”摆在那不是么。但是现在已经有了相当的改善,虽然力度显然还是不够。

​ 对于“中国模式的各种问题”,我想了一下,算是比较认同。

​ 贪污腐败这个是没法避免的,基本没有完全不存在贪污的政权。

​ 不平等这个问题相对明显,在各个方面都是。985、211就是很好的例子。

​ 总感觉挺虚伪的,表面说平等,但是转身又加剧了教育资源的倾斜。

​ 失业率上升相对正常,市场经济就必然会有失业。毕竟计划经济的时代过去了,国家安排工作的时代也过去了。

​ 至于资本化,偏离社会主义道路,这个已经相当明显了。

​ 经济国有化程度降低,国有产业不断被收购,垄断资本主义重新兴起(比如TX在即时聊天产业),还有实体经济下滑带来的工人工资降低(我妈的公司最近又开始裁员了,而且剩下的员工一周只上四天半的班),这些迹象都相当程度上印证了印共(马)的观点。

​ 为什么中国经济会受到2008年世界经济危机的影响?这里面的原因究竟是更倾向于“经济全球化”还是中国的经济资本化?

​ 我个人倾向于后者,理由很简单:上个世纪30年代,全球贸易也已兴起,为什么苏联的崛起和资本主义国家的危机能够重合?为什么苏联不会受到经济大危机的影响?

​ 答案显然:那时的苏联是高度“社会主义”化的,当然,之后苏联偏离了道路是另一回事。

​ 为什么现在的家长,拼了命也要买学区房、让孩子上好学校?

​ 我引用B站UP主“观视频工作室”中【睡前消息】的某一期中的一句话:因为他们知道,在资本主义社会下,知识才是一切。(大意如此,不一定是原话)

​ 这人竟敢公然zz错误,我表示相当佩服。

​ 中国在逐渐资本化的道路上走了多久?文化大革命是不是真的没有判断错误,只是被反革命集团利用?反革命集团后面真的没有后台吗?他们怎么敢仅凭四人之力操纵政局?为什么毛主席与周总理在的时候他们没有被清除,而两大领导人一去世,他们就被干掉了?所谓“中国特色社会主义”的终点究竟是共产主义还是资本主义?GCD和人民代表大会到底是工农的组织还是已经逐渐腐化成了资产阶级的、“反映人民利益”的组织?

2020/7/12 晚23:11:26续

​ 本来想着估计要重写,结果重新看了一遍,发现好像我也没下什么结论,于是乎感觉不必重写了,就继续写吧。

到底应不应该允许资本家参加人大?

​ 这是本次续写的核心问题。它来自于最近腾讯和老干妈的这场官司,有人扒出了腾讯“战略竞争策略传播经理”的招聘要求,以下是原文(不想上传到图床了,各位将就着看一下文字版吧):

工作职责:

1.针对竞品的不正当社会信息,能够快速调动央媒及核心自媒体展开舆论,进行有效反制,形成高效的社会影响力,对北京及中央级媒体有深入的关系;

2.能够配合各BG,将公司突出能力以内参和调研报告的形式,输出给甲方高层,形成于公司有利的“高层话语权”,有较强的写作能力和分析能力;

3.围绕中央高层关切及政府活动进行策划传播,将我司战略级别的业务诉求慢慢植入,起到迎合、引导政策的作用。特别是在两会期间,能够引导人大代表及政协委员的议案提案中形成于我司有利舆论环境,同时形成对竞争对手的反制。

​ 此外,还有不少作为全国人大代表参加全国人大的所谓“企业家”,或者说,“人民富豪”?

​ (话说回来,当时我看到人民富豪这四个字的时候我就笑了,这™不就资本家吗,说这么好听?还“人民”?是因为人民自愿给你钱还是因为人民用脚投票投出来这么个玩意?)

​ 比如金龙汽车公司的高管就是一个例子。他在人大提出了一个推广校车的提案,然后通过了,然后金龙就成了校车标准的制定者,然后…

​ 表面看上去没啥,但是就应了一句话:“细思极恐”。

​ 1.资本家能够在人大为自己的剥削集团代言,甚至通过明显对自己剥削集团有利的提案,那么,如果哪一天资本家在人大当中占据了多数,那么他们会干出什么事?

​ 2.中华人民共和国是工人阶级领导的、以工农联盟为基础的人民民主专政的社会主义国家。人大作为反映人民意志的权力机关,为何允许资本家这种工人阶级之敌参加?再者,工农联盟在哪?我只看到遍地富裕的资本家和贫困的工农人民。


随笔,会不定期更新/补充,记录一些生活中的小事和偶然想到的一些奇奇怪怪的东西。

一,“条件和奖励”

​ 又跟家长吵架。

​ 我妈说:你认认真真完成一件事情,别人给你奖励,跟你为了奖励才去做那件事情,这两个是不是有很大的区别?

​ 我:那请你想想,假设这件事是A,奖励是B,那“想得到奖励B就必须完成A”和“完成A可以得到奖励B”这两个有什么本质上的区别?你一直说这两个有区别,请不要转移话题,你来说说这两种“说法”有何区别?

​ 我妈:(继续转移话题)我都说过了,你认认真真完成一件事情,别人给你奖励,跟你为了奖励才去做那件事情,这两种态度是不是就截然不同?

​ 我:所以说,你们家长一直说“啊,孩子不跟我们沟通啊”“孩子叛逆啊”“孩子跟我们有代沟啊”有什么用吗?“代沟”是你们挖的还是我们挖的?你这样一直转移话题,这叫什么?这是辩论吗?

二 “儒家与道家”(“法治与无为”)

​ 众所周知,“罢黜百家独尊儒术”实际上起到的作用除了毁灭开放的思想和巩固汉王朝统治之外以及使儒家变得“外儒内法”之外没有其他的用处。

​ 道家追求“无为而治”,“回归本真”,而儒家(法家)追求“法治”,我认为这其实是人类的本质(注意,这里指的不是某个人尽皆知的梗)的变化。

​ 西方某宗教说人类先后经历了黄金时代、白银时代等等,最后人类堕落,上帝要发大水淹了这个世界,“诺亚方舟”也就此诞生。

​ 这里主要讲一下黄金时代与“堕落的人类”。

​ 如果每个人都像“黄金时代”中的人一样,杜绝贪婪、嫉妒等“原罪”,那么,试问法律有何用处?如果每个人都自觉地不去侵犯他人的利益,谁会需要“法律”的约束?

​ 那既然人类“堕落”,那么“无为”也就失去了它应有的价值(因为它的时代一去不复返了),这时人类便需要“法律”来规范自己的行为。

​ 说到底,“法律”也不过是一些人类亲手制作的、束缚人类自己的条条框框而已,“道德”也是一样。

​ 从这个意义上说,“无为”是比“法治”更高一层的,只是因为人类的本质变化了,不再适用罢了。

​ 就好比一台电脑,AMD的R5 3600是比Intel的I5 7500要更好的,但是主板换了,再好的CPU适应不了这个“环境”,也就失去了它的用处。

​ (在这一点上,兄弟会的信条就相当明智,至少我这么认为。)

​ (我并不是说你可以随意杀人,就像兄弟会的信条“万事皆允”一样,如果你要曲解本文意义的话我也救不了你。)

三 “社会隧道”

​ 我一直将社会和科技的进步比作穿越隧道。

​ 这是我深思之后才打下的比方,因为国内知名科幻作家刘慈欣曾写过一本书,《三体·黑暗森林》,书中“描绘”了人类的未来和宇宙的黑暗本质,给了我很大的启发。

​ 隧道,深不见底。众多的文明(如果不只存在人类文明)在其中摸黑探索,人类也是。跌跌撞撞,甚至摔个狗啃泥也是家常便饭,上个世纪就有两个很好的例子。在曲折的探索中,人类不断前进,一步步地迈向“未知的终点”。

​ 隧道,对每个文明来说都是“敌暗我明”。发展的同时还要小心不要被其他的文明补上一刀。

四 “万物皆虚,万事皆允”

​ 时间不够,下次再来填坑。

五 “画大饼”

​ 这个源于我和父母的谈话,关于学校宣布2020年寒假初三只放假10天。(相信很多同学都有过类似的经历)

​ (前情提要:我说年段里面有人要去教育局举报学校寒假只放10天,我妈说“你们怎么那么不成熟”,然后我们就围绕“克扣假期”辩论了起来,然后就没有然后了

​ “画大饼”:

​ 类似基督教(总是期望来世),但略有不同,大致内容为:

​ 你要好好读书啊,!@#¥%……*&¥%……,在现在这个需要知识的年代只有读书才有出路啊,%¥@#%@#¥&,你要是不好好读书,将来考不上高中/大学/研究生(/…/…)你要怎么办啊!@#¥@@#¥

大意就是要刻苦学习,放弃假期,寒窗苦读,以后才有出路

​ 因此,我思考了很久。

​ 最后我将读书人分为四等(并不是歧视,只是说明)

​ 第一等,不画大饼也能吃到大饼的人。他们不必如何如何努力学习就能够拿到高分,是最令人羡慕的一等(我在努力朝这方面靠拢)。

​ 第二等,画大饼,最终也吃到大饼的人。他们必须努力学习才能获得一个令人满意的分数。

​ 第三等,不画大饼,最终没吃到大饼的人。他们不努力,整天悠闲地过日子,好似隐士一般(是我本人没错了)。

​ 第四等,画了大饼,却没吃到的人。他们非常努力,却因为各种原因没能取得令人满意的成绩,也是最悲哀的一等。


本文全部内容为纯原创,如有转载会注明出处,如有雷同且未注明转载出处者,纯属巧合。

转载请注明出处,且务必加上原文链接。

注意:本篇内容仅针对Windows7,Dev-C++!!!

因为Mac OS和Linux都没用过

1.文件位置

stdafx文件不能有后缀!文件图标必须是一片空白!不能有内容!

stdafx.h只能有.h后缀!

这两个文件都保存在Dev-C++的目录下,路径为:

系统默认(即安装Dev-C++的时候没有更改安装目录)32位:

C:\Program Files\Dev-Cpp\MinGW32\include

系统默认(即安装Dev-C++的时候没有更改安装目录)64位:

C:\Program Files (x86)\Dev-Cpp\MinGW64\include

32位:

Dev-C++安装目录\MinGW32\include

64位:

Dev-C++安装目录\MinGW64\include

2.食用方法

直接复制到目录下,在之后的工程中就可以使用啦!

用法(有复制stdafx中的内容):

1
#include<stdafx>

如果你只复制了stdafx.h的话,那么你就必须要加.h后缀。

在正式使用前推荐先将stdafx.h文件在Dev-C++中先按F9编译一下,这样可以省去不少时间,在以后工程中引用的时候就不需要引用一次编译一次了。

3.文件说明

stdafx.h中的INT高精度类的除法有问题是已知问题,请各位用户先不要使用。如果你知道改正方法,请联系鄙人,拜谢了。

转载请注明出处。

4.函数用法

说明:int、long long等整数类型以下皆称为“整数”。

  1. INT:

高精度类,包含绝大多数普通int的操作。

  1. 各个INT函数:
1
INT gcd(INT x,INT y)

最大公约数不解释。

1
INT pow(INT base_num,INT exponent)

快速幂,base_num是底数,exponent是指数。

1
2
INT pow(INT base_num,INT exponent,INT mod)

同上,多了个mod而已。

1
2
INT sqrt(INT x)

二次根,向下取整。

  1. 各个数学函数:
1
template<typename T>T gcd(T x,T y)

适用于整数的gcd,具体用法见文末。

1
template<typename T>T lcm(T x,T y)

最小公约数函数,适用于整数。

1
template<typename T>T pow(T base_num,T exponent)

快速幂。

1
template<typename T>T pow(T base_num,T exponent,T mod)

同上,多了个mod。

1
template<typename T>T factorial(T x)

阶乘函数,适用于大部分C++原有类型(除了STL)。

1
template<typename T>T square(T x)

没什么用,返回平方值而已。

1
template<typename T>T lowbit(T x)

一般是树状数组用的,返回x二进制下末尾0的个数。

1
template<typename T>double distance(T x_1,T y_1,T x_2,T y_2)

求两点间距离函数。

1
template<typename T>int sgn(T x,T y)

符号函数,大于0返回1,等于0返回0,小于零返回-1。

1
bool is_prime(int n)

判断素数函数,效率较好。

1
template<typename T>void make_prime_table(int length,T f[])

素数表函数(埃筛),length是长度,f是标记数组。

1
void read(LL &num)

快读函数,整型。

1
void read(double &num)

快读函数,浮点型。

1
template<typename T>void read(int l,int r,T array[])

快读函数,l为左下限,r为右下限,array是要读入数据的数组。

1
template<typename T>void write(T num)

快输函数,整型。

1
int find(int x,int pre[])

并查集专用函数,pre是并查集数组。

1
int join(int x,int y,int pre[])

同上。

1
LL random()

随机数函数,数据范围更大。

1
LL random(LL mod)

同上,加了个mod而已。

1
ULL urandom()

保证返回数据为非负数。

1
ULL urandom(LL mod)

同上,加了个mod而已。

注:template用法:

所有有加template的函数,可以传入大部分的C++原有类型(除非有注明特别适用于某种类型),用法和普通函数并无区别。

新版更新通知:

现版本将可以直接stdafx,不必再加.h后缀,例如:

1
#include<stdafx>

提醒:保存stdafx时请将.h后缀删掉!

也就是说,没有.h后缀的文件是显示不出来文件类型的.

stdafx及stdafx.h食用方法

文件有两个:

以下是stdafx文件内容:

1
2
3
4
5
6
7
#ifndef _GLIBCXX_STDAFX
#define _GLIBCXX_STDAFX 1
#pragma GCC system_header

#include<stdafx.h>

#endif

以下是stdafx.h文件内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
#ifndef stdafx
#define stdafx 1

#define LL long long
#define UI unsigned int
#define UL unsigned long
#define ULL unsigned long long
#define UF unsigned float
#define UD unsigned DOUBLE

#define push(x) push_back(x)

#include<bits/stdc++.h>
using namespace std;
namespace std
{
class INT
{
protected:
vector <short> que;
bool flag;
UI size()const
{
return que.size();
}
void count()
{
while(que.size()>1&&!que[que.size()-1])
que.pop_back();
}
public:
INT()
{
que.clear();
que.push_back(0);
flag=1;
}
INT(const char *num)
{
*this=num;
}
INT(const int &num)
{
*this=num;
}
INT(const long long &num)
{
*this=num;
}
INT operator=(const INT &num)
{
que=num.que;
flag=num.flag;
return *this;
}
INT operator=(const string &num)
{
int i=(num[0]=='-');
que.clear();
flag=!i;
for(int now=num.size()-1; now>=i; now--)
que.push(num[now]-'0');
return *this;
}
INT operator=(const char *num)
{
int i=(num[0]=='-');
que.clear();
flag=!i;
for(int now=strlen(num)-1; now>=i; now--)
que.push(num[now]-'0');
return *this;
}
INT operator=(const int &num)
{
int tmp=num;
tmp<0?flag=0,tmp=-tmp:flag=1;
que.clear();
if(tmp==0)
{
que.push(0);
return *this;
}
while(tmp)
que.push(tmp%10),tmp/=10;
return *this;
}
INT operator=(const LL &num)
{
LL tmp=num;
tmp<0?flag=0,tmp=-tmp:flag=1;
que.clear();
if(tmp==0)
{
que.push(0);
return *this;
}
while(tmp)
que.push(tmp%10),tmp/=10;
return *this;
}
INT operator+(const INT &num)const
{
if(flag^num.flag)
{
INT tmp=flag?num:*this;
tmp.flag=1;
return flag?*this-tmp:num-tmp;
}
INT res;
res.que.resize(max(size(),num.size())+1);
for(UI i=0,temp=0; temp||i<(max(size(),num.size())); i++)
{
res.que[i]+=que[i]+num.que[i];
res.que[i+1]+=res.que[i]/10;
res.que[i]%=10;
}
res.count();
res.flag=flag;
return res;
}
INT operator-(const INT &num)const
{
INT res;
if(flag)
if(num.flag)
{
if(*this<num)
{
res=-(num-*this);
return res;
}
}
else
{
res=*this+(-num);
return res;
}
else
{
if(flag)
res=-((-*this)+num);
else
res=-num-(-*this);
return res;
}
res.que.resize(size()+2);
for(UI i=0; i<size(); i++)
{
res.que[i]+=que[i]-num.que[i];
if(res.que[i]<0)
res.que[i]+=10,res.que[i+1]--;
}
res.count();
return res;
}
INT operator*(const INT &num)const
{
INT res;
res.que.resize(size()+num.size()+2);
for(UI i=0; i<size(); i++)
for(UI j=0; j<num.que.size(); j++)
{
res.que[i+j]+=que[i]*num.que[j];
res.que[i+j+1]+=res.que[i+j]/10;
res.que[i+j]%=10;
}
res.count();
res.flag=(flag==num.flag);
return res;
}
INT operator/(const INT &num)const
{
INT now,res=*this;
for(int i=size()-1; i>=0; i--)
{
int j=0;
now=now*10+que[i];
for(; j<10; j++)
if(now<num*(j+1))
break;
res.que[i]=j;
now=now-num*j;
}
now.count();
res.flag=(flag==num.flag);
return res;
}
INT operator%(const INT &num)const
{
INT nowa=*this,nowb=num;
nowa.flag=nowb.flag=1;
INT res=nowa-nowa/nowb*nowb;
res.flag=flag==num.flag;
return res;
}
INT operator-()const
{
INT res=*this;
res.flag^=flag;
return res;
}
INT operator+=(const INT &num)
{
return *this=*this+num;
}
INT operator-=(const INT &num)
{
return *this=*this-num;
}
INT operator*=(const INT& num)
{
return *this=*this*num;
}
INT operator/=(const INT& num)
{
return *this=*this/num;
}
INT operator++()
{
*this=*this+1;
return *this;
}
INT operator++(int)
{
INT old=*this;
++(*this);
return old;
}
INT operator--()
{
*this=*this-1;
return *this;
}
INT operator--(int)
{
INT old=*this;
--(*this);
return old;
}
bool operator<(const INT &num)const
{
if(flag^num.flag)
return num.flag;
if(size()!=num.size())
return flag?size()<num.size():size()>num.size();
for(int i=que.size()-1; i>=0; i--)
if(que[i]!=num.que[i])
return flag?que[i]<num.que[i]:que[i]>num.que[i];
return !flag;
}
bool operator<=(const INT &num)const
{
return !(*this>num);
}
bool operator>(const INT &num)const
{
return num<*this;
}
bool operator>=(const INT &num)const
{
return !(*this<num);
}
bool operator==(const INT &num)const
{
return !(num!=*this);
}
bool operator!=(const INT &num)const
{
return *this>num||*this<num;
}
bool operator!()const
{
return *this>0?1:0;
}
string str()const
{
char ch;
string res;
for(UI i=0; i<size(); i++)
ch=(char)que[i]+'0',res=ch+res;
if(res=="")
res="0";
if(!flag&&res!="0")
res="-"+res;
return res;
}
};
istream& operator>>(istream &in,INT &now)
{
string ined;
in>>ined;
now=ined.c_str();
return in;
}
ostream& operator<<(ostream &out,const INT &now)
{
out<<now.str();
return out;
}
INT gcd(INT x,INT y)
{
if(x<y)
return gcd(y,x);
if(y==0)
return x;
else if(!(x%2))
if(!(y%2))
return gcd(x/2,y/2)*2;
else
return gcd(x/2,y);
else if(!(y%2))
return gcd(x,y/2);
else
return gcd(y,x-y);
}
INT pow(INT base_num,INT exponent)
{
INT res=1;
while(!(!exponent))
{
if(exponent%2==1)
res*=base_num;
base_num*=base_num;
exponent/=2;
}
return res;
}
INT pow(INT base_num,INT exponent,INT mod)
{
INT res=1;
while(!(!exponent))
{
if(exponent%2==1)
res=res*base_num%mod;
base_num=base_num*base_num%mod;
exponent/=2;
}
return res;
}
INT sqrt(INT x)
{
if(x<0)
return -1;
if(x<2)
return x;
INT l=0,r=x,mid;
while(r-l>1)
{
mid=(l+r)/2;
if(mid*mid>x)
r=mid;
else
l=mid;
}
return l;
}
template<typename T>T gcd(T x,T y)
{
if(x<y)
return gcd(y,x);
if(y==0)
return x;
else if(!(x&1))
if(!(y&1))
return 2*gcd(x>>1,y>>1);
else
return gcd(x>>1,y);
else if(!(y&1))
return gcd(x,y>>1);
else
return gcd(y,x-y);
}
template<typename T>T lcm(T x,T y)
{
return x/gcd(x,y)*y;
}
template<typename T>T pow(T base_num,T exponent)
{
T res=1;
while(exponent)
{
if(exponent&1)
res*=base_num;
base_num*=base_num;
exponent>>=1;
}
return res;
}
template<typename T>T pow(T base_num,T exponent,T mod)
{
T res=1;
while(exponent)
{
if(exponent&1)
res=res*base_num%mod;
base_num=base_num*base_num%mod;
exponent>>=1;
}
return res;
}
template<typename T>T factorial(T x)
{
T res=1;
for(T i=1; i<=x; i++)
res*=i;
return res;
}
template<typename T>T lowbit(T x)
{
return x&-x;
}
template<typename T>T square(T x)
{
return x*x;
}
template<typename T>double distance(T x_1,T y_1,T x_2,T y_2)
{
return sqrt(square(x_1-x_2)+square(y_1-y_2));
}
template<typename T>int sgn(T x,T y)
{
if(x>0)
return 1;
else if(x==0)
return 0;
else
return -1;
}
bool is_prime(int n)
{
if(n==2||n==3)
return true;
if(n==1||(n%6!=1&&n%6!=5))
return false;
for(int i=5; i*i<=n; i+=6)
if(n%i==0||n%(i+2)==0)
return false;
return true;
}
template<typename T>void make_prime_table(int length,T f[])
{
fill(f,f+length,1);
f[0]=f[1]=0;
for(int nowa=2; nowa<=length; nowa++)
if(f[nowa]==1)
for(int nowb=2; nowb*nowa<=length; nowb++)
f[nowa*nowb]=0;
}
void read(long long &num)
{
num=0;
bool flag=0;
char ch=getchar();
while(ch<'0'||ch>'9')
flag|=(ch=='-'),ch=getchar();
while(ch>='0'&&ch<='9')
num=num*10+ch-48,ch=getchar();
num=flag?-num:num;
}
void read(double &num)
{
int w=0,f=0,flag=1;
char ch=getchar();
double s=0;
while(ch<'0'||ch>'9')
{
if(ch=='-')
flag=-1;
ch=getchar();
}
while((ch>='0'&&ch<='9')||ch=='.')
{
ch=='.'?f=1:!f?s=s*10+ch-'0':(w++,s+=(ch-'0')*1.0/pow<int>(10,w));
ch=getchar();
}
num=s*flag;
}
template<typename T>void read(int l,int r,T array[])
{
for(int now=l; now<r; now++)
read(array[now]);
}
template<typename T>void write(T num)
{
if(num<0)
putchar('-'),num=-num;
if(num>9)
write(num/10);
putchar(num%10+'0');
}
int find(int x,int pre[])
{
int p=x,tmp;
while(x!=pre[x])
x=pre[x];
while(p!=x)
tmp=pre[x],pre[x]=x,p=tmp;
return x;
}
int join(int x,int y,int pre[])
{
int fx=find(x,pre),fy=find(y,pre);
if(fx!=fy)
{
pre[fx]=fy;
return 1;
}
return 0;
}
LL make_rand(const LL &num,int now,int _max)
{
now++;
if(now==_max)
return num;
int i=rand()%5;
if(i==0)
return make_rand(num+rand(),now,_max);
if(i==1)
return make_rand(num-rand(),now,_max);
if(i==2)
return make_rand(num*rand(),now,_max);
if(i==3)
return make_rand(num/rand(),now,_max);
if(i==4)
return make_rand(-num,now,_max);
}
LL random()
{
srand(rand()*time(0));
int now=rand()%1000;
return make_rand(rand(),1,now);
}
LL random(LL mod)
{
srand(rand()*time(0));
int now=rand()%1000;
return make_rand(rand(),1,now)%mod;
}
ULL urandom()
{
srand(rand()*time(0));
int now=rand()%1000;
return abs(make_rand(rand(),1,now));
}
ULL urandom(LL mod)
{
srand(rand()*time(0));
int now=rand()%1000;
return abs(make_rand(rand(),1,now)%mod);
}
}
#endif

通知:

1.由于习惯,刚开始有一些函数会起自己常用的形参,后面会慢慢改正,尽量做到通俗易懂.

2.有人可能不理解template是什么意思,其实意思很简单,就是可以传更多类型的参数,像int,long long等等.可能有人不知道怎么用,举个例子:

比如说,一般的gcd函数,正常情况下是这么用的:

  gcd(a,b);

加了template的gcd是这样的:

  gcd<int>(a,b);(假设a,b是int类型)

同样的:

1
gcd<long long>(a,b);

也是允许的.其实并没有多少差别,只是在传入参数的时候,前面要声明一下参数的类型罢了.

但是在使用INT的各个函数时不需要加尖括号,因为有专门给INT使用的函数定义

注意:传入的参数要同一类型!因没有传入同一类型参数所造成的所有后果,请自行承担!

警告:请将本头文件用于正常用途!如果您由于非法使用本头文件而所造成的所有后果,本人不承担任何责任!