首页 > 其他分享 >AT_abc312复盘

AT_abc312复盘

时间:2023-12-08 21:13:46浏览次数:30  
标签:code int abc312 mid 括号 using 复盘 dp

AT_abc312 复盘

A

一眼过去直接 \(if\) 秒了
AC code:

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

string s;

int main(){
    cin >> s;
    if (s == "ACE" || s == "BDF" || s == "CEG" || s == "DFA" || s == "EGB" || s == "FAC" || s == "GBD") cout << "Yes";
    else cout <<" No";
    return 0;
}

B

直接暴力枚举左上角的点,然后去判断整一个矩阵是否满足要求。
注意边界问题。
AC code:

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

int n, m;
string s[105];

bool check(int x, int y){
    for (int i = x; i <= x + 2; i++){
        for (int j = y; j <= y + 2; j++){
            if (s[i][j] == '.') return 0;
        }
    }
    for (int i = x; i <= x + 3; i++){
        if (s[i][y + 3] == '#') return 0;
    }
    for (int i = y; i <= y + 3; i++){
        if (s[x + 3][i] == '#') return 0;
    }
    for (int i = x + 6; i <= x + 8; i++){
        for (int j = y + 6; j <= y + 8; j++){
            if (s[i][j] == '.') return 0;
        }
    }
    for (int i = x + 5; i <= x + 8; i++){
        if (s[i][y + 5] == '#') return 0;
    }
    for (int i = y + 5; i <= y + 8; i++){
        if (s[x + 5][i] == '#') return 0;
    }
    return 1;
}

int main(){
    cin >> n >> m;
    for (int i = 0; i < n; i++) cin >> s[i];
    for (int i = 0; i <= n - 9; i++){
        for (int j = 0; j <= m - 9; j++){
            if (check(i, j)) cout << i + 1 << " " << j + 1 << endl;
        }
    }
    return 0;
}

C

一眼二分答案,直接二分最低的价格就好了,\(check\) 里面就写满足卖家的数量和买家的数量是否满足条件。
注意:二分的有边界要设为 \(10^{9} + 1\)。
AC code:

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

int n, m;
int a[200005], b[200005];

bool check(int mid){
    int cnt1 = 0, cnt2 = 0;
    for (int i = 1; i <= n; i++){
        if (a[i] <= mid) cnt1++;
    }
    for (int i = 1; i <= m; i++){
        if (b[i] >= mid) cnt2++;
    }
    return cnt1 >= cnt2;
}

signed main(){
    cin >> n >> m;
    for (int i = 1; i <= n; i++) cin >> a[i];
    for (int i = 1; i <= m; i++) cin >> b[i];
    int l = 1, r = 1e9 + 1;
    while (l < r){
        int mid = l + r >> 1;
        if (check(mid)) r = mid;
        else l = mid + 1;
    }
    cout << l << endl;
    return 0;
}

D

根据题面很容易想到用递归,由小的可以推出来大的,显然可以推出一个递推或者说 \(dp\) 式子。
不难想到可以用 \(dp_{i,j}\) 表示第 \(i\) 个数前面有 \(j\) 个右括号,其中最后答案为 \(dp_{n, n/2}\)。
转移方程就是分类讨论,?(),其中 ? 为左括号和右括号之和再模上 \(998244353\)。转移方程不难,只要想到当前情况是由这一个带右括号,或者不带右括号转移过来的就行了。
AC code:

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

const int mod = 998244353;
string s;
int dp[3005][3005];

int main(){
    cin >> s;
    s = ' ' + s;
    int len = s.size() - 1;
    if (len % 2 == 1) return cout << "0", 0;
    dp[0][0] = 1;
    for (int i = 1; i <= len; i++){
        for (int j = 0; j * 2 <= i; j++){
            if (s[i] == '?') dp[i][j] = ((j ? dp[i - 1][j - 1] : 0) + dp[i - 1][j]) % mod;
            else if (s[i] == '(') dp[i][j] = dp[i - 1][j];
            else dp[i][j] = j ? dp[i - 1][j - 1] : 0;
        }
    }
    cout << dp[len][len / 2];
    return 0;
}

标签:code,int,abc312,mid,括号,using,复盘,dp
From: https://www.cnblogs.com/ccf-ioi/p/17889032.html

