問題はこちら
No.29 パワーアップ - yukicoder
まず各アイテムが何個あるか数える
同じアイテムが2個以上あれば2個で使うのが良いので
2個ずつ使っていって、余ったものをかき集めて4個使う
int main(){ int a[11]={},n,t,i,s; scanf("%d",&n); n*=3; while(n--){ scanf("%d",&t); a[t]++; } s=t=0; for(i=1;i<=10;i++){ s+=a[i]/2; t+=a[i]%2; } printf("%d",s+t/4); return 0; }
方針を変える
「アイテム4個でパワーアップ1回」を基本とみなし「同じアイテム2個で1回」というのを例外だとみなす
すると、「同じアイテムを2回目に手に入れると、それはアイテム3個分の効果がある」とみることができる
(1回目の1個分と合わせることでパワーアップ1回=アイテム4個分の価値)
ということで、あるアイテムの効用は入手回数の偶奇で違う
偶奇性ということはxor使えば良さそう
a[11],s;main(t){ for(gets(a);~scanf("%d",&t);s+=3-(a[t]^=2)); s=!printf("%d",s/4); }
最初の読み飛ばしができない…
81B