Particle

競技プログラミングについての雑記

SRM 572

250

実験すると、oldpassword.size()-Kおきに同じになる必要があると分かるから、数える。

int minChange(string s, int K) {
		int n = s.size();
		int p = n-K,ans = 0;
		if(p>=K){//elseの方だけで十分
			for(int i = 0; i < K; i++){
				if(s[i]!=s[i+p])ans++;
			}
			return ans;
		}
		else {
			for(int i = 0; i < p; i++){
				int al[26] = {0},ct = 0;
				for(int j = i; j < n; j+=p){
					al[s[j]-'a']++;
					ct++;
				}
				sort(al,al+26);
				ans += ct-al[25];
			}
			return ans;
		}
 	}
	

500

DFSだと枝刈りしてもTLEしそうなので諦める(実際落ちてました)
半分全列挙するそうですが、たぶん書けません。

1000

Unopened

o-- 193.56 224th

1382 -> 1466