Codeforces Round #265 (Div. 2)_html/css_WEB-ITnose

WBOY
Release: 2016-06-24 11:58:23
Original
816 people have browsed it

Codeforces Round #265 (Div. 2)

Question link

A: Just transform the numbers and compare the differences

B: More than 2 consecutive 0s As an operation, the 0 at the beginning and the 0 at the end can be ignored

C: Greedy construction from the end. Since it is guaranteed to be a palindrome at the beginning, it is guaranteed that the length of the palindrome after modification can only be 2 or 3. Yes, in this case the judgment complexity will be very small

D: Violently enumerate the situation, and then judge

E: Reverse the operation to process the number of digits and corresponding digits corresponding to each number , and then calculate the answer in for

Code:

A:

#include <cstdio>#include <cstring>int n, num[105], sb[105];char s[105];int main() {    scanf("%d", &n);    scanf("%s", s);    for (int i = 0; i < n; i++) {        num[i] = s[i] - '0';        sb[i] = num[i];    }    num[0]++;    for (int i = 0; i < n; i++) {        if (num[i] == 2) {            num[i] = 0;            num[i + 1]++;        }    }    int ans = 0;    for (int i = 0; i < n; i++)        if (sb[i] != num[i])            ans++;    printf("%d\n", ans);    return 0;}
Copy after login

B:

#include <cstdio>#include <cstring>const int N = 1005;int n, num[N];int solve() {	int ans = 0;	int s = 0, e = n - 1;	while (num[s] == 0 && s < n) s++;	while (num[e] == 0 && e >= 0) e--;	for (int i = s ; i <= e; i++) {		if (num[i] == num[i - 1] && num[i] == 0)			continue;		ans++;	}	return ans;}int main() {	scanf("%d", &n);	for (int i = 0; i < n; i++)		scanf("%d", &num[i]);	printf("%d\n", solve());	return 0;}
Copy after login

C:

#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int N = 1005;int n, p;char str[N];bool solve(int u) {	if (u < 0) return false;	str[u]++;	if (str[u] - 'a' == p) {		if (solve(u - 1)) {			str[u] = 'a' - 1;			return solve(u);		}	} else {		if (u - 1 >= 0 && str[u] == str[u - 1]) return solve(u);		if (u - 2 >= 0 && str[u] == str[u - 2]) return solve(u);		return true;	}}int main() {	scanf("%d%d", &n, &p);	scanf("%s", str);	if (solve(n - 1)) printf("%s\n", str);	else printf("NO\n");	return 0;}
Copy after login

D:

#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>#include <iostream>#include <set>using namespace std;struct Point {	int v[3];	void read() {		for (int i = 0; i < 3; i++)			scanf("%d", &v[i]);	}	bool operator == (const Point& c) const {		return (v[0] == c.v[0] && v[1] == c.v[1] && v[2] == c.v[2]);	}} p[10];typedef long long ll;ll dis(Point a, Point b) {	ll dx = a.v[0] - b.v[0];	ll dy = a.v[1] - b.v[1];	ll dz = a.v[2] - b.v[2];	return dx * dx + dy * dy + dz * dz;}ll d[10];bool judge() {	for (int i = 1; i < 8; i++)		for (int j = 0; j < i; j++) {			if (p[i] == p[j]) return false;		}	d[0] = 0;	for (int i = 1; i < 8; i++)		d[i] = dis(p[0], p[i]);	sort(d, d + 8);	ll a = d[1], b = d[4], c = d[7];	if (a != d[2] || a != d[3] || d[2] != d[3]) return false;	if (b != d[5] || b != d[6] || d[5] != d[6]) return false;	if (2 * a != b) return false;	if (a + b != c) return false;	return true;}bool dfs(int u) {	if (u == 8) {		if (judge())			return true;		return false;	}	sort(p[u].v, p[u].v + 3);	do {		if (dfs(u + 1)) return true;	} while (next_permutation(p[u].v, p[u].v + 3));	return false;}int main() {	for (int i = 0; i < 8; i++)		p[i].read();	if (!dfs(0)) printf("NO\n");	else {		printf("YES\n");		for (int i = 0; i < 8; i++)			printf("%d %d %d\n", p[i].v[0], p[i].v[1], p[i].v[2]);	}	return 0;}
Copy after login

E:

#include <cstdio>#include <cstring>#include <cmath>#include <vector>using namespace std;typedef long long ll;const ll MOD = 1000000007;const int N = 100005;char str[N], sss[N];int n;ll pow_mod(ll x, ll k) {    ll ans = 1;    while (k) {        if (k&1) ans = (ans * x) % MOD;        x = x * x % MOD;        k >>= 1;    }    return ans;}ll v[15], l[15];ll idx(char c) {    return c - '0';}struct State {    ll u;    vector<ll> v;    void init(char *str) {        int len = strlen(str);        u = idx(str[0]);        v.clear();        for (int i = 3; i < len; i++)            v.push_back(idx(str[i]));    }} s[N];int main() {    scanf("%s", str);    scanf("%d", &n);    for (int i = 0; i < n; i++) {        scanf("%s", sss);        s[i].init(sss);    }    for (int i = 0; i < 10; i++) {        v[i] = i;        l[i] = 1;    }    for (int i = n - 1; i >= 0; i--) {        ll lt = 0, vt = 0;        for (int j = 0; j < s[i].v.size(); j++) {            ll nu = s[i].v[j];            vt = (vt * pow_mod(10, l[nu]) % MOD + v[nu]) % MOD;            lt = (lt + l[nu]) % (MOD - 1);        }        v[s[i].u] = vt;        l[s[i].u] = lt;    }    ll ans = 0;    for (int i = 0; i < strlen(str); i++) {        ll nu = idx(str[i]);        ans = (ans * pow_mod(10, l[nu]) % MOD + v[nu]) % MOD;    }    printf("%lld\n", ans);    return 0;}
Copy after login


Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!