0

0

Codeforces Round #222 (Div. 2)

php中文网

php中文网

发布时间:2016-06-07 15:44:14

|

1300人浏览过

|

来源于php中文网

原创

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 <= 6; i ++) {
        if (abs(a - i) < abs(b - i)) ans1++;
        if (abs(a - i) == abs(b - i)) ans2++;
        if (abs(a - 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 < n; i ++)
        scanf("%d%d", &a[i], &b[i]);
}

void solve() {
    int l = 0, r = 0, i;
    for (i = 0; i < n / 2; i ++)
        an[i] = bn[i] = 1;
    for (i = 0; i < n; i ++) {
        if (a[l] < b[r]) {
            an[l++] = 1;
        }
        else {
            bn[r++] = 1;
        }
    }
    for (i = 0; i < n; i ++)
        printf("%d", an[i]);
    printf("\n");
    for (i = 0; i < n; i ++)
        printf("%d", bn[i]);
    printf("\n");
}

int main() {
    init();
    solve();
    return 0;
}

C题:给定k步,要求填到只剩一块连接的空白。搜索题
#include 
#include 
#include 
#define max(a,b) (a)>(b)?(a):(b)
#define min(a,b) (a)<(b)?(a):(b)
using namespace std;

const int N = 505;
const int d[4][2] = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};

char g[N][N];
int n, m, k, pn, sum, Max_v, Max, snum;
struct P {
    int x, y, v;
} p[N * N];

int cmp(P a, P b) {
    return a.v > 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 < n; i ++)
        scanf("%s", g[i]);
}

void dfs1(int x, int y) {
    g[x][y] = 'X'; p[pn].v++;
    for (int i = 0; i < 4; i ++) {
        int xx = x + d[i][0];
        int yy = y + d[i][1];
        if (xx >= 0 && xx < n && yy >= 0 && yy < m && g[xx][yy] == '.')
            dfs1(xx, yy);
    }
}

void dfs2(int x, int y) {
    if (snum == sum - k) {
        return;
    }
    g[x][y] = '.'; snum ++;
    for (int i = 0; i < 4; i ++) {
        int xx = x + d[i][0];
        int yy = y + d[i][1];
        if (xx >= 0 && xx < n && yy >= 0 && yy < m && g[xx][yy] == 'X')
            dfs2(xx, yy);
    }
}

void print() {
    for (int i = 0; i < n; i ++)
        printf("%s\n", g[i]);
}

void solve() {
    for (int i = 0; i < n; i ++)
        for (int j = 0; j < m; j ++) {
            if (g[i][j] == '.') {
                dfs1(i, j);
                sum += p[pn].v;
                if (Max < p[pn].v) {
                    Max_v = pn;
                    Max = p[pn].v;
                }
                p[pn].x = i; p[pn].y = j; pn++;
            }
        }
    dfs2(p[Max_v].x, p[Max_v].y);
    print();
}

int main() {
    init();
    solve();
    return 0;
}

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 < (S a, S b) {
        return a.c > 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 < b.a;
}

void init() {
    int i;
    scanf("%d%d%d", &n, &m, &s);
    for (i = 0; i < m; i ++) {
        scanf("%d", &bd[i].a);
        bd[i].id = i;
    }
    for (i = 0; i < n; i ++) {
        scanf("%d", &st[i].b);
        st[i].id = i;
    }
    for (i = 0; i < n; i ++)
        scanf("%d", &st[i].c);
    sort(bd, bd + m, cmp1);
    sort(st, st + n, cmp);
}

bool judge1(int time) {
    int ss = s, sn = 0;
    priority_queueQ;
    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 < t.c) return false;
        ss -= t.c;
        int e = i - time + 1;
        if (e < 0) e = 0;
        for (int j = i; j >= e; j--) {
            ans[bd[j].id] = t.id;
        }
    }
    return true;
}

bool judge(int time) {
    int ss = s, sn = 0;
    priority_queueQ;
    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 < t.c) return false;
        ss -= t.c;
    }
    return true;
}

