PKUできたゆたさん越え
1656
やるだけ
#include <cstdio> #include <cstring> int board[100][100]; void fill(int x, int y, int L, int c) { for (int i=y; i<y+L; i++) for (int j=x; j<x+L; j++) board[i][j] = c; } int main() { for (int i=0; i<100; i++) for (int j=0; j<100; j++) board[i][j] = 0; int t,x,y,L; scanf("%d",&t); char com[32]; for (int ix=0; ix<t; ix++) { scanf("%s%d%d%d",com,&x,&y,&L); x--; y--; if (strcmp(com,"WHITE")==0) { fill(x,y,L,0); } else if (strcmp(com,"BLACK")==0) { fill(x,y,L,1); } else { int res = 0; for (int i=y; i<y+L; i++) for (int j=x; j<x+L; j++) if (board[i][j] == 1) res++; printf("%d\n",res); } } }
1503
Javaゲー
import java.util.*; import java.math.*; import java.math.BigInteger.*; class Main { public static void main(String[] args) { Scanner std = new Scanner(System.in); BigInteger N, sum; sum = new BigInteger("0"); while (true) { N = std.nextBigInteger(); if (N.compareTo(new BigInteger("0"))==0) break; sum = sum.add(N); // System.out.println(sum+" "+N); } System.out.println(sum); } }
1663
規則性を見つけて完了
#include <cstdio> int main() { int N, x, y; scanf("%d", &N); for (int ix=0; ix<N; ix++) { scanf("%d%d",&x,&y); if (!(x==y)&&!(x-y==2)) { printf("No Number\n"); continue; } int res = 0; if (x == y) { for (int i=0; i<x; i++) { if (i%2 == 0) res++; else res += 3; } } else { res = 2; for (int i=0; i<x-2; i++) { if (i%2 == 0) res++; else res += 3; } } printf("%d\n", res); } }
1088
dp + dfs
#include <cstdio> #include <algorithm> using namespace std; int R, C; int map[100][100], dp[100][100]; int dx[] = {0,0,-1,1}; int dy[] = {-1,1,0,0}; int dfs(int x, int y, int cnt) { cnt++; int res = cnt; for (int i=0; i<4; i++) { int nx = dx[i]+x; int ny = dy[i]+y; if (nx<R&&nx>=0&&ny<C&&ny>=0&&map[nx][ny]<map[x][y]) { // printf("%d %d\n", map[nx][ny], map[x][y]); if (dp[nx][ny]!=-1) { res = max(res, cnt+dp[nx][ny]); } else { res = max(res, dfs(nx, ny, cnt)); } } } return res; } int main() { scanf("%d%d", &R, &C); for (int i=0; i<R; i++) { for (int j=0; j<C; j++) { scanf("%d", &map[i][j]); dp[i][j] = -1; } } int res = -1; for (int i=0; i<R; i++) { for (int j=0; j<C; j++) { dp[i][j] = dfs(i, j, 0); res = max(res, dp[i][j]); } } // for (int i=0; i<R; i++) { // for (int j=0; j<C; j++) printf("%d ", dp[i][j]); // printf("\n"); // } printf("%d\n", res); }
1978
シュミレーションするだけ
デッキが降順なのに注意
#include <cstdio> #include <cstring> int main() { int n, r, p, c; while (scanf("%d%d", &n, &r)) { if (n == 0 && r == 0) break; int deck[n]; for (int i=0; i<n; i++) deck[i] = n - i; for (int ix=0; ix<r; ix++) { scanf("%d%d", &p, &c); int temp[n]; memcpy(temp, deck, sizeof(deck)); for (int i=0; i<p-1; i++) { temp[i+c] = deck[i]; } for (int i=p-1; i<p+c-1; i++) { temp[i-p+1] = deck[i]; } memcpy(deck, temp, sizeof(temp)); // for (int i=0; i<n; i++) printf("%d ", deck[i]); // printf("\n"); } printf("%d\n", deck[0]); } return 0; }
ascenticism
notepad++が使いやすい