Codeforces Round #428 (Div. 2) A-C
A. Arya and Bran
水题
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <queue>
#include <vector>
#include <iomanip>
#include <math.h>
#include <map>
using namespace std;
#define FIN freopen("input.txt","r",stdin);
#define FOUT freopen("output.txt","w",stdout);
#define INF 0x3f3f3f3f
#define INFLL 0x3f3f3f3f3f3f3f
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
typedef long long LL;
typedef pair<int, int> PII;
using namespace std;
int n, k;
int a[105];
int main() {
//FIN
while(~scanf("%d%d", &n, &k)) {
for(int i = 1; i <= n; i++) scanf("%d", &a[i]);
int cnt = 0;
int i ;
int flag = 0;
for(i = 1; i <= n; i++) {
cnt += a[i];
if(cnt >= 8) cnt -= 8, k -= 8;
else k -= cnt, cnt = 0;
if(k <= 0) {
flag = 1;
break;
}
}
if(flag) printf("%d\n", i);
else puts("-1");
}
return 0;
}
B. Game of the Rows
要注意很多细节....WA了好多发
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <queue>
#include <vector>
#include <iomanip>
#include <math.h>
#include <map>
using namespace std;
#define FIN freopen("input.txt","r",stdin);
#define FOUT freopen("output.txt","w",stdout);
#define INF 0x3f3f3f3f
#define INFLL 0x3f3f3f3f3f3f3f
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
typedef long long LL;
typedef pair<int, int> PII;
using namespace std;
int n, k;
int a[105];
int b[10];
int main() {
//FIN
while(~scanf("%d%d", &n, &k)) {
memset(b, 0, sizeof(b));
for(int i = 1; i <= k; i++) {
scanf("%d", &a[i]);
int tmp = a[i];
b[4] += tmp / 4;
tmp %= 4;
b[2] += tmp / 2;
tmp %= 2;
b[1] += tmp;
}
//4
int k = b[4];
while(k--) {
n -= 1;
if(b[2] >= 2) b[2] -= 2;
else if(k > 0) k--;
else if(b[2] == 1 && b[1] >= 1) b[2] -= 1, b[1] -= 1;
else if(b[2] == 1 && b[1] == 0) b[2] -= 1;
else if(b[1] >= 2) b[1] -= 2;
else if(b[1] == 1) b[1] -= 1;
}
if(n < 0) {
printf("NO\n");
continue;
}
int for1 = n;
int for1n2 = n * 3;
//1and2
if(b[1] > n) b[1] -= n, for1 -= n;
else for1 -= b[1], b[1] = 0;
b[2] -= (for1 / 2);
int tmp = b[1] + b[2];
if(tmp <= for1n2) printf("YES\n");
else printf("NO\n");
}
return 0;
}
C. Journey
dfs途中保存路径长度
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <queue>
#include <vector>
#include <iomanip>
#include <math.h>
#include <map>
using namespace std;
#define FIN freopen("input.txt","r",stdin);
#define FOUT freopen("output.txt","w",stdout);
#define INF 0x3f3f3f3f
#define INFLL 0x3f3f3f3f3f3f3f
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
typedef long long LL;
typedef pair<int, int> PII;
using namespace std;
const int maxn = 200000 + 5;
int n;
vector<int> Vec[maxn];
double dfs(int st, int ed) {
int flag = 0;
double cnt = 0.0;
double sum = 0.0;
for(int i = 0; i < Vec[st].size(); i++) {
if(Vec[st][i] == ed) continue;
flag = 1;
cnt += 1.0;
sum += dfs(Vec[st][i], st);
}
if(flag) return 1.0 + sum / cnt;
else return 0;
}
int main() {
//FIN
scanf("%d", &n);
int st, ed;
for(int i = 1; i < n; i++) {
scanf("%d%d", &st, &ed);
Vec[st].push_back(ed);
Vec[ed].push_back(st);
}
printf("%.15lf\n", dfs(1, 0));
return 0;
}

浙公网安备 33010602011771号