CF-551:部分题目总结

时间:2022-08-29 18:13:31

题目链接:http://codeforces.com/contest/1153

A .Serval and Bus

pro:给出n种公交车的首班车时间和两班车之间的时间间隔,找t时间以后的第一辆车是第几种车

sol:对于每种车,找到t时间以后的第一班车的时间,计算这个时间和t的差距,然后找离t最近的

  • 暴力
    #include "bits/stdc++.h"
    using namespace std;
    const int MAXN = ;
    const int INF = 0x3f3f3f3f;
    int ans, k = INF;
    int main() {
    int n, t, a, b, c;
    scanf("%d%d", &n, &t);
    for (int i = ; i <= n; i++) {
    scanf("%d%d", &a, &b);
    if (a >= t) {
    c = a - t;
    } else {
    c = ((a - t) % b + b) % b;
    }
    if (c < k) {
    k = c;
    ans = i;
    }
    }
    printf("%d\n", ans);
    return ;
    }

    最后一个取余忘了,然后就被hack......甚是无语

B .Serval and Toy Bricks

pro:给出三视图每一列的高度,俯视图有点特殊,只有0或1,求俯视图每一格的高度

sol:结果不唯一,对于俯视图每一格,找到对应的左视图和前视图,取其中高度小的就必能配成正确的俯视图

  • 贪心
    #include "bits/stdc++.h"
    using namespace std;
    const int MAXN = ;
    int mp[MAXN][MAXN];
    int f[MAXN], l[MAXN];
    int main() {
    int n, m, k;
    scanf("%d%d%d", &n, &m, &k);
    for (int i = ; i <= m; i++)
    scanf("%d", &f[i]);
    for (int i = ; i <= n; i++)
    scanf("%d", &l[i]);
    for (int i = ; i <= n; i++) {
    for (int j = ; j <= m; j++) {
    scanf("%d", &mp[i][j]);
    if (mp[i][j]) mp[i][j] = min(f[j], l[i]);
    }
    }
    for (int i = ; i <= n; i++) {
    for (int j = ; j <= m; j++)
    printf("%d ", mp[i][j]);
    puts("");
    }
    return ;
    }

C .Serval and Parenthesis Sequence

pro:给出一个括号串,其中一部分被用'?'代替,补全括号串,使得括号串除自身以外每个前缀串都不是合法括号串,但是自身是合法括号串,若无法补全,输出":(";

sol:还是贪心,因为要补成合法括号串,所以左括号个数为(|s| / 2)个,从左往右扫,遇到'?'如果能补左括号就补左括号,补不了左括号再补右括号,如果还没到末尾就合法了,输出":(",如果到末尾还不是合法括号串,也输出":(",否则输出补好的串。CF贪心的题好多啊

  • 贪心
    #include "bits/stdc++.h"
    using namespace std;
    const int MAXN = 3e5 + ;
    char s[MAXN];
    int n, k, l;
    int main() {
    scanf("%d%s", &n, &s);
    k = n >> ;
    for (int i = ; i < n; i++)
    if (s[i] == '(') k--;
    for (int i = ; i < n; i++) {
    if (s[i] == '?') {
    if (k > ) {
    s[i] = '(';
    k--;
    } else {
    s[i] = ')';
    }
    }
    }
    for (int i = ; i < n - ; i++) {
    if (s[i] == '(') {
    l++;
    } else {
    l--;
    }
    if (l <= ) {
    puts(":(");
    return ;
    }
    }
    if (s[n - ] == ')') {
    l--;
    } else {
    l++;
    }
    if (l == ) {
    puts(s);
    } else {
    puts(":(");
    }
    return ;
    }

D . Serval and Rooted Tree

pro:给出一棵树,除叶子节点外每个节点有一个属性,0表示该节点的值等于子节点中最大值,1表示该节点的值等于子节点中最小值,将1到k填入k个子节点,使得根节点值最大。

sol:树形dp + dfs,dfs(i) 表示叶子节点的个数减去i节点的最大值,所以用叶子节点个数减dfs(i)就是i节点最大值,至于树形dp那一块,看代码应该能懂了。

  • 树形dp + 深度优先搜索 + 好像也有点贪心在里面吧
    #include "bits/stdc++.h"
    using namespace std;
    const int MAXN = 3e5 + ;
    const int INF = 0x3f3f3f3f;
    vector<int> v[MAXN];
    int arr[MAXN], val[MAXN];
    int leaf;
    int dfs(int k) {
    if (v[k].empty()) return ;
    if (arr[k] == ) {
    int mn = INF;
    for (int i = ; i < v[k].size(); i++)
    mn = min(mn, dfs(v[k][i]));
    return mn;
    } else {
    int sum = ;
    for (int i = ; i < v[k].size(); i++)
    sum += dfs(v[k][i]);
    return sum + v[k].size() - ;
    }
    }
    int main() {
    int n, k;
    scanf("%d", &n); leaf = n;
    for (int i = ; i <= n; i++)
    scanf("%d", &arr[i]);
    for (int i = ; i <= n; i++) {
    scanf("%d", &k);
    if (v[k].empty()) leaf--;
    v[k].push_back(i);
    }
    printf("%d\n", leaf - dfs());
    return ;
    }

    思路来源于今年蓝桥杯省赛的一道求雨题,不过这两题比赛当场都没能完成。都是比赛结束之后才想通的。继续努力

