Codeforces Round #222 (Div. 2)
A. Playing with Dice time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Two players are playing a game. First each of them writes an integer from 1 to 6, and then a dice is thrown.
A. Playing with Dice
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
Two players are playing a game. First each of them writes an integer from 1 to 6, and then a dice is thrown. The player whose written number got closer to the number on the dice wins. If both payers have the same difference, it's a draw.
The first player wrote number a, the second player wrote number b. How many ways to throw a dice are there, at which the first player wins, or there is a draw, or the second player wins?
Input
The single line contains two integers a and b (1?≤?a,?b?≤?6) — the numbers written on the paper by the first and second player, correspondingly.
Output
Print three integers: the number of ways to throw the dice at which the first player wins, the game ends with a draw or the second player wins, correspondingly.
Sample test(s)
input
2 5
output
3 0 3
input
2 4
output
2 1 3
Note
The dice is a standard cube-shaped six-sided object with each side containing a number from 1 to 6, and where all numbers on all sides are distinct.
You can assume that number a is closer to number x than number b, if |a?-?x|?|b?-?x|.
A题:a,bi两个数字,扔一个色字,求分别与a,b求差的绝对值,谁小就谁赢,相等平局,输出情况。
水:
#include#include #include #include int a, b; int main() { int ans1 = 0, ans2 = 0, ans3 = 0; scanf("%d%d", &a, &b); for (int i = 1; i abs(b - i)) ans3++; } printf("%d %d %d\n", ans1, ans2, ans3); return 0; }
B题:随即1-k表示半决赛前k名直接晋级,剩下的人按时间排,贪心。
#include#include const int N = 100005; int n, a[N], b[N]; int an[N], bn[N]; void init() { scanf("%d", &n); memset(an, 0, sizeof(an)); memset(bn, 0, sizeof(bn)); for (int i = 0; i
C题:给定k步,要求填到只剩一块连接的空白。搜索题#include#include #include #define max(a,b) (a)>(b)?(a):(b) #define min(a,b) (a) b.v; } void init() { sum = 0; Max = 0; snum = 0; memset(p, 0, sizeof(p)); scanf("%d%d%d", &n, &m, &k); for (int i = 0; i = 0 && xx = 0 && yy = 0 && xx = 0 && yy
D题:m个bug每个bug有级别,n个人,每个人有级别和需求,现在总共有s个需求,求最少天数完成的方法,并且输出方案。思路:二分+贪心+优先队列优化
#include#include #include #include using namespace std; const int N = 100005; int n, m, s, a[N], ans[N]; struct S { int b, c, id; friend bool operator b.c; } } st[N]; struct B { int a, id; } bd[N]; int cmp(S a, S b) { return a.b > b.b; } int cmp1(B a, B b) { return a.a Q; for (int i = m - 1; i >= 0; i -= time) { while (st[sn].b >= bd[i].a && sn != n) {Q.push(st[sn++]);} if (Q.empty()) return false; S t = Q.top(); Q.pop(); if (ss = e; j--) { ans[bd[j].id] = t.id; } } return true; } bool judge(int time) { int ss = s, sn = 0; priority_queue Q; for (int i = m - 1; i >= 0; i -= time) { while (st[sn].b >= bd[i].a && sn != n) {Q.push(st[sn++]);} if (Q.empty()) return false; S t = Q.top(); Q.pop(); if (ssE题:dota2 进行 bp操作,每个英雄有一个能力值,玩家1,2分别进行b,p操作,每个玩家都尽量往好了取,要求最后能力值的差,
思路:dp+贪心+位运算,对于一个玩家进行pick时,肯定选能力值最大的,这是贪心。进行ban时。要把所有情况找出来。用dp的记忆化搜索。对于状态利用2进制的位运算。
代码:
#include#include #include #define min(a,b) (a)(b)?(a):(b) using namespace std; const int INF = 0x3f3f3f3f; const int MAXN = 1111111; const int N = 105; const int M = 25; int cmp(int a, int b) { return a > b; } int n, m, s[N], c[M], t[M], dp[MAXN], st; void init() { memset(dp, INF, sizeof(dp)); scanf("%d", &n); for (int i = 0; i
推荐阅读
-
Codeforces Round #222 (Div. 2)
-
Codeforces Round #435 (Div. 2)-B. Mahmoud and Ehab and the bipartiteness
-
Codeforces Round #157 (Div. 1) C. Little Elephant and LCM (数学、dp)
-
Codeforces Round #279 (Div. 2) 解题报告_html/css_WEB-ITnose
-
Codeforces Round #340 (Div. 2)-E-XOR and Favorite Number(莫队)
-
Codeforces Round #482 (Div. 2) D. Kuro and GCD and XOR and SUM(数学+01字典树)(好题)
-
Codeforces Round #553 (Div. 2) B. Dima and a Bad XOR(异或+思维)
-
Codeforces Round #246 (Div. 2) ?B. Football Kit_html/css_WEB-ITnose
-
Codeforces Round #261 (Div. 2)B. Pashmak and Flowers(容易)
-
Educational Codeforces Round 41 (Rated for Div. 2) E. Tufurama(树状数组+偏序)