相关文章

  • 【父子进程/AES/XTEA/SMC】赛后复盘
    官方wp:进程重影技术:进程重映像利用了Windows内核中的缓存同步问题,它会导致可执行文件的路径与从该可执行文件创建的映像节区所报告的路径不匹配。通过在一个诱饵路径上加载DLL,然后卸载它,然后从一个新路径加载它,许多WindowsAPI将返回旧路径。这可能可以欺骗安全产品,使其在错误......
  • 微信小程序使用canvas生成分享海报功能复盘
    前言近期需要开发一个微信小程序生成海报分享的功能。在h5一般都会直接采用html2canvas或者dom2image之类的库直接处理。但是由于小程序不具备传统意义的dom元素,所以也没有办法采用此类工具。所以就只能一笔一笔的用canvas画出来了,下面对实现这个功能中遇到的问题做一......
  • 红帽大赛决赛复盘
     1.基础命令(1)greproot/etc/passwd>/opt/grep.txt(2)date-s"2023-12-1215:20:54">/opt/time.txt#这题考试的时候就不会修改时间是date-s"日期(空格)时间【格式为2023-12-1215:20:54】(3)cd/tmpmvtest.txt/optmvtest.txtrhel-test.txtecho"Hell......
  • 2023CSP复赛/NOIP备战模拟赛复盘集合
    20231003CSP-J模拟赛复盘这次模拟赛考的特别差,只有160。T1:一上来,虽然不那么打卡,但也挺简单,然后五分钟写完,对了对样例,对了,走人。T2:需要在\(O(nlogn)\)或者\(O(n)\)的时间复杂度求出每一个区间被覆盖的区间,这要怎么求啊?我想了半天也只知道\(O(n^2)\)怎么做,然后发现一个小时......
  • 2023CSP初赛备战复盘合集
    NOIP2010提高组复盘整套卷子讲解:noip2010初赛提高组试题详解-Dijkstra·Liu-博客园_noip2010提高组初赛试题解析-豆丁网Docin原题:luogu本文部分内容参考来自以上链接。总结:这次的卷子比较难,考了67.5,全机房第2,cwzdalao拿到了68分%%%,他的运气逆天,蒙对了程序输出题。......
  • 2023.7信友队暑假集训第2次测试复盘
    信友队暑假集训第2次测试总结:本次比赛都出的以前做过的题,但本蒟蒻确只写了320(悲第一题:排行榜一道水题,秒A#include<bits/stdc++.h>usingnamespacestd;stringans[105],s[105],t[105];intvis[105];intmain(){intn;cin>>n;memset(vis,0,sizeofvis);......
  • 老知识复盘-SQL从提交到执行到底经历了什么
    一、什么是SQLsql(StructuredQueryLanguage:结构化查询语言)是高级的费过程化编程语言,允许用户在高层数据结构上工作,是一种数据查询和程序设计语言,也是(ANSI)的一项标准的计算机语言.but...目前仍然存在着许多不同版本的sql语言,为了与ANSI标准相兼容,它们必须以相似......
  • 如何做项目复盘?年薪百万的项目经理这样做!
    项目复盘是对阶段完成项目所做的回顾总结,对关键事件的分析,从而从过去的经历中总结经验教训,为新项目和工作的进行提供价值。项目复盘不仅仅是仪式感回顾,更是能让参与复盘的人员在各方面学习收获的总结。其实在各位项目经理整理日报周报的时候,就已经算是小型的简单复盘了,通过阶段的反......
  • NSSCTF Round#11 Basic 密码个人赛复盘
    [NSSRound#11Basic]ez_encABAABBBAABABAABBABABAABBABAAAABBABABABAAABAAABBAABBBBABBABBABBABABABAABBAABBABAAABBAABBBABABABAAAABBAAABABAABABBABBBABBAAABBBAABABAABBAAAABBBAAAABAABBBAABBABABAABABAAAAABBBBABAABBBBAAAABBBBBAB第一眼培根密码试了试但不对,观察长度发现应......
  • 【多校联考NOIP#12】比赛复盘
    A.星穹铁道读完题面就想到了\(O(n^2)\)的暴力。很好想,但是只有40分。观察到\(z_i=\pm1\),然而即便如此,我也没有得到有用的性质。(正解是用到这个性质的)然后我就暴力写了。正解的性质“最终在一个区间L,R内,初始也一定在一个连续段内”赛事没有想到。同时题解用了逆向思维,对......