CF-551:部分题目总结的更多相关文章

  1. CF 551 E GukiZ and GukiZiana

    https://codeforces.com/contest/551/problem/E 分块真强. 题意就是1.区间加,2.询问整个区间中,最远的两个x的距离. 分块,然后,每次找位子用二分找即可. ...

  2. CF 551 D&period;Serval and Rooted Tree 树形DP

    传送门:http://codeforces.com/contest/1153/problem/D 思路: 这道题想了一天,突发奇想,就是维护每个点两个值,第几大和第几小,就可以有传递性了. #incl ...

  3. CF 题目选做

    写省选的题目对noip没什么大用 关键是 细节题或者是思考题比较重要 练思维自然是CF比较好了 把我见到的比较好的CF题放上来刷一刷. LINK:Complete the projects 就是说一个 ...

  4. CF 219D 树形DP

    CF 219D [题目链接]CF 219D [题目类型]树形DP &题意: 给一个n节点的有向无环图,要找一个这样的点:该点到其它n-1要逆转的道路最少,(边<u,v>,如果v要到 ...

  5. LeetCode:学生的出勤记录&vert;【551】

    LeetCode:学生的出勤记录|[551] 题目描述 给定一个字符串来代表一个学生的出勤纪录,这个纪录仅包含以下三个字符: 'A' : Absent,缺勤 'L' : Late,迟到 'P' : P ...

  6. 跟着xiaoxin巨巨做cf

    cf 385 C. Bear and Prime Numbers 题目大意:有一个数列{xi},每次给出一个询问[l, r],即问 S(l ,r)是l和r之间的素数,f(p)表示数列{xi}中整除p的 ...

  7. Codeforces Round &num;379 &lpar;Div&period; 2&rpar; 解题报告

    题目地址 本次CF是在今天早上深夜进行,上午有课就没有直接参加.今天早上上课坐到后排参加了virtual participation.这次CF前面的题目都非常的水,不到10分钟就轻松过了前两题,比较郁 ...

  8. 洛谷P3367 【模板】并查集

    P3367 [模板]并查集 293通过 551提交 题目提供者HansBug 标签 难度普及- 提交  讨论  题解 最新讨论 不知道哪错了 为啥通不过最后三个节点 题解 不懂为什么MLE 最后一个数 ...

  9. Miaomiao&&num;39&semi;s Geometry

    HDU 4932  Bestcoder Problem Description There are N point on X-axis . Miaomiao would like to cover t ...

  10. Codeforces Round &num;221 &lpar;Div&period; 2&rpar; C&period; Divisible by Seven&lpar;构造 大数除法 &rpar;

    上几次的一道cf题. 题目:http://codeforces.com/contest/376/problem/C 性质: (4)a与b的和除以c的余数(a.b两数除以c在没有余数的情况下除外),等于 ...

随机推荐

  1. Linux任务计划

    Linux任务计划: 一次性任务执行(at.batch): at:定时任务,指定一个时间执行一个任务,只能执行一次. at使用方式: 交互式:让用户在at>提示符输入多个要执行的命令: 批处理: ...

  2. 配置IIS&comma;Apache&comma;PHP过程中遇到的一些问题

    下载了eclipse的最新版本,并且添加了PHP插件.为了支持多语言,决定采用UTF-8编码.但是在开发的过程中,发现代码的自动提示帮助信息显示的是乱码,PHP源文件及注释,均正常.在网上查了很多资料 ...

  3. 讲解下for循环的用法,加深记忆

    引子 这是一段很简单的代码,但是即便是这么简单的东西,这里我们还是需要说一下. 关于for循环整个执行流程就是,先执行var i=10,然后到了第二个语句,判断10是否大于0,很明显为true,所以此 ...

  4. VS2008 安装后没有模板

    VS2008 安装过程没有任何报错  启动VS2008,新建项目时就成了这样,没有任何模板: 解决方法: 开始 –> 程序 –> Microsoft Visual Studio 2008– ...

  5. git学习笔记之一

    Git是比较优秀的分布式版本管理工具,这次学习了git的基本命令,现在作一些归纳总结,已备复习之用. Git 认识 Git 直接用hash值记录提交的修改文件的快照,本地操作无需联网 Git 有三种状 ...

  6. 【Unity游戏开发】Lua中的os&period;date和os&period;time函数

    一.简介 最近马三在工作中经常使用到了lua 中的 os.date( ) 和 os.time( )函数,不过使用的时候都是不得其解,一般都是看项目里面怎么用,然后我就模仿写一下.今天正好稍微有点空闲时 ...

  7. C&num; 知识特性 Attribute&comma;XMLSerialize&comma;

    C#知识--获取特性 Attribute 特性提供功能强大的方法,用以将元数据或声明信息与代码(程序集.类型.方法.属性等)相关联.特性与程序实体关联后,可在运行时使用“反射”查询特性,获取特性集合方 ...

  8. Scala学习之路 (八)Scala的隐式转换和隐式参数

    一.概念 Scala 2.10引入了一种叫做隐式类的新特性.隐式类指的是用implicit关键字修饰的类.在对应的作用域内,带有这个关键字的类的主构造函数可用于隐式转换. 隐式转换和隐式参数是Scal ...

  9. 本地hosts文件IP地址解析

    localhost是一个域名,127.0.0.1为IP地址.Windows系统中,约定127.0.0.1为本地IP地址.localhost是其对应的域名.配置是在hosts文件中设置的,Windows ...

  10. 要想有什么样的成就就要有什么样的眼光-SNF快速开发平台

    1.普通人的圈子,谈论的是闲事,赚的是 工资,想的是明天. 2.生意人的圈子,谈论的是项目,赚的是 利润,想的是下一年. 3.事业人的圈子,谈论的是机会,赚的是 财富,想到的是未来和保障. 4.智慧人 ...