首页 > 其他分享 >2023年11月9日总结

2023年11月9日总结

时间:2023-11-09 23:22:20浏览次数:39  
标签:11 总结 tox toy tx ty int vi 2023

这里观看体验更佳

总结

一眨眼,一天又过去了嘿嘿。今天鸽子回归,热烈祝贺!鼓掌!今天是做的练习赛,早上三道题,一道矩阵快速幂 + 拓展欧几里德,还有两道模拟。感觉都挺简单的,就是最后一道题的数据把我恶心到了。题目说链的长度是偶数,结果样例有奇数就算了,还有个点只有一个点的链,把我的判断端点给卡了,生气。

哦对了,今天早上教室里面还飞进了一只小鸟。很漂亮。可爱。(●'◡'●)。

题解

就简单说一下吧,模拟题,也没有什么好讲的。

T1

容易发现是 fib 数列的第 n 项的 k 倍。矩阵快速幂求一下再求一下逆元就可以。[[数论]] [[矩阵快速幂]] [[拓展欧几里得]]

T2

要求判断 ipv6 地址是否合法并且将其展开成完整形式。也不难,照着题意写一些就行。 [[模拟]]

T3

记录一个点从这里起始过没有。如果后来回到起点那肯定不行。否则每次枚举走路,走一走就行,也不是很难的样子。最短就用 bfs 就可以。bfs 的部分都是复制的,其实写不了多少。为了好看,这里贴上代码。

#include <bits/stdc++.h>
using namespace std;
#define N 55
using ll = long long;
int n;
ll t;
char s[N][N];
#define p(x, y) (x * n + y)
bool vis[N][N];
int f[4][2] = {-1, 0, 0, 1, 1, 0, 0, -1};//N, E, S, W
#define hf(x, y) (x >= 0 && x < n && y >= 0 && y < n)
bool vi[N][N];
struct lc {
  int x, y, dis;
};
ll walk(int& x, int& y) {
  ll tot = 0;
  switch(s[x][y]) {
    case '*': {
      int bc = 1, dir = 0;
      while (1) {
        for (int i = 0; i < bc; ++i) {
          ++tot;
          x += f[dir][0], y += f[dir][1];
          if (!hf(x, y) || s[x][y] != '*') {
            return tot;
          }
        }
        dir = (dir + 1) % 4;
        if (!(dir & 1)) ++bc;
      }
      break;
    }
    case 'I': {
      int tx = x, ty = y, mad = 0;
      memset(vi, 0, sizeof(vi));
      queue<lc> q;
      q.push({tx, ty, 0});
      vi[tx][ty] = 1;
      while (!q.empty()) {
        auto [nx, ny, dis] = q.front();
        q.pop();
        if (dis > mad) tx = nx, ty = ny, mad = dis;
        else if (dis == mad) {
          if (nx < tx) tx = nx, ty = ny;
          else if (nx == tx && ty < ny) ty = ny;
        }
        for (int i = 0; i < 4; ++i) {
          int tox = nx + f[i][0], toy = ny + f[i][1];
          if (!hf(tox, toy) || vi[tox][toy] || s[tox][toy] != 'I') continue;
          vi[tox][toy] = 1;
          q.push({tox, toy, dis + 1});
        }
      }
      x = tx, y = ty;
      tot = mad;
      for (int i = 0; i < 2; ++i) {
        x += f[0][0], y += f[0][1];
        ++tot;
        if (!hf(x, y)) return tot;
      }
      return tot;
      break;
    }
    case 'B': {
      memset(vi, 0, sizeof(vi));
      int tx = x, ty = y, mid = 1e9;
      queue<lc> q;
      q.push({tx, ty, 0});
      vi[tx][ty] = 1;
      while (!q.empty()) {
        auto [nx, ny, dis] = q.front();
        q.pop();
        int flg = 0;
        for (int i = 0; i < 4; ++i) {
          int tox = nx + f[i][0], toy = ny + f[i][1];
          if (hf(tox, toy)) flg += s[tox][toy] == 'B';
          if (!hf(tox, toy) || vi[tox][toy] || s[tox][toy] != 'B') continue;
          vi[tox][toy] = 1;
          q.push({tox, toy, dis + 1});
        }
        // assert(flg > 0);
        if (flg <= 1 && dis < mid) tx = nx, ty = ny, mid = dis;
      }
      x = tx, y = ty, tot = mid;
      for (int i = 0; i < 2; ++i) {
        x += f[1][0], y += f[1][1];
        ++tot;
        if (!hf(x, y)) return tot;
      }
      return tot;
      break;
    }
    case 'W': {
      memset(vi, 0, sizeof(vi));
      int tx = x, ty = y, mad = 0;
      queue<lc> q;
      q.push({tx, ty, 0});
      vi[tx][ty] = 1;
      while (!q.empty()) {
        auto [nx, ny, dis] = q.front();
        q.pop();
        int flg = 0;
        for (int i = 0; i < 4; ++i) {
          int tox = nx + f[i][0], toy = ny + f[i][1];
          if (hf(tox, toy)) flg += s[tox][toy] == 'W';
          if (!hf(tox, toy) || vi[tox][toy] || s[tox][toy] != 'W') continue;
          vi[tox][toy] = 1;
          q.push({tox, toy, dis + 1});
        }
        // assert(flg > 0);
        if (flg <= 1 && dis > mad) tx = nx, ty = ny, mad = dis;
      }
      x = tx, y = ty, tot = mad;
      for (int i = 0; i < 2; ++i) {
        x += f[3][0], y += f[3][1];
        ++tot;
        if (!hf(x, y)) return tot;
      }
      return tot;
      break;
    }
  }
  return 0;
}
int main() {
  freopen("adventure.in",  "r", stdin);
  freopen("adventure.out", "w", stdout);
  while (~scanf("%d%lld", &n, &t) && (n != 0 || t != 0)) {
    for (int i = 0; i < n; ++i) {
      scanf("%s", s[i]);
    }
    int w, h;
    ll tim = 0;
    scanf("%d%d", &w, &h);
    memset(vis, 0, sizeof(vis));
    while (tim <= t) {
      if (vis[w][h]) {
        tim = 1e18;
        break;
      }
      vis[w][h] = 1;
      ll ys = walk(w, h);
      tim += ys;
      if (!hf(w, h)) break;
    }
    tim <= t ? printf("%lld\n", tim) : puts("Die hard");
  }
  return 0;
}

