あすせんてぃしずむ
めんどいのでコード添付のみ
3620
#include <cstdio> #include <algorithm> using namespace std; int d[4][2] = {{1,0},{-1,0},{0,1},{0,-1}}; int map[100][100]; int n,m,k; int dfs(int x, int y, int sz) { map[x][y]=0; sz++; int res=0; for (int i=0; i<4; i++) { int nx=x+d[i][0], ny=y+d[i][1]; if (nx>=0&&nx<n&&ny>=0&&ny<m&&map[nx][ny]) { sz = dfs(nx,ny,sz); } } return sz; } int main() { int r,c,i,j; scanf("%d%d%d",&n,&m,&k); for (i=0; i<n; i++) for (j=0; j<m; j++) map[i][j] = 0; for (i=0; i<k; i++) { scanf("%d%d",&r,&c); map[r-1][c-1] = 1; } int res=0; for (i=0; i<n; i++) for (j=0; j<m; j++) { if (map[i][j]) { res = max(dfs(i,j,0), res); } } printf("%d\n",res); }
3619
#include <cstdio> struct cow { int s,t,r; }; int n,k; cow c; int main() { scanf("%d%d",&n,&k); for (int i=0; i<k; i++) { scanf("%d%d%d",&c.s,&c.t,&c.r); int need=n/c.s; if (n%c.s) need++; int x=need/c.t; int y=need-x*c.t; int res=x*(c.t+c.r); if (y) res+=y; else res-=c.r; // printf("%d %d %d ",need,x,y); printf("%d\n",res); } } // need->ok // res-> x=need/c.t:=フルで必要とする回数 y=need-x*c.t:=あまりの時間 ⇒ res=x*(c.t+c.r)+y
3176
#include <cstdio> #include <algorithm> using namespace std; int main() { int n; scanf("%d",&n); int map[n][n]; for (int i=0; i<n; i++) for (int j=0; j<i+1; j++) scanf("%d",&map[i][j]); int dp[n][n]; for (int i=0; i<n; i++) for (int j=0; j<n; j++) dp[i][j]=0; dp[0][0]=map[0][0]; for (int i=1; i<n; i++) { dp[i][0]=map[i][0]+dp[i-1][0]; dp[i][i]=map[i][i]+dp[i-1][i-1]; for (int j=1; j<i; j++) { dp[i][j]=max(dp[i-1][j],dp[i-1][j-1])+map[i][j]; } } int res=0; for (int i=0; i<n; i++) res=max(res,dp[n-1][i]); printf("%d\n",res); }