codeforces补题 1.0

这篇具有很好参考价值的文章主要介绍了codeforces补题 1.0。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

B----https://codeforces.com/contest/1872/problem/B

翻译:

你位于一个无限延伸向右的走廊中,走廊被分割成方形的房间。你从房间1出发,前往房间k,然后返回房间1。你可以选择k的值。移动到相邻的房间需要1秒。

此外,走廊中有n个陷阱:第i个陷阱位于房间di,并且在你进入房间di后si秒后被激活。一旦陷阱被激活,你就不能进入或离开带有该陷阱的房间。

请确定允许你从房间1前往房间k,然后安全返回房间1的最大值k。

例如,如果n=1,d1=2,s1=2,你可以前往k=2的房间并安全返回(陷阱将在时刻1+s1=1+2=3激活,它不能阻止你返回)。但是如果你尝试到达k=3的房间,陷阱将在时刻1+s1=1+2=3激活,阻止你返回(你将在第3秒尝试进入房间2,在此时陷阱已激活会阻止你)。任何更大的k值也不可行。因此,答案是k=2。

输入

输入的第一行包含一个整数t(1≤t≤1000)- 测试用例的数量。

接下来是每个测试用例的描述。

每个测试用例描述的第一行包含一个整数n(1≤n≤100)- 陷阱的数量。

接下来的n行每行包含两个整数di和si(1≤di,si≤200)- 陷阱的参数(你必须在进入该房间后的si秒内严格离开房间di)。可能有多个陷阱位于同一个房间(di的值可能重复)。

思想:简单来说,就是要考虑折返时间,我自己的想法实在是太复杂,而且也没做对。看了大佬的做法,实在的言简意赅,orzorz。只需要求出最小的折返距离即可。

AC代码

#include <bits/stdc++.h>
using namespace std;

void solve() {
    int n;
    cin >> n;
    int ans = 1 << 30;//2^30,无穷大 
    for (int i = 0, x, y; i < n; ++i) {
        cin >> x >> y;
        int move;
        move = x + (y - 1) / 2;//计算这个房间能折返的最大距离 
        ans = min(ans, move);//选择最小的折返距离 
    }
    cout << ans << endl;
}

int main() {
    int t = 1;
    cin >> t;
    while (t--) {
        solve();
    }
}

E----Problem - E - Codeforces

翻译:

给出每个珊瑚的高度和最大的用水树,求出最大的墙的高度。

思想:我原来用的是一层一层的增加高度然后统计储水量,但最后TLE了。所以这题的话只能使用二分法的思想做。

AC代码

    #include <bits/stdc++.h>
    using namespace std;
    int main() {
        int t;
        cin >> t;
        for (int i = 0; i < t; i++) {
            int n, x;
            cin >> n >> x;
            vector<int> a(n);
            for (int j = 0; j < n; j++) {
                cin >> a[j];
            }
            long long tv = 0, fv = 4000000000;//fv选尽可能大的数就行
            while (fv - tv > 1) {
                long long mid = (tv + fv) / 2;
                long long sum = 0;
                for (int j = 0; j < n; j++) {
                    if(a[j]<mid) sum+=mid-a[j]; 
                }
                if (sum <= x) {
                    tv = mid;
                }
                else {
                    fv = mid;
                }
            }
            cout << tv << endl;
        }
    }

C---C - 321-like Searcher

翻译:输出第k个类似“321”这样的倒序数字

思想:使用位运算生成了所有可能的 321-like 数字,然后对它们进行排序,并输出第 K 小的数字。

AC代码

#include <bits/stdc++.h>
using namespace std;
int main() {
    int K;
    cin >> K;
    vector<long long> A;
    for (int i = 2; i < (1 << 10); i++) {
        long long x = 0;
        for (int j = 9; j >= 0; j--) {
            if ((i >> j & 1) == 1) {
                x = x * 10 + j;
            }
        }
        A.push_back(x);
    }
    sort(A.begin(), A.end());
    cout << A[K - 1] << endl;
}

蛇形填数 

AC代码文章来源地址https://www.toymoban.com/news/detail-700335.html

#define _CRT_SECURE_NO_WARNINGS
#include <bits/stdc++.h>  
using namespace std;
int dir[][2] = { {1,0},{0,-1},{-1,0},{0,1} };//顺时针方向

int main()
{
	int n;
	cin >> n;
	int board[30][30] = { 0 };
	int r = 1, c = n, d = 0;
	for (int i = 1; i <= n * n; i++) {
		board[r][c] = i;
		int tr = r + dir[d][0];//继续当前方向
		int tc = c + dir[d][1];
        //判断当前方向是否越界,如果越界则改变方向(d改变)
		if (tr > n || tr<1 || tc>n || tc < 1 || board[tr][tc]) d = (d + 1) % 4;
		r += dir[d][0];//继续向前走
		c += dir[d][1];
	}
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n; j++) {
			printf("%4d", board[i][j]);
		}
		if(i!=n) printf("\n");
	}
	return 0;
}