void solve() {
    int l = 0, r = m;
    if (!judge(r)) {
        printf("NO\n"); return;
    }
    while (l < r) {
        int mid = (l + r) / 2;
        if (judge(mid)) r = mid;
        else l = mid + 1;
    }
    judge1(r);
    printf("YES\n");
    for (int i = 0; i < m - 1; i++)
        printf("%d ", ans[i] + 1);
    printf("%d\n", ans[m - 1] + 1);
}

int main() {
    init();
    solve();
    return 0;
}

E题:dota2 进行 bp操作,每个英雄有一个能力值,玩家1,2分别进行b,p操作,每个玩家都尽量往好了取,要求最后能力值的差,

Sora
Sora

Sora是OpenAI发布的一种文生视频AI大模型,可以根据文本指令创建现实和富有想象力的场景。

下载

思路:dp+贪心+位运算,对于一个玩家进行pick时,肯定选能力值最大的,这是贪心。进行ban时。要把所有情况找出来。用dp的记忆化搜索。对于状态利用2进制的位运算。

代码:

#include 
#include 
#include 
#define min(a,b) (a)<(b)?(a):(b)
#define max(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 < n; i++)
        scanf("%d", &s[i]);
    scanf("%d%*c", &m);
    for (int j = 0; j < m; j++)
        scanf("%c%*c%d%*c", &c[j], &t[j]);
}

int DP(int state, int num) {
    if (dp[state] != INF) return dp[state];
    int &ans = dp[state];
	ans = 0;
    if (c[num] == 'p') {
        int bit;
        for (bit = 0; bit < m; bit++)
            if ((state & (1<

相关专题

更多
php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

203

2025.12.31

php网站源码教程大全
php网站源码教程大全

本专题整合了php网站源码相关教程,阅读专题下面的文章了解更多详细内容。

111

2025.12.31

视频文件格式
视频文件格式

本专题整合了视频文件格式相关内容,阅读专题下面的文章了解更多详细内容。

124

2025.12.31

不受国内限制的浏览器大全
不受国内限制的浏览器大全

想找真正自由、无限制的上网体验?本合集精选2025年最开放、隐私强、访问无阻的浏览器App,涵盖Tor、Brave、Via、X浏览器、Mullvad等高自由度工具。支持自定义搜索引擎、广告拦截、隐身模式及全球网站无障碍访问,部分更具备防追踪、去谷歌化、双内核切换等高级功能。无论日常浏览、隐私保护还是突破地域限制,总有一款适合你!

93

2025.12.31

出现404解决方法大全
出现404解决方法大全

本专题整合了404错误解决方法大全,阅读专题下面的文章了解更多详细内容。

664

2025.12.31

html5怎么播放视频
html5怎么播放视频

想让网页流畅播放视频?本合集详解HTML5视频播放核心方法!涵盖<video>标签基础用法、多格式兼容(MP4/WebM/OGV)、自定义播放控件、响应式适配及常见浏览器兼容问题解决方案。无需插件,纯前端实现高清视频嵌入,助你快速打造现代化网页视频体验。

19

2025.12.31

关闭win10系统自动更新教程大全
关闭win10系统自动更新教程大全

本专题整合了关闭win10系统自动更新教程大全,阅读专题下面的文章了解更多详细内容。

15

2025.12.31

阻止电脑自动安装软件教程
阻止电脑自动安装软件教程

本专题整合了阻止电脑自动安装软件教程,阅读专题下面的文章了解更多详细教程。

6

2025.12.31

html5怎么使用
html5怎么使用

想快速上手HTML5开发?本合集为你整理最实用的HTML5使用指南!涵盖HTML5基础语法、主流框架(如Bootstrap、Vue、React)集成方法,以及无需安装、直接在线编辑运行的平台推荐(如CodePen、JSFiddle)。无论你是新手还是进阶开发者,都能轻松掌握HTML5网页制作、响应式布局与交互功能开发,零配置开启高效前端编程之旅!

3

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
JS轻松实现打地鼠游戏
JS轻松实现打地鼠游戏

共6课时 | 0.7万人学习

前端工程师必备技能—PS切图
前端工程师必备技能—PS切图

共11课时 | 1.9万人学习

JS开发验证表单教程
JS开发验证表单教程

共9课时 | 2.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号