1 題目一 小q系列故事——最佳裁判
這道題就是找最大值和最小值的題目,學過c的應該都沒問題的。
2 題目二 小明系列問題——小明序列
這道題目是最長上公升子串行的一種變形吧,就是子串行中相鄰數的下標之差必須大於d(開始看錯題目,以為是相鄰數之差大於d,結果wa了好多次,最後看了別人的discuss才恍然大悟啊!)。用二分查詢在子串行中要替換的位置,注意在處理第i個數時,才更新第i-d個數在子串行中的位置就行了,而不是原來更新第i個數在子串行中的位置。
1 #include 23#define inifite 100000000
4int
n, d ;
5int data[100005];6
int stack[100005];7
int dp[100005];8
inttop;910
int find(int x, int
len)
1122
return
left;23}
24int main(void)25
44 ans = 0;45
for (i = 0; i < n; i ++)
46if (dp[i] >ans)
47 ans =dp[i];
48 printf("
%d\n
", ans + 1
);49}50
return0;
51 }
3 題目三 湫湫系列故事——過年回家
這道題目初看沒什麼頭緒,後來認真分析發現其實就是一道求單源最短路徑的問題,只是要求兩次,一次是坐臥鋪的,一次是做硬座的,求最小不適應度。
1 #include 2 #include3 #include 4
5#define infinite 4000000
6int
q, n, t, d1, d2, a, b;
7int position[201][201];8
int k[205][205][2];9
int path[10005
];10
char strdata[10005
];11
int ans[205
];12
1314
intget_path()
1531
else
32 node[count ++] =strdata[i];
33 i ++;34}
35 node[count] = 0
;36 path[pathlen ++] =atoi(node);
37return
pathlen;38}
39void dijkstra(int
s)40
48 flag[s] = 1
;49 ans[i] = 0;50
for (i = 1; i < n; i ++)
5159
if (infinite ==min)
60break
;61 flag[k] = 1;62
for (j = 1; j <= n; j ++)
63if (!flag[j] && ans[k] + position[k][j] 64 ans[j] = ans[k] +position[k][j];65}
66}67int main(void)68
83 scanf("
%d%d
", &d1, &d2);
84 scanf("
%d%d
", &a, &b);
8586
//坐臥鋪
87for (ii = 1; ii <= n; ii ++)
88for (j = 1; j <= n; j ++)
89if (1 == k[ii][j][1
])90 position[ii][j] =d2;
91else
92 position[ii][j] =infinite;
93dijkstra(a);
94 temp =ans[b];
95 memset(position, infinite, sizeof
(position));
96//
坐臥鋪97
for (ii = 1; ii <= n; ii ++)
98for (j = 1; j <= n; j ++)
99if (1 == k[ii][j][0] || 1 == k[ii][j][1
])100 position[ii][j] =d1;
101else
102 position[ii][j] =infinite;
103dijkstra(a);
104if (temp >ans[b])
105 temp =ans[b];
106if (infinite ==temp)
107 printf("
-1\n");
108else
109 printf("
%d\n
", temp);
110}
111return0;
112 }
4 題目四 威威貓系列故事——過生日
這道題只要滿足n + p >= m,n表示切前的多邊形的邊數,p表示切的刀數,m表示要切成的多邊形的邊數。但由於n,m,p要滿足下列條件:
3 <= n <= 10^100
0 < m <= 10^100
0 <= p <= 10^100
所以這道題實際是乙個大整數加減法的問題。
1 #include 2 #include 34char n[102], m[102], p[102];5
int ni[103], mi[103], pi[103];6
7int main(void)8
28 lenp =strlen(p);
29for (i = lenp - 1; i >= 0; i --)
30 pi[(lenp - 1) - i] = p[i] - '0'
;31if (lenn >maxlen)
32 maxlen =lenn;
33if (lenp >maxlen)
34 maxlen =lenp;
35for (i = 0; i < maxlen; i ++)
3641
if(ni[i])
42 maxlen ++;
43if (lenm >maxlen)
44 printf("
no\n");
45else
if (lenm 4652
else
5363
else
if (ni[i] 6468
if (i < 0
)69 printf("
yes\n");
70}71}
72return0;
73 }
5 題目五 鄭廠長系列故事——逃離迷宮
這道題目直接用模擬,從左到右依次消掉箱子,如果不能消完,就失敗了,否則就成功。
1 #include 23long data[1000001];4
int main(void)5
23if (j <= n - 1 || data[n] != 0
)24 printf("
i will never go out t_t\n");
25else
26 printf("
yeah~ i escaped ^_^\n");
27}28return0;
29 }
2013騰訊程式設計馬拉松初賽(3月20日)
1 第一題 小q系列故事 屌絲的逆襲 表示這道題基本沒什麼演算法,學過計算機語言的應該都能搞定吧。2 第二題 小明系列故事 買年貨 這道題直接用01揹包問題就可以解決了,只是除了錢的限制,還有積分的限制和免費的情況,就是這點在除錯程式的時候出了點小問題,總是wa。狀態可以定義為dp x y z x表...
2013騰訊馬拉松程式設計初賽3月21日1001
1001 小q 系列故事 電梯裡的愛情 time limit 0.1seconds memory limit 65536k 電梯其實是個很曖昧的地方,只有在電梯裡,小q才有勇氣如此近距離接近女神,雖然覺得有點不自在,但次數多了,女神也習慣了小 的存在,甚至熟悉到彷彿不說上句話自己也都覺得不合適了。可...
2013騰訊程式設計馬拉松初賽 鄭廠長系列故事 體檢
鄭廠長系列故事 體檢 time limit 1.0 seconds memory limit 32768k 鄭廠長不是正廠長 也不是副廠長 他根本就不是廠長 只是公司的乙個碼農 這次總共有n位員工接受體檢,並且每個員工都需要做k 個專案的檢查才算完成整個體檢的流程。現在來了 m個醫生為員工做身體檢查...