読者です 読者をやめる 読者になる 読者になる

メモ

yukicoderで遊んでいる競プロゆるふわ勢

yukicoder No.29 パワーアップ

問題はこちら
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