メモ

yukicoderでゆるふわgolf

2017-01-01から1年間の記事一覧

yukicoder No.496 ワープクリスタル (給料日前編)

問題はこちら No.496 ワープクリスタル (給料日前編) - yukicoderDPやるだけ #define min(p,q)(p<q?p:q) d[110][110]; x,y,n,f,a,b,c,t; main(){ scanf("%d%d%d%d",&x,&y,&n,&k); //初期化 for(int p=0;p<=x;p++)for(int q=0;q<=y;q++)d[p][q]=(p+q)*f; while(n--){ scanf("%d%d%d",&a,&b,&c); //1度しか使えないので大きい方から配る for(int p=x;p>=a;p--)for(int q=y…</q?p:q)>

yukicoder No.495 (^^*) Easy

問題はこちら No.495 (^^*) Easy - yukicoder 5文字毎に区切って2文字目をチェックすれば十分 char s[1<<17]; l,r; main(i){ gets(s); for(i=1;s[i];i+=5){ if(s[i]=='^')l++; if(s[i]=='*')r++; } printf("%d %d",l,r); } ぎゅ char s[1<<17]; l,r; main(i)…

yukicoder No.494 yukicoder

問題はこちら No.494 yukicoder - yukicoder頭から順にチェックし、'?'が何番目か見れば良い char s[]="yukicoder"; main(){ for(int i=0;1;i++){ char x=getchar(); if(x=='?'){ putchar(s[i]); return 0; } } } "yukicoder?"から1文字足りないと考えると、…

yukicoder No.492 IOI数列

問題はこちら No.492 IOI数列 - yukicodermod 101010101010101010101の方は睨むと周期性がわかる(頭のなかで筆算を思い浮かべてみる)anは初項1公比100の等比数列の第n項までの和なので、和の公式からになっていることがわかる ということで繰り返し二乗法…

yukicoder No.490 yukiソート

問題はこちら No.490 yukiソート - yukicoder 制約が小さいので、問題文の指示通りに実装すれば良い。 以下ではO(n^2)より早い解法を考える。いくつか実験してみれば分かる通り、yukiソートをおこなうと「ほぼ」通常の昇順ソートになっていることがわかる。 …

yukicoder No.491 10^9+1と回文

問題はこちら No.491 10^9+1と回文 - yukicoders<10^9に対して、s*(10^9+1)は、文字列としては「s,(いくつかの0),sを連結したもの」と一致する これが回文数であることはsが回文数であることと同値 よって問題は「N/(10^9+1)以下の回文数の個数を求めよ」と…

yukicoder No.487 2017 Calculation(2017の計算)

問題はこちら No.487 2017 Calculation(2017の計算) - yukicodermodpow関数があればそれを使うだけ #define ll long long ll modpow(ll a,ll n,int m){return n?modpow(a%m*(a%m)%m,n/2,m)*(n&1?a%m:1)%m:1;} int main(){ int m; scanf("%d",&m); printf("%d…

yukicoder No.486 3 Straight Win(3連勝)

問題はこちら No.486 3 Straight Win(3連勝) - yukicoder strstr関数を使うのが一番素直だと思う #include <string.h> int main(){ char s[110],*x,*o; gets(s); x=strstr(s,"XXX"); o=strstr(s,"OOO"); if(x==NULL&&o==NULL)puts("NA");//どっちも見つからない else i</string.h>…

yukicoder No.485 方程式のお勉強

問題はこちら No.485 方程式のお勉強 - yukicoderやるだけ B%A==0のときかつそのときに限り整数解がある int main(){ int a,b; scanf("%d%d",&a,&b); if(b%a!=0)puts("NO"); else printf("%d",b/a); return 0; } ぎゅ a;main(b){scanf("%d%d",&a,&b);a=!prin…

yukicoder No.482 あなたの名は

問題はこちら No.482 あなたの名は - yukicoder「1~Nの置換が与えられたとき、その逆置換がちょうどK個の互換の積で書けるか判定せよ」という問題 まずは与えられた置換を最も少ない個数の互換の積で書くときの個数を考える これは先頭から順に貪欲に交換し…

yukicoder No.481 1から10

問題はこちら No.481 1から10 - yukicoder和を求めて55から引くのが一番簡単なように思う int main(){ int i,t,s=0; for(i=0;i<9;i++){ scanf("%d",&t); s+=t; } printf("%d",55-s); return 0; } 入力が昇順で与えられるので、1個ずつ読み取って、食い違いが…

yukicoder No.480 合計

問題はこちら No.480 合計 - yukicoder 和の公式を使う。Nが小さいので1~Nまでをそのまま足しても間に合う int main(){ int n; scanf("%d",&n); printf("%d",n*(n+1)/2); return 0; } ゴルフ的にも特に工夫の余地はなく n;main(){n=scanf("%d",&n)>printf("…

yukicoder No.424 立体迷路

問題はこちら No.424 立体迷路 - yukicoder標準的な迷路を解く問題にちょっとだけ条件が加わったもの。 素直なDFS/BFSで解ける。以下はDFS char s[99][99]; int a[99][99],h,w; //(x,y)に到達可能かをa[x][y]に保存 void f(int p,int q){ if(!a[p][q]){ a[p]…

yukicoder No.413 +5,000,000pts

問題はこちら No.413 +5,000,000pts - yukicoder余談 サンプル出力の数がどうみても日付なのだけど、何なのかわからず気になっているので、わかる方がいましたら教えてください(※以下は試行錯誤により解く過程を記したものです。ちゃんとした解説が読みたい…

yukicoder No.467 隠されていたゲーム

問題はこちら No.467 隠されていたゲーム - yukicoder対称性からx,yは0以上としてよい ・0手で移動可能⇔原点 ・1手で移動可能⇔チェビシェフ距離がdiのいずれかと等しい であることは明らか それ以外の場合を考える。d=max{di}とする (★)チェビシェフ距離がX…

yukicoder No.477 MVP

問題はこちら No.477 MVP - yukicoder(「N人が選挙権を持っている時、上位K位以内に入るには何票獲ればよいか」という問題と同値) 「上位K位以内に入る」⇔「自分より上にK人以上いる、ということはない」なので、N/(K+1)より真に大きなダメージを与えれば…

yukicoder No.476 正しくない平均

問題はこちら No.476 正しくない平均 - yukicoderやるだけ 入力が全て整数なので、平均×個数=合計 となっているかどうかで調べると、小数を使わずに済む 10^9*10=10^10>2^32なので32bitでは足りない事に注意(撃墜ケースも用意されている) int main(){ int…

yukicoder No.478 一般門松列列

問題はこちら No.478 一般門松列列 - yukicoder要するに「長さnの数列であって、その長さ3の連続部分列のうち、門松列でないものがちょうどk個であるようなもの」を答えれば良い サンプル3を眺めると、どうやら「1,3,2,4」を繰り返したものは必ず門松列列に…