summaryrefslogtreecommitdiff
path: root/blog/post/2015-10-30.html
blob: 83295112d4d0b586c30f6b0313c5993d11343b74 (plain) (blame)
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
<html><head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="theme-color" content="#000000">
<title>Chrisoft::Blog</title>
<script type="text/javascript" src="/panel.js"></script>
<script type="text/javascript" src="/blog/footnoter.js"></script>
<script type="text/javascript" src="/blog/aes-js.js"></script>
<script type="text/javascript" src="/blog/scrypt.js"></script>
<script type="text/javascript" src="/blog/sha256.js"></script>
<script type="text/javascript" src="/blog/decryptor.js"></script>
<link rel="stylesheet" type="text/css" href="/common.css">
<link rel="stylesheet" type="text/css" href="/panel.css">
<link rel="stylesheet" type="text/css" href="/theme0a.css" id="theme0a">
<link rel="stylesheet" type="text/css" href="/theme0b.css" id="theme0b">
<link rel="stylesheet" type="text/css" href="/theme1a.css" id="theme1a">
<link rel="stylesheet" type="text/css" href="/theme1b.css" id="theme1b">
<link rel="stylesheet" type="text/css" href="/theme2a.css" id="theme2a">
<link rel="stylesheet" type="text/css" href="/theme2b.css" id="theme2b">
<link rel="stylesheet" type="text/css" href="/theme3a.css" id="theme3a">
<link rel="stylesheet" type="text/css" href="/theme3b.css" id="theme3b">
<link rel="stylesheet" type="text/css" href="/blog/blogext.css">
<script>
function ol()
{
	window.onresize=function()
	{
		if(window.innerWidth<768)
		setupevents();
		else unsetevents();
	}
	window.onresize();
	_decryptonload();
}
function loadTheme(){
	var thm=document.cookie.replace(new RegExp("(?:(?:^|.*;\\s*)thm\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1");
	if(thm.length<2||'0123z'.indexOf(thm[0])==-1||'abz'.indexOf(thm[1])==-1)thm='zz';
	var ent="";
	var d=new Date();
	if(thm[0]=='z')
	{
		var m=d.getMonth()+1;
		if(m>=3&&m<6)thm='0'+thm[1];
		else if(m>=6&&m<9)thm='1'+thm[1];
		else if(m>=9&&m<12)thm='2'+thm[1];
		else thm='3'+thm[1];
	}
	if(thm[1]=='z')
	{if(d.getHours()>=18||d.getHours()<6)thm=thm[0]+'b';else thm=thm[0]+'a';}
	ent=`theme${thm}`;
	var R=new RegExp('theme[0-4][ab]');
	for(var i=0;i<document.styleSheets.length;++i)
	{
		if(R.exec(document.styleSheets[i].ownerNode.id)!==null&&document.styleSheets[i].ownerNode.id!=ent)
		document.styleSheets[i].disabled=true;
		else document.styleSheets[i].disabled=false;
	}
	var thmcolor="";
	switch(thm[0])
	{
		case '0':thmcolor=thm[1]=='a'?'#f59dda':'#2f0933';break;
		case '1':thmcolor=thm[1]=='a'?'#9df59d':'#090933';break;
		case '2':thmcolor=thm[1]=='a'?'#edb47b':'#1f1205';break;
		case '3':thmcolor=thm[1]=='a'?'#a0cdfa':'#051933';break;
	}
	document.querySelector("meta[name=theme-color]").setAttribute('content',thmcolor);
}
loadTheme();
</script>
</head>
<body onload="ol()" style="overflow-x:hidden;">
	<div id="panel" class="TText">
		<ul id="panellist">
			<li><a href="/"><h1>Chrisoft</h1></a></li>
			<li><a href="/blog"><h2>Blog</h2></a></li>
			<li><a href="#"><h3 id="title">First CCPC sightseeing tour</h3></a></li>
			<li><span>Tags</span>
			<ul id="tagslist">
			<li><a href="/blog/list/contest/">contest</a></li></ul>
			</li>
			<li id="tocouter">
				<span>Table of Contents</span>
				<ul id="tocroot">
				<li><a class="toctarg" href="#tocanch0">流水账</a></li><li><a class="toctarg" href="#tocanch1">非流水账部分</a></li><li><ul class="tocnode"><li><a class="toctarg" href="#tocanch2">关于这次比赛</a></li><li><a class="toctarg" href="#tocanch3">关于ACM和OI的联系</a></li><li><a class="toctarg" href="#tocanch4">「撕逼」和SDU对ACM的态度</a></li></ul></li></ul>
			</li>
			<li style="margin-left:-0.5em"><a id="prevp" href="2015-10-29.html">Prev post</a></li>
			<li style="margin-left:-0.5em"><a id="nextp" href="2015-10-31.html">Next post</a></li>
		</ul>
	</div>
	<div id="content">
		<h2 id="titleh" class="TText" style="font-wight:normal;">First CCPC sightseeing tour</h2>
		<div id="datetags" class="TText" style="margin-bottom:1em;">2015-10-30<br>#contest</div>
		<hr><div id="article" class="TText">
<article>
<reduced>本文讲述的是发生于2015-10-15~2015-10-20的事情。</reduced><br>
<reduced>如果您不愿意看流水账,请直接跳到「非流水账」部分</reduced><br>
<h2 id="tocanch0" class="tvis">流水账</h2>
  其实还得从军训期间的某一天说起……<br>
  那天计算机的辅导员把「有过信息学竞赛经验」的同学叫到一起开了个会,大致就是说有这么一个比赛,
今年刚开始办。虽然是国赛但是因为「没名气」<a id="n1" href="#note1" class="note">[1]</a>
,所以学校并不是十分重视<a id="n2" href="#note2" class="note">[2]</a>
,于是就要从大一里面选出一个队来参加。<br>
  选拔赛之前我在教学楼里迷路了(没找到3区的入口……),迟到了半个小时,最后竟然还迷迷糊糊地拿了Rank2……
(题目都是超级大水题……),然后就被抓去参加CCPC了……<br>
  我知道我所在的一个「神秘组织」(BKT)中有两个搞ACM的,FDU的jjy神犇没得到参赛机会(有点可惜),
然而「神秘的裙主」BL也要来CCPC<a id="n3" href="#note3" class="note">[3]</a>
,我就抱着一种「爆零也要面基」的想法确认参赛了。<br>
  作为一个懒蛋,选拔赛之后到比赛之前我根本没有去过ACM实验室,也没有好好刷过题什么的,
只是简单地找了找之前写代码的感觉……稀里糊涂地就混到了10月15号。。。<br>
  在火车上我才遇到了我队的队友——两只泰山学堂的大爷(然而他们两个并没有准备模板)。
学长还教了我们一种神奇的纸牌——UNO。。。(据说是一种坑队友的游戏,确实是这样<a id="n4" href="#note4" class="note">[4]</a>……)
然后在火车上我也没怎么休息,一直在偷听学长们的谈话……(关于对谈话内容的思考,请看非流水账部分)<br>
  颠了13小时之后终于到了南阳。第一届CCPC的承办学校是被誉为「二本中的小清华」<a id="n5" href="#note5" class="note">[5]</a>
的南阳理工学院——额,似乎比我们的中心校区要大(现在的二本学校就是这么厉害……)。<br>
  然后就是一串程序化流程了——领胸牌什么的。非常有趣的是本次比赛选手的队服是粉色的,<b>粉色的</b>!
同时我也看到了参赛队员名单。队名有不少非常奇葩的:什么「问我资磁不资磁」/「黑化肥发灰会挥发」之类……
名单里面除了上面提到的BL之外,我还发现了一位高中的学长,于是面基名单又加长了……<br>
  第一天(15号)晚上到第二天全天(16号)没有任何安排,于是就颓废了一天。为了获得一种「我们有模板!」
的安慰,16号晚上我手抄了8份模板……<br>
  十七号的热身赛,只有三道题目。第一题是道水二分,一开始是那位莱芜的爷爷写的,但是他调了十来分钟没过样例,
于是就找我来写……然后我用了十分钟多一点就A掉了。。。中间我们浪费了很多时间去想第三题,然而其实根本不会……
(虽然大致知道是dp+数学)第二题说是暴力,但是需要记忆化,由于我太2b就写了个L^3的裸暴力,
还以为能卡时过,结果就T了。。。然后加记忆化,还没加完3个小时就过去了……(jjy提醒的测测先返回T还是先返回WA也没测……)
结束后一看榜,发现好像卡线有铜牌,于是我们就天真地以为明天加强一下合作就真的能拿铜牌了……<br>
  一直到热身赛结束之前都没能见成BL。那位高中学长倒是见了一次,还是像两三年以前一样的受QAQ……
由于能自由支配的时间基本都过去了,面基似乎就要不了了之了,于是热身赛后的晚饭结束后,
跟队友扔下一句「在食堂楼下等我」就去找BL了。因为从前通过一个叫「左一是BL.png」的文件已经见过BL了,
而BL(包括BKT的其他成员)还从来没有见过我(现在的样子),所以我就按着BL给的坐标和左一是BL.png去找BL了……
当我接近BL的位置时,已经可以看出BL的激动程度爆表了……我十分清楚地记得BL说了一句「你就是……?」,
我的回应则是傻傻地把脖子上挂的胸牌翻过来给BL看……<a id="n6" href="#note6" class="note">[6]</a><br>
  晚上去围观泰山学堂大爷,发现那位来自莱芜的爷爷实在是太神了,<i><b>太!神!了!</b></i>
简单地讲就是<b>√编程 √Linux √编曲 √绘画 √有钱</b>(人家用的是<i>wacom平板电脑</i>……而且玩的东西普遍超极高端……)。<br>
  八点左右,BL来消息问能不能来我们宾馆再见一面,这么好的机会怎么能随意扔掉!于是我就(无视了晚上还要洗澡的事情)
同意了。过了十来分钟,BL到了。<strike>(BL真的是<b>太!萌!了!</b></strike>
我们愉♂悦地洽♂谈了一个多小时(BL语)。话题有很多,从BL的WP到学校搞ACM的情况都聊过。
嗯……我相信BL看到了一个真实世界的Chris,这也是我通过这次面基想要达到的……<a id="n7" href="#note7" class="note">[7]</a><br>
  第二天正式比赛,然而晚上还是没有好好睡一觉(标准结局),第二天就那么进了赛场……我们按照一般的思路开始浏览题目,
看完A题我就发现其实就是转转转,然后就开始写,写了不到一半,一只泰山学堂爷就跟我说「L题就是读入n输出2n+1!」这是我瞟了一眼
board,发现L题已经绿了一排了……于是就火速写掉了L题。然后A题也很快A掉了。H题就是4×4数独,一开始由我来写,结果dfs写的过于丑陋然后还WA了,
找了半天找不到错在哪,队友把我的dfs重写了一遍就A掉了……G题也是相当暴力的floodfill,我们队是莱芜的学堂爷
写的这道题,活生生写了200多行代码(他说他懒得写循环就把许多循环展开写了……),到最后我们都完全看不懂了。结果还WA了。。。
然后发现题目少读了一块,于是这位爷爷就把代码变成了300行然后A掉了这道题……D题是一道加了一点点额外的规定的背包,其实我们应该是写对了,
结果最后不知道是什么原因还是WA掉了。C题也是dp。标算是N^2的,我当时给写成了N^3的(没错,是我这个dp白痴写的),T掉了。
结果我们到最后还是没有人知道他们是如何优化成N^2的<a id="n8" href="#note8" class="note">[8]</a>。其他题我们根本没有尝试,
但是知道E题是缩点,K题和I题都是dp(到底有多少dp……),仅此而已……<br>
  以上大概就是我们这个临时组起来的队<a id="n9" href="#note9" class="note">[9]</a>的比赛历程。其实这次比赛还有一些比较有趣的事情,
比如:
<ul>
<li>我们前2.5h A了四道题,后2.5h A了零道题。</li>
<li>我们的学长在封榜之前一直被我们碾压,然而最后一小时A掉了两道题所以还是把我们虐了。</li>
<li>山东大学威海分校碾压了山东大学。</li>
<li>上海交大AK了。</li>
</ul>
  最后的结果就是我们差三四名铜牌(嗯,这次是卡线没铜牌),而我们的学长拿到了铜牌。其实也挺可惜的,我们当时以为没什么希望了就开始乱交G题H题,
结果最后竟然都A掉了……然后罚时就无法直视了2333333<br>
<h2 id="tocanch1" class="tvis">非流水账部分</h2>
<h4 id="tocanch2" class="tvis">关于这次比赛</h4>
  其实这次比赛基本就是来人家学校观光+刷经验(误)的,毕竟我们的ACM历程甚至还没有正式开始(因为我们还不是ACM实验室的成员)。<br>
  以前对ACM比赛的认识基本局限于「一道题不是全对就是全错」上。甚至连可以带模板都不了解。我问我的队友有没有准备模板的时候有一个还问我
「卧槽可以带模板?!」然后我们一个个比赛前又都没有刷题……各种直接或间接的原因就导致了后半场比赛一题也没做出来这样的惨状……
<h4 id="tocanch3" class="tvis">关于ACM和OI的联系</h4>
  这方面持经验论的人好像不少……甚至有「没搞过OI就不要搞ACM了」这样的言论。但是我对这种经验论是坚决反对的。<br>
  首先我承认我的OI搞的算是十分惨的了(如果不惨哪里还回来SDU这种学校)。我依然可以回忆起高中的时候一位位「零基础」大爷水平纷纷超过我的情景……<br>
  然后要拿出来的是一个在我们高中要被用烂的例子——某零基础选手一年拿NOI金牌的故事,长话短说——他的水平基本可以吊打山东所有往届选手。<br>
  有经验固然是好的,但是我认为主要还是看个人学习的欲望吧——有多少前OI选手大学之后根本没有去打ACM,而World Final赛场里面又有多少是有OI经验的选手呢?
<h4 id="tocanch4" class="tvis">「撕逼」和SDU对ACM的态度</h4>
  在火车上「偷听」到学长的谈话,似乎最近ACM实验室发生了什么「撕逼」事件。大致就是中心校区那边有两个大神从来不来这边训练,但是最后组队赛做的非常好,
然后辅导员说平时没来训练不准去比赛,最后演化成的一场撕逼大战……好像双方都闹得十分不愉快的样子。<br>
  其实这里面能折射出SDU对ACM的态度——其实SDU根本就不重视ACM。如果他们能够把各个校区的大神聚集起来,那么SDU绝对不是一个只进过两次WF的弱校。<br>
  然而领导层看重的是什么?请自行了解「山大博科本升专事件」……
</article>
</div><br><hr>
		<div class="TText" id="notediv" style="font-size:80%;"><span class="TText"><a id="note1" href="#n1">[1]</a>: 大概是不会有公司认然后增加就业率这样的吧……<br></span><span class="TText"><a id="note2" href="#n2">[2]</a>: 其实SDU本来就不重视ACM……<br></span><span class="TText"><a id="note3" href="#n3">[3]</a>: <a href="http://blog.blumia.net/2015/10/21/%E9%9D%A2%E5%9F%BA%E8%B5%9B%E8%B5%9B%E5%90%8E%E6%9C%89%E6%84%9F/">友情链接</a><br></span><span class="TText"><a id="note4" href="#n4">[4]</a>: 有一次我一下子被加了16张牌。<br></span><span class="TText"><a id="note5" href="#n5">[5]</a>: 来自某南阳同学。<br></span><span class="TText"><a id="note6" href="#n6">[6]</a>: 从这里大概可以看出当时是有多基♂动……<br></span><span class="TText"><a id="note7" href="#n7">[7]</a>: 同时这次面基还产生了「左一是BL右一是Chris.jpg」。<br></span><span class="TText"><a id="note8" href="#n8">[8]</a>: 我们好弱……<br></span><span class="TText"><a id="note9" href="#n9">[9]</a>: 我们在到火车站前都没有见过面说过话,感受一下。<br></span></div>
		<div id="insanch" style="height:3em;"></div>
		<div id="footer" style="">
		<div id="pagesw" class="TText" style="width:100%;height:0.5em;"></div>
			<div style="text-align:center;" class="TText">
				Proudly powered by SSBS <reduced style="font-size:70%;">(the static stupid blogging system)</reduced> 2.5
				<br>
				Content licensed under CC BY-SA 4.0. <span id="purgep" style="display:none;font-size:70%;">This page has passphrase(s) stored. Click <a href="javascript:_purgep()">here</a> to purge.</span>
			</div>
		</div>
		<div id="cmdbuf" class="TText" style="transition:500ms;padding:1em;font-size:2em;color:white;position:absolute;background-color:rgba(0,0,0,0.6);left:50%;top:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0;">
		</div>
	</div>
	<div id="decryptui" style="display:none;opacity:0;color:white;z-index:1000;position:fixed;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,0.4);transition:opacity 0.5s;">
		<div id="decryptdlg" class="TText" style="padding:10px 20px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-color:rgba(0,0,0,0.6);">
			<div id="keyhint" style="margin-bottom:8px;"></div>
			<div style="margin-bottom:8px;">Key: <input id="keyinp" type="text" style="color:#fff;"></div>
			<div style="height:2.25em;">
			<button id="btndecrypt" onclick="decryptor(decid,document.getElementById('keyinp').value);" style="position:absolute;left:20px;">Decrypt</button>
			<button onclick="hidedecryptui();" style="position:absolute;right:20px;">Cancel</button>
			</div>
		
	</div>


</div></body></html>