其它

把昨天 T3 调了。后来发现是一个弱智错误。这里要打上重点。以后默认初始化 stuct 的时候千万不要用全局变量或者非常量进行初始化!太恶心拉!要记住!不然初始化时的值是0阿!分数也会变成0阿!

下午写了去年 noip T4。那个线段树。感觉还是很神奇的。晚上要做一个可持久化线段树的专题。在这里。还是很好玩的。这周又要结束了阿。看起来。只有一周了。有一些不安和期待。希望明天会更好!

标签:11,总结,tox,toy,tx,ty,int,vi,2023
From: https://www.cnblogs.com/huasushis/p/17823126.html

相关文章

  • 11.9 小记
    今天的题目很难评啊,你说他难吧那倒也不是,反正就是,又偏又怪,我感觉价值非常有限,所以一题也没补。记录一下喔。今天足足5pts呢!历史新低。晚自习看同学做一个黄色的小小模拟题,然后说要“同台竞技”,于是我也去做,结果写了四十多分钟。虽然一发过了但是还是感觉被降智了。这是题目链......
  • 2023.11.9——每日总结
    学习所花时间(包括上课):9h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习;我了解到的知识点:1.mybatis明日计划:学习......
  • 【专题】2023智能汽车发展趋势洞察报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=34219原文出处:拓端数据部落公众号至2025年,智能网联汽车产业规模将突破5000亿。预计具备L2及以上自动驾驶能力的车型销量将突破千万级,渗透率将跃升至42.9%。阅读原文,获取专题报告合集全文,解锁文末56份智能汽车相关行业研究报告。智能汽车发展水平......
  • 【专题】2022-2023中国跨境出口B2C电商报告PDF合集分享(附原数据表)
    报告链接:http://tecdat.cn/?p=32805原文出处:拓端数据部落公众号全球疫情的爆发对于全球经济和消费市场都带来了很大的冲击,特别是在消费者的消费行为和零售市场格局方面发生了重大变革。同时由于全球供应链的重新调整,产业分化现象也加速出现。中国跨境电商已经历了十年以上的发......
  • 重磅!大厂2023最新全套面试题,简直就是拿Offer的神器
    前言大厂的面试一直都是风向标,动态必须关注!想要高效迅速的拿到心仪的offer,一定要从面试官的角度出发,提前做好功课,了解市场的最新风向。我在和几位大佬详细沟通之后,终于整理出了这份最新的《2023Android面试收割指南》,内容涵盖各大厂最新面试题合集,部分题目还是有点难度的,希望大家能......
  • Adobe Photoshop 2023最新激活(附图文教程)
    介绍Photoshop软件是一个非常强大的数字图像处理和编辑软件,具有直观易用的用户界面,各种图像编辑和处理工具,各种图层和蒙版功能,各种滤镜和插件。无论是初学者还是有经验的设计师都可以使用该软件轻松地处理、修改和创建各种类型的图像,以满足不同领域的需求。安装步骤下载地址  htt......
  • 20231109打卡
    早上,我准时开始了新一轮的学习。首先,我学习了算法与数据结构中的迪杰斯特拉算法和弗洛伊德算法。迪杰斯特拉算法是一种用来解决最短路径问题的算法,而弗洛伊德算法则可以求解任意两点之间的最短路径。通过课堂讲解和实例演示,我逐渐理解了它们的原理和应用。我通过编写代码实践了这......
  • 11.9 仙华
    昨天吃两大脱答辩,没劲写鲜花了可离线——题目描述pqdb:这题离线就能做了众人:?pdqb:离线就能做了,我又没说我会线上课讲课人发出了吃东西的声音Hugoi:他出模拟赛呢(指吃完拉)给定点数边数,点边有编号,求拓扑序最小字典序最大的图的数量。两张图不同当且仅当输出的边序......
  • 11月9日
    今天,上午我去教室进行了统一建模语言的上机实验,在课上我通过教程下载了rose,然后使用了rose和visio进行了用例图的建模,然后去陪同学去取了电脑,下午回来去上了数据结构,老师讲了最小生成树的克鲁苏卡尔算法和普里姆算法,然后去上了离散数学没学习了,抽象结构中的广群,半群,子半......
  • openGauss学习笔记-118 openGauss 数据库管理-设置数据库审计-维护审计日志
    openGauss学习笔记-118openGauss数据库管理-设置数据库审计-维护审计日志118.1前提条件用户必须拥有审计权限。118.2背景信息与审计日志相关的配置参数及其含义请参见表1。表1审计日志相关配置参数配置项含义默认值audit_directory审计文件的存储目录。/......