首页 > 代码库 > 联考8.5

联考8.5

day2的暴力分拿的还算稳,然而只会打暴力......

T1数论题, 30分暴力直接走人

T2很像一个DP,先打了暴力留着对拍,结果刚了两个小时毛都没写出来,暴力也萎了......

T3最小生成树啊,码完kruskal直接走人,后来才知道prim可以拿60分,我ri......

30+0+30=60

 

T1 挖掘机技术哪家强:

题目描述:

有人问现实中为什么总是男生追求女生,反过来很少。实际上女生也是想主 动追求男生的,但是世俗中对于主动追求男生的女生有种歧视,这样就使得女生 不大敢主动追求男生。但是面对喜欢的男生,难道就不出手么?女生只能步步为 营,挖坑来引诱男生往里跳。这时候问题就来了,挖掘机技术到底哪家强? 被热血沸腾的广告洗脑了若干天后,Matt 终于下定决心,毅然登上了开往 泉城的列车,决心寻找生活的希望。 来到布鲁谢特学院后,Matt 逐渐地了解了各种型号的挖掘机。在这里我们 可以认为有大挖掘机和小挖掘机两种。 今天 Matt 的任务很简单: 首先他要用大挖掘机挖出恰好 N 单位体积的砂土。 由于小挖掘机比较笨拙,它每次挖的砂土体积是固定的。也就是说,设每次挖 x 单位体积砂土,那么 N 需要被 x 整除。在挖出若干堆体积为 x 的砂土后,Matt 需要计算 x 的“难挖指数” 。体积 x 的“难挖指数”定义如下:对于某个不超过
x 的体积 y,如果 x 与 y 的最大公约数为 1,那我们认为体积 y 是“难挖的” ,x 的“难挖指数”就要加上 y。 由于 Matt 之后还需要用小挖掘机处理被大挖掘机挖出的砂土,他希望知道 所有可能的 x 的难挖指数的和,这样他好估算今天要干多久,不然作为布鲁谢特 的高才生,他出门要被笑话的。

T2 孤独一生

题目描述:

下课了,Polo 来到球场,但他到了之后才发现…..被放了飞机…… 无事可做的他决心找点乐子,比方说……跳台阶…… 球场边有 N 个台阶拍成一行,第 i 个台阶的高度是 Hi(0<Hi<=10^9),第 0 个台阶,也就是地面的高度为 0。 Polo 打算把这 N 个台阶分成两个集合 Sa,Sb(可 以为空) ,对于一个台阶集合 S={P1,P2,...P|S|},其中 P1<P2<...<P|S|,他需要花费 ∑|H_p_i-H_p_i-1|的体力值来完成。 现在他希望两次跳跃所需的总体力值最小,你能帮帮他吗?

 

50分暴力:

 1 #include<cstdio>
 2 #include<cstdlib>
 3 #include<cstring>
 4 #include<iostream>
 5 #include<cmath>
 6 #include<algorithm>
 7 #define ll long long
 8 using namespace std;
 9 
10 const int maxn = 5010;
11 
12 int n,h[maxn];
13 ll dp[maxn][maxn];
14 
15 int main() {
16   scanf("%d", &n);
17   for(int i=1; i<=n; i++) scanf("%d", &h[i]);
18   memset(dp,127/3,sizeof(dp));
19   dp[0][0]=0,dp[1][0]=dp[0][1]=h[1];
20   for(int i=0; i<=n; i++) {
21     for(int j=0; j<i-1; j++) {
22       dp[i][j]=dp[i-1][j]+1ll*abs(h[i]-h[i-1]);
23       dp[j][i]=dp[i][j];
24     }
25     for(int k=0; k<i-1; k++) {
26       dp[i][i-1]=min(dp[i][i-1],dp[k][i-1]+1ll*abs(h[i]-h[k]));
27       dp[i-1][i]=dp[i][i-1];
28     }
29   }
30   ll ans=1000000000000000;
31   for(int i=0; i<n; i++) {
32     ll res=min(dp[n][i],dp[i][n]);
33     ans=min(ans,res);
34   }
35   printf("%lld", ans);
36   return 0;
37 }


T3 地壳运动:

题目描述:

JZ 是一个坐落在地壳运动活跃的山区的城市,常受地质灾害的袭击。 城市中建立了 N 个应急避难所以躲避灾害,这些避难所从 1~N 编号。此外 有 M 条道路连接这些避难所,所有避难所间均可通过这 M 条道路直接或间接到 达。由于是在规划良好的市区,道路可以由若干个平行于 x 或 y 坐标轴的线段组 成,所以避难所 xi 和 yi 之间的道路可以用(ui,vi)来表示,道路的长度为 ui+vi。 由于地壳运动会导致地面拉伸或收缩, 可用两个实数k1,k2 描述城市的伸缩程度, 此时某条道路的实际长度变ui*k1+vi*k2。有若干个独立的询问,每次询问给 出 k1 和 k2,政府都希望在此地壳运动前提下,以最小的花费维护其中一些道路, 使得只用这些被维护的道路仍能使所有避难所间相互连通。 因为花费与道路的实 际总长成正比,所以你需要对每一次询问求出被维护道路的最短实际总长。

联考8.5