AtCoder Beginner Contest 112
阿新 • • 發佈:2018-12-14
總結:前兩個題目做的很順暢,但是到了第三個與第四個題目,做起來就有一些吃力,雖然能明白題意,但是不能用程式語言表達出來,而且都是數學題目,有些題目需要找規律,做題時對這兩個題目沒有思路。
水題不解釋
#include<stdio.h> #include<stdlib.h> #include<iostream> #include<algorithm> #include<string.h> using namespace std; int main() { int n,a,b; scanf("%d",&n); if(n==1) printf("Hello World\n"); else { scanf("%d%d",&a,&b); printf("%d\n",a+b); } return 0; }
回家有N條路線,每一條路線都有一個所需要的時間 t 與花費 c,讓我們在規定時間內回到家並且所花費用最小。
#include<stdio.h> #include<stdlib.h> #include<iostream> #include<algorithm> #include<string.h> using namespace std; const int maxn=1010; struct Node { int c,t,value; }num[maxn]; bool compare(Node a, Node b) { return a.c<b.c; } int main() { int n,p; scanf("%d%d",&n,&p); for(int i=0;i<n;i++) { scanf("%d%d",&num[i].c,&num[i].t); } sort(num,num+n,compare); for(int i=0;i<n;i++) { if(num[i].t<=p) { printf("%d\n",num[i].c); break; } if(i==n-1 && num[i].t>p) { printf("TLE\n"); } } return 0; }
通過給出的金字塔的許多小座標和高度h,通過解線性方程來求出中心座標點和高度H,
對應的公式:H -( x - Cx )-( y - Cy )= h 其中x y h是題目中給出的,讓我們通過公式來求出Cx、Cy、H
#include<iostream> #include<cstdio> #include<algorithm> #include<cmath> using namespace std; int X[110],Y[110],H[110]; int G[110][110]; int main() { int N; cin >> N; for(int x = 0 ; x <= 100 ; x++) { for(int y = 0 ; y <= 100 ; y++) { G[x][y] = -1; } } for(int i = 0 ;i < N ; i++) { cin >> X[i] >> Y[i] >> H[i]; G[X[i]][Y[i]] = H[i]; } int ansx,ansy,ansh; for(int x = 0 ; x <= 100 ; x++) { for(int y = 0 ; y <= 100 ; y++) { if(G[x][y] == 0){ continue; } int h,ans = 0; // bool can = true; for(int i = 0 ; i < N ; i++) { if(H[i] == 0)continue; if(ans == 0){ ans = H[i] + abs(x-X[i]) + abs(y-Y[i]); } h = H[i] + abs(x-X[i]) + abs(y-Y[i]); if(h!=ans) { can = false; } } if(can) { for(int i = 0 ; i < N ; i++) { if(H[i] == 0) { if(h-abs(X[i]-x)-abs(Y[i]-y)>0) { can = false; } } } } if(can) { ansx = x; ansy = y; ansh = h; } } } cout<<ansx<<" "<<ansy<<" "<<ansh<<endl; return 0; }
n代表數字的個數,m代表這n個數字之和,給出n和m
來求這n個數字的最大公約數,並且這n個數字之和為m
#include <iostream>
#include <vector>
#include <algorithm>
#include <set>
#include <string>
#include <queue>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int main(){
int n, m;
scanf("%d%d",&n,&m);
int q = m/n;
int r = m%n;
// printf("q=%d r=%d\n",q,r);
for ( int i = q ; i >= 1 ; i-- )
if ( m%i == 0 ){
printf("%d\n",i);
return 0;
}
return 0;
}