首页 > 其他分享 >CSP-J 2023第二轮游记

CSP-J 2023第二轮游记

时间:2024-08-05 19:05:28浏览次数:9  
标签:cur int texttt long mp 2023 游记 now CSP

Day X

做了一次模拟赛,考得都很烂,有几次都没有上\(~200~\)。
听说赛前模拟赛发挥失常RP++?

Day 1

7:30

考点就在SCZ,离家不远,但是仍然开车到达考点,在考场边排好队等待,遇到许多大佬,倍感压力,赶紧膜拜以吸收RP。

8:00

进入机房,找到自己的机位,试机。啥都没写出来,随便打几个板子,结果发现自己背的快读有问题,应该是太紧张了:(

8:30

下发密码了,但是木有第一时间看到,过了2分钟才反应过来,打开题目。

8:40

\(\texttt{T1}~\texttt{100pts}\)

第一题好像很简单的样子,一眼就是\(~O(log_3^n)~\)的算法。10分钟切掉,样例和大样例一遍过。代码如下:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int n, ans1, ans2;
bool flag = false;
int main()
{
    freopen("apple.in", "r", stdin);
    freopen("apple.out", "w", stdout);
    cin >> n;
    while(n)
    {
        ans1 ++;
        if((n - 1) % 3 == 0 && !flag) ans2 = ans1, flag = true;
        n -= 1 + (n - 1) / 3;
    }
    cout << ans1 << " " << ans2;
    return 0;
}

9:00

\(\texttt{T2}~\texttt{50pts}\)

第二题一眼DP,推了一会儿发现超时,第二眼贪心,改了半天发现没写前缀和。代码如下:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll len[100010], ans;
int n, d, tmp, pay[100010], now, pre;
int main()
{
    freopen("road.in", "r", stdin);
    freopen("road.out", "w", stdout);
    cin >> n >> d;
    for(int i = 1; i < n; i ++) cin >> len[i], len[i] += len[i - 1];
    for(int i = 1; i <= n; i ++) cin >> pay[i];
    pre = pay[1];
    for(int i = 2; i <= n; i ++)
    {
        tmp = (ceil((len[i - 1] - now) * 1.0 / d));
        now += tmp * d, ans += pre * tmp, pre = min(pre, pay[i]);
    }
    cout << ans;
    return 0;
}

样例大样例一遍过,以为第二题\(~\texttt{AC}~\)了结果\(~\texttt{WA}~\)掉了。

11:00

\(\texttt{T3}~\texttt{100pts}\)

第三题一眼大模拟,开干。

写了半天发现就是调不对,结果是化简根号时有问题。

样例过了,大样例发现当\(~\texttt{a}~\)为负数时,自己代码有问题调试。

输出过于繁琐,容易出问题,重构输出部分。

用\(~\texttt{5~min}~\)把自己的答案和大样例答案对照了一下(\(~\texttt{NOI Linux 2.0}~\)不会用)

代码如下:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
void solve()
{
    int a, b, c;
    cin >> a >> b >> c;
    if((b * b - 4 * a * c) < 0)
    {
        cout << "NO\n";
        return;
    }
    if(sqrt(b * b - 4 * a * c) == (int)sqrt(b * b - 4 * a * c))
    {
        int t = (int)sqrt(b * b - 4 * a * c);
        if(2 * a < 0) t = - t;
        if((- b + t) % (2 * a) == 0)
        {
            cout << (- b + t) / (2 * a) << "\n";
            return;
        }
        int p, q, tt = __gcd(- b + t, 2 * a);
        p = (- b + t) / tt;
        q = 2 * a / tt;
        if(p < 0 && q < 0) p = abs(p), q = abs(q);
        else if(q < 0) p -= 2 * p, q = abs(q);
        cout << p << "/" << q << "\n";
        return;
    }
    else
    {
        int t = b * b - 4 * a* c, othr = 1, othr2 = 2 * a, ret = 1;
        if(othr2 < 0) othr2 = - othr2;
        for(int i = 2; i <= t; i ++)
        {
            int cnt = 0;
            while(t % i == 0) cnt ++, t /= i;
            if(cnt % 2 == 0) othr *= pow(i, cnt / 2);
            else othr *= pow(i, cnt / 2), ret *= i;
        }
        int p, q, tt = __gcd(- b, 2 * a);
        p = (- b) / tt;
        q = 2 * a / tt;
        if(p < 0 && q < 0) p = abs(p), q = abs(q);
        else if(q < 0) p -= 2 * p, q = abs(q);
        int ttt = __gcd(othr, othr2);
        othr = othr / ttt;
        othr2 = othr2 / ttt;
        if(p % q == 0)
        {
            if(p / q == 0) cout << "";
            else cout << p / q << "+";
        }
        else cout << p << "/" << q << "+";
        if(othr != 1) cout << othr << "*";
        cout << "sqrt(" << ret << ")";
        if(othr2 != 1) cout << "/" << othr2;
        cout << "\n";
    }
    return;
}
int main()
{
    freopen("uqe.in", "r", stdin);
    freopen("uqe.out", "w", stdout);
    int T, m;
    cin >> T >> m;
    while(T --) solve();
    return 0;
}

12:00

\(\texttt{T4}~\texttt{5pts}\)

第四题一眼\(~\texttt{SPFA}~\)但是没时间调了,打了个暴力\(~\texttt{+~Dij}~\)结束。应该有点分。

代码如下:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int n, m, k, x, y, z, dis[10010], vis[10010], ans = 0x3f3f3f3f, t;
vector<pair<int, int> > mp[10010];
bool flag = true;
void dij()
{
    memset(dis, 0x3f, sizeof dis);
    priority_queue<pair<int, int>, vector<pair<int, int> >, greater<pair<int, int> > > q;
    q.push({1, 1});
    while(q.size())
    {
        pair<int, int> cur = q.top();
        q.pop();
        if(cur.second == n)
        {
            cout << cur.first;
            return;
        }
        if(dis[cur.second] < cur.first) continue;
        for(int i = 0; i < mp[cur.second].size(); i ++)
        {
            if(vis[mp[cur.second][i].first] || mp[cur.second][i].second > cur.first) continue;
            dis[cur.second] = min(dis[cur.second], cur.first + 1);
            q.push({cur.first + 1, mp[cur.second][i].first});
        }
    }
    return;
}
void dfs(int tim, int now)
{
    if(tim >= ans) return;
    if(now == n)
    {
        if(tim % k == 0) ans = min(ans, tim);
        return;
    }
    for(int i = 0; i < mp[now].size(); i ++)
    {
        if(vis[mp[now][i].first]) continue;
        if(mp[now][i].second > tim) continue;
        vis[mp[now][i].first] = true;
        dfs(tim + 1, mp[now][i].first);
        vis[mp[now][i].first] = false;
    }
    return;
}
int main()
{
    freopen("bus.in", "r", stdin);
    freopen("bus.out", "w", stdout);
    cin >> n >> m >> k;
    for(int i = 0; i < m; i ++)
    {
        cin >> x >> y >> z, mp[x].push_back({y, z});
        if(z != 0) flag = false;
    }
    if(k == 1 && flag)
    {
        dij();
        return 0;
    }
    for(int i = 0; i <= 5; i ++)
    {
        int strt = i * k;
        dfs(strt, 1);
        if(ans != 0x3f3f3f3f)
        {
            cout << ans;
            return 0;
        }
    }
    cout << -1;
    return 0;
}

Day 2

估分结果如下:

  • 你谷:100 + 50 + 90 + 25 = 265
  • 图灵:100 + 85 + 80 + 10 = 275
  • 云斗:100 + 75 + 80 + 0 = 255
  • 最低:100 + 50 + 80 + 0 = 220
  • 最高:100 + 85 + 90 + 25 = 300

考虑到\(~\texttt{CCF}~\)不会出太大数据,\(\texttt{T3}~\)应该能\(~\texttt{AC}~\)

10.29

拿到成绩,十分伤感:

100 + 50 + 100 + 5 = 255

CSP-J2023 第二轮遗憾落幕。

标签:cur,int,texttt,long,mp,2023,游记,now,CSP
From: https://www.cnblogs.com/Liu-Tao-Chang/p/18343886

相关文章

  • 【日常开发】一个list集合 根据a字段 b字段进行分组 并计算c字段的和 并封装这种格式:
    ......
  • SourceCodester v1.0 SQL 注入漏洞(CVE-2023-2130)靶场复现
    SourceCodesterPurchaseOrderManagementSystemv1.0是一个实用的工具,适合希望优化采购流程的企业和组织靶场界面直接放sqlmap跑爆数据库爆数据表爆字段爆内容-用户名爆内容-密码sqlmap的md5碰撞sqlmap所有命令点击查看代码爆数据库pythonsqlmap.py-u......
  • Jorani远程命令执行漏洞 CVE-2023-26469靶场复现
    靶场界面点击查看exp↓↓↓"""vulnerabilitycoveredbyCVE-2023-26469"""importreadlineimportrequestsimportdatetimeimportsysimportreimportbase64importrandomimportstringrequests.packages.urllib3.disable_warnings(requ......
  • 【漏洞复现】LiveBOS UploadFile.do 任意文件上传漏洞(XVE-2023-21708)
    0x01产品简介LiveBOS(LiveBusinessObjectSystem)是顶点软件自主研发的以业务对象建模为核心的业务中间件及其集成开发工具,它通过业务模型建立直接完成软件开发的创新模式,支持各类基于WEB的专业应用软件与行业大型应用的开发。LiveBOS系统由三个相对独立的产品构成:运行支......
  • 2023 福建省第三届工业互联网创新大赛CTF Misc-Covertchannel2
    题目:近日,公司Windows服务器被入侵,黑客使用了一个比较隐蔽的信道将机密凭据传输了出去,但是蛛丝马迹还是被流量采集设备捕获了,你能从中找回丢失的flag吗?分析:分析该流量包发现了有一个rsa.key,并且在数据包长度为126和119中发现了,secrets.txt和data.zip,接下来就是写脚本提......
  • U盘版:RadiAnt DICOM 查看器 CD/DVD 2023.1 Crack
    RadiAntDICOM查看器CD/DVD2023.1建于2023年3月29日CD/DVD自动运行包新功能:长度比计算。椭圆体/子弹体积计算。改进和错误修复:增加了对某些不完全符合标准的DICOM文件的支持。增加了对一些不常见的JPEG2000编码DICOM图像的支持。RadiAntDICOMView......
  • 【2023年】云计算金砖牛刀小试2
    A场次题目:Openstack平台部署与运维control172.17.31.10compute172.17.31.20compute任务1私有云平台环境初始化1.初始化操作系统使用提供的用户名密码,登录竞赛云平台。根据表1中的IP地址规划,设置各服务器节点的IP地址,确保网络正常通信,设置控制节点......
  • 塔子哥喜欢字符-小米2023笔试(codefun2000)
    题目链接塔子哥喜欢字符-小米2023笔试(codefun2000)题目内容塔子哥天生偏爱一些字符,对于一个字符串,他总是想把字符串中的字符变成他偏爱的那些字符。如果字符串中某个字符不是他所偏爱的字符,称为非偏爱字符,那么他会将该非偏爱字符替换为字符串中距离该字符最近的一个偏......
  • 8.1日CSP-J初赛内容总结
    8.1日CSP-J初赛内容总结补充知识点:假设结构体为Point类型structPoint{intx,y;}两种赋值方式PointA;A.x=......;A.y=......;PointA=Point{1,2};整体赋值,将{}里的按先后赋值给x,y小于号重写:优先队列之中booloperator<(const结构体......
  • 8.2日CSP-J初赛内容总结
    8.2日CSP-J初赛内容总结Adobe:PS,PR,......Reader微软:Onedrive(存文件),Excel(表格),Word(文字编辑),Onenote(笔记),PowerPoint(PPT)位号从正数部分最低位开始编号,0到更大的数字。位号从左往右的小数部分从\(-1\)开始编号,编号变小基数:进制的进位数字位权:基数的位号次幂......