みけCATのにっき(仮)
つれづれなるまゝに、日くらし、PCにむかひて、心に移りゆくよしなし事を、そこはかとなく書きつくれば、あやしうこそものぐるほしけれ。
(本当か!?)
出典

JOI予選。

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

JOI予選。

投稿記事 by みけCAT » 11年前

今年のJOI予選の解答が公開されました。
自分は、本番は模試があるので出られなかったのですが、解答が出たので少し解いてみました。

問題1

CODE:

#include 

int main(void) {
	int L,A,B,C,D;
	int need,need2;
	scanf("%d%d%d%d%d",&L,&A,&B,&C,&D);
	need=(A+C-1)/C;
	need2=(B+D-1)/D;
	if(need2>need)need=need2;
	printf("%d\n",L-need);
	return 0;
}
や る だ け

問題2

CODE:

#include 

int main(void) {
	int input[200][3];
	int N,i,j;
	scanf("%d",&N);
	for(i=0;i
#include 

int main(void) {
	int N;
	char mise_name[100];
	char old_board[200];
	int i,j,k;
	int count;
	int board_num;
	int board_length;
	int mise_length;
	int ok,nowok;
	scanf("%d",&N);
	scanf("%s",mise_name);
	mise_length=strlen(mise_name);
	count=0;
	for(board_num=0;board_num=board_length)break;
				nowok=1;
				for(k=0;k
#include 

int D,N;
int kion[200];
struct {
	int A,B,C;
} fuku[200];

int memo[210][110];

int tansaku(int day,int maxday,int prev_hade) {
	int result=0;
	int nowresult;
	int i;
	if(day>=maxday)return 0;
	if(memo[day][prev_hade]>0)return memo[day][prev_hade]-1;
	for(i=0;iresult)result=nowresult;
		}
	}
	memo[day][prev_hade]=result+1;
	return result;
}

int main(void) {
	int i;
	int result=0;
	int nowresult;
	scanf("%d%d",&D,&N);
	for(i=0;iresult)result=nowresult;
		}
	}
	printf("%d\n",result);
	return 0;
}
メモ化探索の実装をする代表的な例題。
派手さのメモを要素数100しか取らないと死亡してしまうので注意が必要。

問題5

CODE:

#include 

#define CP_X 0
#define CP_Y 1
#define CP_D 2

int N,K;
struct {
	int x1,y1,d1;
	int x2,y2,d2;
} fishes[50];

int cp_num[3]={0,0,0};
int cp[3][110];

void add_cp(int id,int num) {
	int i,pos;
	for(i=0;inum)break;
	}
	pos=i;
	for(i=cp_num[id];i>pos;i--)cp[id][i]=cp[id][i-1];
	cp[id][pos]=num;
	cp_num[id]++;
}

int get_cp(int id,int num) {
	int left,right,mid;
	left=0;right=cp_num[id]-1;
	while(left=K) {
					result+=
						(long long)(cp[CP_X][i+1]-cp[CP_X][i])*
						(long long)(cp[CP_Y][j+1]-cp[CP_Y][j])*
						(long long)(cp[CP_D][k+1]-cp[CP_D][k]);
				}
			}
		}
	}
	printf("%lld\n",result);
	return 0;
}
座標圧縮していもす法(の拡張版)。

問題6
考え中。
とりあえず愚直解を投げれば部分点は取れる?無理?無理そう?

おまけ
確認に使用したバッチファイル。

judge.bat

CODE:

@echo off
if "%1"=="" goto :usage

call judge_helper %1 1
call judge_helper %1 2
call judge_helper %1 3
call judge_helper %1 4
call judge_helper %1 5

goto :EOF
:usage
echo Usage: judge [task no]
judge_helper.bat

CODE:

@echo off
echo in%2
2013-yo-t%1  out\2013-yo-t%1-out%2.txt
diff -q 2013-yo-data\2013-yo-t%1-out%2.txt out\2013-yo-t%1-out%2.txt > NUL
if %ERRORLEVEL%==0 (
	echo Accepted
) else (
	echo Wrong Answer
)

コメントはまだありません。