到了这里,关于codeforces补题 1.0的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 力扣第357场周赛补题

    6925. 故障键盘 - 力扣(LeetCode) 思路:模拟 6953. 判断是否能拆分数组 - 力扣(LeetCode) 思路:脑筋急转弯 2812. 找出最安全路径 - 力扣(LeetCode) 思路:多源bfs+倒序枚举+并查集

    2024年02月14日
    浏览(39)
  • leetcode第354场周赛补题

    6889. 特殊元素平方和 - 力扣(LeetCode) 思路:模拟 6929. 数组的最大美丽值 - 力扣(LeetCode) 思路:排序+双指针 6927. 合法分割的最小下标 - 力扣(LeetCode) 思路:哈希+枚举 6924. 最长合法子字符串的长度 - 力扣(LeetCode) 思路:哈希+双指针

    2024年02月16日
    浏览(38)
  • 2023 PTA天梯赛补题(L1 & L2)

    输入输出题 输入输出题 k == n 和 k == m 分别输出,题目怎么说就怎么做 判断一下c 等于a + b还是a*b或者都不是,分别按要求输出 针对每一群玩游戏的宝宝,枚举判断一下就好了 写的有点烦,基本就是一步一步模拟,思路在注释里写了 枚举分配方案,代码中a代表女生寝室的数

    2024年02月03日
    浏览(41)
  • [补题记录] Atcoder Beginner Contest 295(E)

    URL:https://atcoder.jp/contests/abc295 目录 E Problem/题意 Thought/思路 Code/代码 给定长度为 N 的数组 A。进行如下操作: 若 Ai = 0,将 Ai 等概率地变为 1 ~ M 中的任意一个数; 对 A 排序; 问第 K 个数地期望是多少。 概率 DP。(一开始想不明白这个公式,概率论白雪了) 设我们要求的

    2024年02月07日
    浏览(33)
  • 「蓝桥·算法双周赛」第一场公开赛【待补题填坑】

    给定四个字符,判断是否其中有三个相同,另一个与他们不同  二叉树性质问题,不了解二叉树也完全可以做。 要注意的是每次都从第一行的第一个点开始走,给一个字符串按照它走,输出最后的结果就行。 往左走坐标就变成了2*pos-1,往右就变成了2*pos 画个树理解一下就好

    2024年02月07日
    浏览(51)
  • CodeForces1061C Multiplicity

    从序列 ({a_1, a_2, .. , a_n}) 中选出 非空 子序列 ({b_1, b_2, .. , b_k}) ,一个子序列合法需要满足 (forall i in [1, k], i | b_i) 。求有多少互不相等的合法子序列,答案对 (10^9 + 7) 取模。 序列 ({1, 1}) 有 (2) 种选法得到子序列 ({1}) ,但 (1) 的来源不同,认为这

    2024年02月05日
    浏览(77)
  • codeforce 894

    题意: 给出n*m的矩阵,从左到右每列最多取一个字母,问能否取出\\\"vika\\\" 思路: 直接模拟。 题意: 假设有一个序列a1…an, 我们要根据题目给出的序列b1…bm猜出序列a1…an。b1…bm是这样来的: b1 == a1 遍历a2…an,如果发现 a i − 1 = a i {a_{i-1}=a_{i}} a i − 1 ​ = a i ​ ,则将 a i

    2024年02月11日
    浏览(34)
  • 「Codeforces」A. Reverse

    2022年2月15日15:29:19 题目描述 给一个长度为 n 序列, p 1 , p 2 , … , p n p_1, p_2, dots, p_n p 1 ​ , p 2 ​ , … , p n ​ 。选择两个整数,即一个区间 [ L , R ] [L, R] [ L , R ] ,对其区间进行反转操作。 要求你找到恰好执行一次反转操作获得的字典最小序列。 序列是一个数组,由 1 到

    2024年02月02日
    浏览(61)
  • Codeforces 918(div4)

    注意一下判断 是否为平方数的方法;也要记得开long long 正序写 讨论的情况比较多,所以选择倒叙看;

    2024年02月03日
    浏览(51)
  • CodeForces CF1846G 题解

    CodeForces题目链接 洛谷题目链接 标准答案是状压之后,转化成Dijkstra算法跑最短路。我这里提供一个不一样的思路。 主人公得了病,有部分类型的症状。所有类型症状共有 (n) 种,用长为 (n) 的01串表示是否有那种症状。共有 (m) 种药,吃第 (i) 种药需要花费时间 (t_i) ,

    2024年02月14日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包