2018寒假訓練新生輪R2

2021-08-15 02:22:03 字數 3679 閱讀 6238

a - magic wall

題意:給乙個n*m的矩陣,-1不用管,其他數都是0到9,告訴你每個數從i變成j花費多少,問把非1的數全換成1最小花費多少。

在花費矩陣上暴力跑floyd,然後加起來。

#include 

#include

#include

#include

using

namespace

std;

const

int inf=1005;

int e[100][100],h,w,x,ans;

int main()

}for(int k=0;k<=9;k++)

for(int i=0;i<=9;i++)

for(int j=0;j<=9;j++)

if(e[i][k]e[i][k]+e[k][j])

e[i][j]=e[i][k]+e[k][j];

for(int i=1;i<=h;i++)

}printf("%d",ans);

return

0;}

b - a weird buggy robot

題意:給乙個迷宮,從s走到e,『.』可以走,『#』不可以走,給你一串由0123表示的指令,問你有多少種0123分別表示上下左右的方式可以完成。

猛一看是個爆搜,但既然給你了走法,說明只需要判斷一下每種走法能不能完成即可,每種走法用stl中的next_permutation()函式遍歷0123的所有排列,然後遞迴判斷走法可不可行。講道理要不是打過這場cf這道題我真不一定做得出來。。。

#include 

#include

#include

#include

using

namespace

std;

int ans,sx,sy,ex,ey,n,m;

char s[110][110],p[110];

bool check(int x,int y,int num)

if(p[num]=='1')

if(p[num]=='2')

if(p[num]=='3')

}int main()

for(int i=1;i<=n;i++)

for(int j=1;j<=m;j++)

}scanf("%s",p);

char p1[110];

strcpy(p1,p);

char t[5]="0123";

do

if(check(sx,sy,0)) ans++;

}while(next_permutation(t,t+4));

printf("%d\n",ans);

return

0;}

c - fun equation

題意:給定n,要你給出滿足4⁄n=1⁄h+1⁄n+1⁄w的h,n,k,保證存在乙個h,n,k<=3500的方案。

這應該是最水的一道題,暴力1..3500迴圈h和n,然後k=(n*i*j)/(4*i*j-n*i-n*j)即可。看了學長的題解,n是偶數時可以優化,可以令h=n,n=n,k=n/2。還有。。。記得要用long long。

#include 

#include

#include

#include

#define ll long long

using namespace std;

int n;

int main()}}

return

0;}

d - matrix game

題意:給乙個01矩陣,從每列第乙個1(含第乙個)開始數min(k, n - i + 1)個元素,其中的1加起來,可以把任意多個1變成0,問最多得分,和得到這個得分的最少替換數。

這個題主要考讀題啊。。。看懂規則就逐列找1暴力就行,類似尺取法,有個記錄上次的1的位置,若這次更大就更新,然後把這個位置前面的1都刪了。

#include 

#include

#include

#include

using namespace std;

int n,m,k,a[110][110],ans1,ans2;

int main()

}for(int i=1;i<=m;i++)

if(t>now)}}

t=0;

for(int j=1;jif(a[j][i]==1) t++;

ans1+=now;

ans2+=t;

}printf("%d

%d",ans1,ans2);

return

0;}

e - online judgers

題意:先給n個字串,再給n個字串,問兩個裡相同的有多少。

嗯,用map一秒過,但是是多組輸入,這題目坑死算了。。。

#include 

#include

#include

#include

#include

#include

using

namespace

std;

map s;

string p;

int n,ans;

int main()

for(int i=1;i<=n;i++)

}printf("%d\n",ans);

}return

0;}

f - one in another

題意:給n個不同大小的盒子,把小的放到大的裡面,問最後最少剩幾個。

就暴力貪心,排個序基本就完了。

#include 

#include

#include

#include

#include

using

namespace

std;

int n,ans,a[5010];

int main()

sort(a+1,a+1+n);

int j=0;

while(j!=n)

}ans++;

}printf("%d",ans);

return

0;}

g - guess numbers

題意:猜數遊戲,不同的是你給數,系統給》=或者<,每次都合法就可。數在1..10^6之間。

第一次做互動題,還是很有趣的一種題的,這個明白意思就知道可以二分了,10^6還不到2^25,所以穩夠,每次都根據符號判斷二分即可,重在了解新題型。

#include 

#include

#include

#include

#include

#include

using

namespace

std;

char s[4];

int main()

if(s[0]=='<')

}printf("! %d\n",l);

fflush(stdout);

return

0;}

常州大學新生寒假訓練會試 (E,G,H)

中午忘了這個比賽,晚了兩個小時才打的,a了8題,感覺g題還不錯,g題是隊裡的taylorli大佬用taylor公式做出來的,orz。e題說是數學題,只能說是個高中數學題,h題明明按題意做就行不知為什麼大家都wa,可能卡到了什麼細節。e 這是乙個數學題 解析 對公式兩邊的階乘化簡的到公式 ai a0 ...

常州大學新生寒假訓練會試 A 新增逗號

對於乙個較大的整數 n 1 n 2,000,000,000 比如 980364535,我們常常需要一位一位數這個數字是幾位數,但是如果在這 個數字每三位加乙個逗號,它會變得更加易於朗讀。因此,這個數字加上逗號成如下的模樣 980,364,535請寫乙個程式幫她完成這件事情 一行乙個整數 n一行乙個字...

常州大學新生寒假訓練會試 H 酸鹼滴定 精度

有時候你會抱怨,什麼時候才能到終點。有時候你會迫不及待,怎麼顏色還不改變。滴定管長場的,我們的路長長的。用心的放入每一滴,終點就在你手心。今天小星需要去完成乙個酸鹼滴定實驗。實驗室老師要求用 a mol l 的hcl去測定一瓶naoh的濃度。首先小星取出了乙個錐形瓶,在裡面放入的bml的naoh,並...