首页 > 其他分享 >4.4 模拟赛小记

4.4 模拟赛小记

时间:2023-04-04 19:56:23浏览次数:56  
标签:4.4 int ll long len ans zu 模拟 小记

从之前惨痛的经历中吸取教训,我决定一天写一篇博客来记录我的学习,毕竟多写题解多交流才能学好 oi。


 T1 格雷码 P5657 洛谷传送门

根据题目给出的要求找规律,有两种做法,一是口胡找规律,二是用递归分治的思想,一半一半切下去。

我这里是口胡的,如果你写出来 k 号的二进制,会发现格雷码就是将自己这一位和左边那一位进行异或,然后就结束了。

注意数据大小要用 unsigned long long。

#include<bits/stdc++.h>
#define ull unsigned long long
using namespace std;
ull k;
int n, len = 0;
int a[110], ans[110];
int main()
{
    scanf("%d%llu", &n, &k);
    while(k) {a[++ len] = k % 2; k /= 2;}
    for(int i = n; i >= 1; i -- ) a[i + 1] == a[i] ? (cout << 0) : (cout << 1);
    return 0;
}
A

 T2 新汉诺塔  P1242 新汉诺塔传送门

提供一个思路是递归,从大到小移动盘子,那么移这个盘子时就需要把放在它上面的比他小的移开,移到第三个柱子上。这样只需要标记每次移的盘子和移动目标。

但是洛谷上被 hack 了,事实上这个做法无法证明正确性,但是这个做法大概不刻意卡的话能骗点分。被 hack 了就不放代码了www。


 T3 一眼不可做,有空再看罢。


 T4 生成字符串

先根据长度确定这是第几次的变化,然后递归分治向前,找到这个位置时从最初的哪一个变化而来的。

对于每个串,前一半即从上一次复制而来,紧接着的一个来自上一次的末尾,剩下的位置一一对应着上一次的前一半。说起来有点绕,写写就很清楚了。

#include<bits/stdc++.h>
#define ll long long
using namespace std;
int len;
ll n;
string s;
ll bpow(ll a, int b)
{
    ll ans = 1;
    while(b)
    {
        if(b & 1) ans *= a;
        a *= a; 
        b >>= 1;
    }
    return ans; 
}
ll find(int zu, ll k)
{
    if(zu == 0) return k;
    ll ans;
    if(k == bpow(2, zu) * len / 2 + 1) ans = bpow(2, zu - 1) * len;
    else if(k <= bpow(2, zu - 1) * len) ans = k;
    else ans = k - bpow(2, zu) * len / 2 - 1;
    return find(zu - 1, ans);
}
int main()
{
    cin >> s >> n;
    len = s.size();
    int k = 0;
    ll q = len;
    while(!(q >= n && q / 2 < n)) {k ++; q *= 2;}
    cout << s[find(k, n) - 1];
    return 0;
}

 T5 不再相邻

可以 O(n) 推式子 or O(n ^ 2) dp,咱都不会,会了再说。


 

今天的一些脑残小问题,可以看着玩玩:

1.scanf 忘记写取地址符了。

2.一开始忘记开 ull。

3.T4 一开始想起来开 long long 了,但没完全开,好像函数里忘开了。感觉不如 int long long。

4.我之前真的不知道 pow 函数有精度问题,今天才知道。emmmmm,记得写快速幂罢,否则会变得不幸。

 


 审视今天,美好的一天。又是没有脑子的一天。

标签:4.4,int,ll,long,len,ans,zu,模拟,小记
From: https://www.cnblogs.com/Moyyer-my/p/17287726.html

相关文章

  • 模拟mybatis接口动态注册过程
    思考  前文提到2种方式动态加载bean到容器,这里我们模拟一下mybatis手动注册Bean到容器的过程。模拟有啥好处,主要是为了方便你理解如何手动注册Bean的过程及mybatis的设计思想。毕竟这个才是spring的核心内容。    首先思考一下问题    如果你实现这个问题,你准备怎......
  • linux之stress(模拟压力测试)
    stress是一款模拟压力测试工具,他可以模拟cpu,内存,io等情况stress安装yuminstall-yepel-releaseyuminstallstress-ystress的使用1.模拟一颗cpu打满->stress-c1  通过htop查看一下cpu情况,可以看到有一颗cpu打满 2.模拟多颗cpu打满->stres......
  • 4.4学习总结(虚拟试衣算法初步框架构思)
    昨天上台演示了项目框架并且讲述了未来对项目规划的构思,我们组是最后一组,整体等待过程还是很煎熬的比我们队优秀的作品有很多,所以还是很有压力的不过我们会尽力在接下来的时间内,争取完成所介绍的所有功能......
  • 算法训练——剑指offer(模拟算法)
    摘要一、模拟算法原理与解题方法二、模拟算法练习题目2.1顺时针打印矩阵顺时针打印矩阵_牛客题霸_牛客网解题思路:递归的思想和非递归的思想相差不大,递归是首先打印最外层的元素,将内层的矩阵作为一个全新的矩阵进行递归。对于每层,从左上方开始以顺时针的顺序遍历所有元素。假设当......
  • 数学建模(三):模拟退火算法(SA)
    目录模拟退火算法(SA)一、概述1、算法简介2、核心思想3、数学原理4、模拟退火的流程二、实例分析1、初始化参数2、Metrospolis准则3、生成新的值4、获取最优值5、主程序6、总代码模拟退火算法(SA)一、概述1、算法简介模拟退火算法(simulatedannealing,SA)来源于固体......
  • 4.4 proxy 的一些属性
    varuser={id:1,name:'Tom',age:10,school:'primaryschool',sister:{name:'Alice',age:12}}varhandler={get(target,prop){if(prop=='id'){......
  • 混沌工程之ChaosMesh使用之一模拟CPU使用率
    今天来玩一下混沌工程的开源工具之一的ChaosMesh。ChaosMesh的目标是要做一个通用的混沌测试工具。ChaosMesh是要和k8s结合使用的,其中用了云原生的能力。 ChaosMesh的基本工作流原理图:从原理图上可以看出大概的工作流程:用户用yaml文件或k8s客户端创建更新Chaos对象。Chaos-mesh......
  • C/C++快递自提柜流程模拟系统[2023-04-03]
    C/C++快递自提柜流程模拟系统[2023-04-03]普通用户功能包括:普通用户分为老用户和新用户,新用户需要注册再登录,老用户直接注册并登录,登录时用户名和密码都输入正确才可进入用户界面。进入系统后,用户按照快递单号可以查询订单的所有物流信息:订单编号,快递单号(公司),快递的状态(已出库......
  • STM32 FSMC的 NOR FLASH B模式模拟LCD 8080时序
    STM32 FSMC:FSMC(FlexibleStaticMemoryController):翻译为:灵活的静态存储管理器。可管理的存储类型包括:NORFLASH 和 SRAMNANDFLASHPC Card(PC卡,不知道是什么东西)具体功能是将外部的存储设备映射为内部地址,可以用程序访问这些地址,间接地,由FSMC 自动产生相应时序,......
  • chrome模拟微信浏览器内核
     1、ios-QQ——内置浏览器UAMozilla/5.0(iPhone;CPUiPhoneOS7_1_2likeMacOSX)>AppleWebKit/537.51.2(KHTML,likeGecko)Mobile/11D257>QQ/5.2.1.302NetType/WIFIMem/282、ios-微信——微信内置浏览器UAMozilla/5.0(iPhone;CPUiPhoneOS7_1_2......