しただけ。
sudo apt-get install apache2
ってそれだけ。
2011年12月27日火曜日
2011年12月24日土曜日
PCの自作に先立って昔買った無線LANアダプタをテスト
設定については完全にこのページを参考にしました。何が何だか分からない!
http://www37.atwiki.jp/linux_kai/pages/85.html
というわけで、問題なく動作したので、暫くはLANハブを購入する必要はなさそうです。
この冬やることが見つからない……
http://www37.atwiki.jp/linux_kai/pages/85.html
というわけで、問題なく動作したので、暫くはLANハブを購入する必要はなさそうです。
この冬やることが見つからない……
2011年12月19日月曜日
冬休みの宿題
冬休みにやること
1、蟻本を可能な限り進める。
2、哲学書的な書籍を1冊以上読む。
3、規則正しい生活を身につける。
4、ウェブアプリケーションとデータベースを学ぶ。
多分こんなもん。何かあったら追記しよう。
1、蟻本を可能な限り進める。
2、哲学書的な書籍を1冊以上読む。
3、規則正しい生活を身につける。
4、ウェブアプリケーションとデータベースを学ぶ。
多分こんなもん。何かあったら追記しよう。
2011年12月17日土曜日
練習問題の5問目
こんなん
#include<stdio.h>
#include<stdlib.h>
void input();
void output();
char fname[] = {"2012-pr-t5-in1.txt"};
char oname[] = {"1.txt"};
long n,ans;
int main(void){
int i;
long j;
for(i = 0; i < 5; i++){
ans = 3;
input();
for(j = 1; j < n; j++){
ans = ans * 3;
if(ans >= 100000){
ans = ans % 100000;
}
}
output();
fname[13]++;
oname[0]++;
}
}
void input(){
FILE *fp;
char inbuf[32];
if((fp = fopen(fname,"r")) == NULL){
printf("error\n");
exit(1);
}
fgets(inbuf,32,fp);
sscanf(inbuf,"%ld",&n);
fclose(fp);
}
void output(){
FILE *fp;
fp = fopen(oname,"w");
fprintf(fp,"%ld",ans);
fclose(fp);
}
もっとスマートに書きたい。
コメント文もつけたい。
#include<stdio.h>
#include<stdlib.h>
void input();
void output();
char fname[] = {"2012-pr-t5-in1.txt"};
char oname[] = {"1.txt"};
long n,ans;
int main(void){
int i;
long j;
for(i = 0; i < 5; i++){
ans = 3;
input();
for(j = 1; j < n; j++){
ans = ans * 3;
if(ans >= 100000){
ans = ans % 100000;
}
}
output();
fname[13]++;
oname[0]++;
}
}
void input(){
FILE *fp;
char inbuf[32];
if((fp = fopen(fname,"r")) == NULL){
printf("error\n");
exit(1);
}
fgets(inbuf,32,fp);
sscanf(inbuf,"%ld",&n);
fclose(fp);
}
void output(){
FILE *fp;
fp = fopen(oname,"w");
fprintf(fp,"%ld",ans);
fclose(fp);
}
もっとスマートに書きたい。
コメント文もつけたい。
AP 合格者の手記
午前得点 | 66.25点 |
---|---|
午後得点 | 70.00点 |
実は選択が
問1 | 経営戦略 |
問3 | 情報戦略 |
問7 | 組込みシステム開発 |
問9 | 情報セキュリティ |
問11 | ITサービスマネジメント |
問12 | システム監査 |
とりあえず合格できたから良かった。来年はデスペあたり挑みます。
2011年12月9日金曜日
クラスって何
今日学校でJavaをならったので、クラスを使ってみました。
C++で。
#include<iostream>
#include<queue>
#include<iomanip>
class Ctest{
private:
int i[10];
public:
void seti(int x, int n);
int geti(int x);
void reseti();
};
void Ctest::reseti(){
int j;
for(j = 0; j < 10; j++){
i[j] = 0;
}
}
int Ctest::geti(int x){
if(x > 9){
return 0;
}
return i[x];
}
void Ctest::seti(int x, int n){
i[n] = x;
}
int main(){
Ctest test;
std::queue<int> que;
int buf,n = 0;
test.reseti();
std::cin >> buf;
while(buf != 0){
que.push(buf);
std::cin >> std::dec >> buf;
}
while(que.size() != 0 && n < 10){
test.seti(que.front(), n);
que.pop();
n++;
}
n = 0;
while((buf = test.geti(n)) != 0 && n < 10){
std::cout << buf << std::endl;
n++;
}
}
なぜこんなものを作ったのかは分からない。
C++で。
#include<iostream>
#include<queue>
#include<iomanip>
class Ctest{
private:
int i[10];
public:
void seti(int x, int n);
int geti(int x);
void reseti();
};
void Ctest::reseti(){
int j;
for(j = 0; j < 10; j++){
i[j] = 0;
}
}
int Ctest::geti(int x){
if(x > 9){
return 0;
}
return i[x];
}
void Ctest::seti(int x, int n){
i[n] = x;
}
int main(){
Ctest test;
std::queue<int> que;
int buf,n = 0;
test.reseti();
std::cin >> buf;
while(buf != 0){
que.push(buf);
std::cin >> std::dec >> buf;
}
while(que.size() != 0 && n < 10){
test.seti(que.front(), n);
que.pop();
n++;
}
n = 0;
while((buf = test.geti(n)) != 0 && n < 10){
std::cout << buf << std::endl;
n++;
}
}
なぜこんなものを作ったのかは分からない。
2011年12月3日土曜日
JOI 予選 過去問 第8回 問題4
こんな感じになった。
void solve(int x,int y,int depth){
a[y][x] = 0;
if(a[y + 1][x] == 1){
solve(x,y + 1,depth + 1);
}
if(a[y - 1][x] == 1){
solve(x,y - 1,depth + 1);
}
if(a[y][x + 1] == 1){
solve(x + 1,y,depth + 1);
}
if(a[y][x - 1] == 1){
solve(x - 1,y,depth + 1);
}
a[y][x] = 1;
if(a[y + 1][x] + a[y - 1][x] + a[y][x - 1] + a[y][x - 1] == 0){
if(depth >= maxdepth){
maxdepth = depth + 1;
}
}
}
これでmain関数からx,yをそれぞれN,Mまで変えてsolve関数を呼び出します。
ってかコメント文まったくつけてないな……
void solve(int x,int y,int depth){
a[y][x] = 0;
if(a[y + 1][x] == 1){
solve(x,y + 1,depth + 1);
}
if(a[y - 1][x] == 1){
solve(x,y - 1,depth + 1);
}
if(a[y][x + 1] == 1){
solve(x + 1,y,depth + 1);
}
if(a[y][x - 1] == 1){
solve(x - 1,y,depth + 1);
}
a[y][x] = 1;
if(a[y + 1][x] + a[y - 1][x] + a[y][x - 1] + a[y][x - 1] == 0){
if(depth >= maxdepth){
maxdepth = depth + 1;
}
}
}
これでmain関数からx,yをそれぞれN,Mまで変えてsolve関数を呼び出します。
ってかコメント文まったくつけてないな……
BFS 幅優先探索
幅優先探索を使ってスタートからゴールまでの道のりを計算するらしい。
#include<stdio.h>
#include<queue>
typedef std::pair<int ,int> P;
int bfs();
const int INF = 500;
int sx = 1,sy = 0;
int gx = 8,gy = 9;
int d[10][10];
int dy[4] = {1,0,-1,0} , dx[4] = { 0,1,0,-1,};
int bfs(){
int i,j;
int nx,ny;
std::queue<P> que;
for(i = 0;i < 10;i++){
for(j = 0;j < 10;j++){
d[i][j] = INF;
}
}
que.push(P(sy,sx));
d[sy][sx] = 0;
while(que.size()){
P p = que.front();
que.pop();
if(p.first == gy && p.second == gx){
break;
}
for(i = 0;i < 4;i++){
ny = p.first + dy[i];
nx = p.second + dx[i];
if(0 <= ny && ny < N && 0 <= nx && nx < M && maze[ny][nx] != '#' && d[ny][nx] == INF){
que.push(P(ny,nx));
d[ny][nx] = d[p.first][p.second] + 1;
}
}
}
return d[gy][gx];
}
int main(void){
int ans;
ans = bfs();
printf("%d\n",ans);
for(int i = 0; i < 10; i++){
printf("%s\n",maze[i]);
}
return 0;
}
#include<stdio.h>
#include<queue>
typedef std::pair<int ,int> P;
int bfs();
const int INF = 500;
char maze[10][11] = {"#S######.#","......#..#",".#.##.##.#",".#........","##.##.####","....#....#",".#######.#","....#.....",
".####.###.","....#...G#"};
int N = 10,M = 10;int sx = 1,sy = 0;
int gx = 8,gy = 9;
int d[10][10];
int dy[4] = {1,0,-1,0} , dx[4] = { 0,1,0,-1,};
int bfs(){
int i,j;
int nx,ny;
std::queue<P> que;
for(i = 0;i < 10;i++){
for(j = 0;j < 10;j++){
d[i][j] = INF;
}
}
que.push(P(sy,sx));
d[sy][sx] = 0;
while(que.size()){
P p = que.front();
que.pop();
if(p.first == gy && p.second == gx){
break;
}
for(i = 0;i < 4;i++){
ny = p.first + dy[i];
nx = p.second + dx[i];
if(0 <= ny && ny < N && 0 <= nx && nx < M && maze[ny][nx] != '#' && d[ny][nx] == INF){
que.push(P(ny,nx));
d[ny][nx] = d[p.first][p.second] + 1;
}
}
}
return d[gy][gx];
}
int main(void){
int ans;
ans = bfs();
printf("%d\n",ans);
for(int i = 0; i < 10; i++){
printf("%s\n",maze[i]);
}
return 0;
}
2011年12月1日木曜日
できた件について
計算結果をメモする配列をlong long int型にしたら出来ました。
そりゃこれだけ大きい値が収まるわけないよね。
//入力
long long int dp[N][21];
int a[N];
//回答
void solve(){
int i,j;
dp[0][a[0]] = 1;
for (i = 0; i <= n-2; i++){
for(j = 0; j <= 20; j++){
if(j - a[i] >= 0){
dp[i][j] += dp[i - 1][j - a[i]];
}
if(j + a[i] <= 20){
dp[i][j] += dp[i - 1][j + a[i]];
}
}
}
printf("%llu\n",dp[n - 2][a[n - 1]]);
}
とりあえずメモ化再帰からループに。メモ化再帰の方でも多分問題なく解けると思うけど。
本番でこういう単純なことに気づかなかったら怖いな…
そりゃこれだけ大きい値が収まるわけないよね。
//入力
long long int dp[N][21];
int a[N];
//回答
void solve(){
int i,j;
dp[0][a[0]] = 1;
for (i = 0; i <= n-2; i++){
for(j = 0; j <= 20; j++){
if(j - a[i] >= 0){
dp[i][j] += dp[i - 1][j - a[i]];
}
if(j + a[i] <= 20){
dp[i][j] += dp[i - 1][j + a[i]];
}
}
}
printf("%llu\n",dp[n - 2][a[n - 1]]);
}
とりあえずメモ化再帰からループに。メモ化再帰の方でも多分問題なく解けると思うけど。
本番でこういう単純なことに気づかなかったら怖いな…
登録:
投稿 (Atom)