百度之星2020 初赛一 题解

1001 Drink:$\max\left\{\left\lceil\frac{m}{x}\right\rceil\cdot y\right\}$

 1 #include<cstdio>
 2 #include<algorithm>
 3 #define rep(i, l, r) for (int i = (l); i <= (r); i++)
 4 using namespace std;
 5 
 6 int T, n, m, x, y;
 7 
 8 int main(){
 9     freopen("drink.in", "r", stdin);
10     freopen("drink.out", "w", stdout);
11     for (scanf("%d", &T); T--; ) {
12         scanf("%d%d", &n, &m); int ans = 1e8;
13         rep(i, 1, n) scanf("%d%d", &x, &y), ans = min(ans, ((m - 1) / x + 1) * y);
14         printf("%d\n", ans);
15     }
16     return 0;
17 }
Drink

1002 GPA:模拟DP。

 1 #include<cstdio>
 2 #include<algorithm>
 3 #define rep(i, l, r) for (int i = (l); i <= (r); i++)
 4 using namespace std;
 5 
 6 int T, n;
 7 double f[500];
 8 
 9 double G(int x) {
10     if (x >= 95) return 4.3;
11     if (x >= 90) return 4.0;
12     if (x >= 85) return 3.7;
13     if (x >= 80) return 3.3;
14     if (x >= 75) return 3.0;
15     if (x >= 70) return 2.7;
16     if (x >= 67) return 2.3;
17     if (x >= 65) return 2.0;
18     if (x >= 62) return 1.7;
19     if (x >= 60) return 1.0;
20     return 0;
21 }
22 
23 int main(){
24     freopen("GPA.in", "r", stdin);
25     freopen("GPA.out", "w", stdout);
26     f[0]=0;
27     rep(i, 1, 400) rep(j, 1, min(i, 100))
28         f[i] = max(f[i], f[i - j] + G(j));
29     for (scanf("%d", &T); T--; )
30         scanf("%d", &n),printf("%.1lf\n", f[n]);
31     return 0;
32 }
GPA

1003 Dec:先打表。

 1 #include<cstdio>
 2 #include<algorithm>
 3 #define rep(i,l,r) for (int i=(l); i<=(r); i++)
 4 using namespace std;
 5 
 6 const int N=1050;
 7 int T,x,y,mp[N][N];
 8 
 9 int main(){
10     freopen("dec.in","r",stdin);
11     freopen("dec.out","w",stdout);
12     mp[1][1]=1;
13     rep(i,2,1000) rep(j,1,i)
14         mp[i][j]=(__gcd(i,j)==1)+max(mp[i-1][j],mp[i][j-1]);
15     for (scanf("%d",&T); T--; )
16         scanf("%d%d",&x,&y),printf("%d\n",mp[max(x,y)][min(x,y)]);
17     return 0;
18 }
Dec

1004 Civilization:枚举建立城市的位置,统计附近(曼哈顿距离3以内)各a值的点各有多少个,按a从高到低一次放居民,模拟即可。

 1 #include<cstdio>
 2 #include<algorithm>
 3 #define rep(i,l,r) for (int i=(l); i<=(r); i++)
 4 using namespace std;
 5 
 6 const int N=510;
 7 int T,n,x0,y0,ans,f[4],a[N][N];
 8 
 9 int main(){
10     freopen("1004.in","r",stdin);
11     freopen("1004.out","w",stdout);
12     for (scanf("%d",&T); T--; ){
13         scanf("%d%d%d",&n,&x0,&y0); ans=1e8;
14         rep(i,1,n) rep(j,1,n) scanf("%d",&a[i][j]);
15         rep(x,1,n) rep(y,1,n){
16             int sm=(abs(x-x0)+abs(y-y0)+1)/2,tot=0;
17             rep(i,x-3,x+3) rep(j,y-3,y+3)
18                 if (i>=1 && i<=n && j>=1 && j<=n && abs(i-x)+abs(j-y)<=3) f[a[i][j]]++;
19             int s=a[x][y]; f[s]--;
20             rep(k,1,8){
21                 int t=(8*k*k-tot-1)/s+1; sm+=t; tot+=t*s;
22                 if (f[3]) s+=3,f[3]--;
23                 else if (f[2]) s+=2,f[2]--;
24                     else if (f[1]) s+=1,f[1]--;
25             }
26             ans=min(ans,sm);
27         }
28         printf("%d\n",ans);
29     }
30     return 0;
31 }
civilization

1005 内层块长必定比外层短,故内层的一块至多与外层的一块相连,而外层则不一定,故若将每个黑块看成一个点,相邻两层的相连黑块之间连边,则构成一个森林。森林的连通块数=点数-边数。点数显然,考虑边数期望。

考虑外层的一个黑块,与内层某黑块相连的概率为$\frac{\frac{2\pi}{a_{i-1}}+\frac{2\pi}{a_{i}}}{2\pi}=\frac{1}{a_{i-1}}+\frac{1}{a_{i}}$,故相邻两层边数期望为$(\frac{1}{a_{i-1}}+\frac{1}{a_{i}})\cdot\frac{a_i}{2}\cdot\frac{a_{i-1}}{2}=\frac{a_i+a_{i-1}}{4}$。

最后答案化简为$\frac{a_1+a_n}{4}$

 1 #include<cstdio>
 2 #include<algorithm>
 3 #define rep(i,l,r) for (int i=(l); i<=(r); i++)
 4 typedef long long ll;
 5 using namespace std;
 6 
 7 const int N=1010,mod=1e9+7;
 8 int T,n,a[N];
 9 
10 int ksm(int a,int b){
11     int res=1;
12     for (; b; a=1ll*a*a%mod,b>>=1)
13         if (b & 1) res=1ll*res*a%mod;
14     return res;
15 }
16 
17 int main(){
18     freopen("rotate.in","r",stdin);
19     freopen("rotate.out","w",stdout);
20     for (scanf("%d",&T); T--; ){
21         scanf("%d",&n);
22         rep(i,1,n) scanf("%d",&a[i]);
23         printf("%lld\n",1ll*(a[1]+a[n])*ksm(4,mod-2)%mod);
24     }
25     return 0;
26 }
rotate

猜你喜欢

转载自www.cnblogs.com/HocRiser/p/13405966.html
今日推荐