trichlorotrifluoroethane

P9754 [CSP-S 2023] 结构体

一年的痛终于解决。

一个结构体的对齐要求为其成员的对齐要求的 \(\gcd\),其大小为大于等于实际大小的最小整除对齐要求的数,基础类型的对齐要求为其大小。

给你一个无限长的内存,头地址为 \(0\),支持以下操作:

  1. X k t1 n1...tk nk 声明一个结构体名字为 \(X\) 包含 \(k\) 个成员,第 \(i\) 个成员的类型为 \(t_i\),名字为 \(n_i\)。输出结构体大小和对齐要求;
  2. t n 定义一个变量名字为 \(n\),类型为 \(t\)。输出其开始地址;
  3. s 求变量 \(s\) 的开始地址;
  4. addr 求包含地址 \(addr\) 的变量名(精确到基础类型层面)。

按 要 求 模 拟 即 可,时间复杂度 \(O(可过)\)。3、4 操作莫名有种求排名、第 \(k\) 小的感觉?

code
#include<bits/stdc++.h>
#define int long long
using namespace std;
int maxaddress;
const int maxn=203;
int num;            // 类型数  
struct info{int type;string name;int pos;        // 起始位置bool operator<(const info &o)const{return pos<o.pos;}
};
struct node{vector<info>pb;  // 包含的类型编号int byd;         // 使用字节数int lim;         // 对齐要求map<string,int>t;// 成员名转编号
}type[maxn];
map<string,int>mp;  // 类型名转编号
map<string,int>gp;  // 变量名转编号
int n;
void def_struct(string s,int k){string t,r;mp[s]=++num;for(int i=1;i<=k;i++){cin>>t>>r;int ty=mp[t];node now=type[ty];int lastpos=((type[num].byd-1)/now.lim+1)*now.lim;if(i==1) lastpos=0;type[num].t[r]=i-1;type[num].pb.push_back({ty,r,lastpos});type[num].lim=max(type[num].lim,type[ty].lim);type[num].byd=lastpos+now.byd;}type[num].byd=((type[num].byd-1)/type[num].lim+1)*type[num].lim;cout<<type[num].byd<<' '<<type[num].lim<<'\n';
}
int cnt;
info memory[maxn];      // 内存中的变量
void def_var(string t,string r){node now=type[mp[t]];int lastpos=((maxaddress-1)/now.lim+1)*now.lim;if(!cnt) lastpos=0;gp[r]=++cnt;memory[cnt]={mp[t],r,lastpos};maxaddress=lastpos+now.byd;cout<<lastpos<<'\n';
}
int find_pos(string s,int x){return type[x].pb[type[x].t[s]].pos;
}
int find_pot(int s,int x){return type[x].pb[s].pos+type[type[x].pb[s].type].byd;
}
int dfs1(string s,int fa){int pos=s.find(".");if(pos==EOF){return find_pos(s,fa);}string tmp=s.substr(0,pos);return find_pos(tmp,fa)+dfs1(s.substr(pos+1),type[fa].pb[type[fa].t[tmp]].type);
}
string S;
void dfs2(int now,int fa){if(fa<=4) return;int pos=upper_bound(type[fa].pb.begin(),type[fa].pb.end(),(info){0,"",now})-type[fa].pb.begin()-1;if(now<find_pot(pos,fa)){S+='.';S+=type[fa].pb[pos].name;dfs2(now-type[fa].pb[pos].pos,type[fa].pb[pos].type);}else{S="ERR";}
}
signed main(){type[++num].byd=1;type[num].lim=1;// bytemp["byte"]=num;type[num].pb.push_back({0,"",0});type[++num].byd=2;type[num].lim=2;// shortmp["short"]=num;type[num].pb.push_back({0,"",0});type[++num].byd=4;type[num].lim=4;// intmp["int"]=num;type[num].pb.push_back({0,"",0});type[++num].byd=8;type[num].lim=8;// longmp["long"]=num;type[num].pb.push_back({0,"",0});cin>>n;while(n--){int opt,k,addr;string s,t,r;cin>>opt;if(opt==1){cin>>s>>k;def_struct(s,k);}else if(opt==2){cin>>t>>r;def_var(t,r);}else if(opt==3){cin>>s;int pos=s.find(".");if(pos==EOF){cout<<memory[gp[s]].pos<<'\n';continue;}string tmp=s.substr(0,pos);cout<<memory[gp[tmp]].pos+dfs1(s.substr(pos+1),memory[gp[tmp]].type)<<'\n';}else{S.clear();cin>>addr;int pos=upper_bound(memory+1,memory+cnt+1,(info){0,"",addr})-memory-1;if(addr<memory[pos].pos+type[memory[pos].type].byd){S=memory[pos].name;dfs2(addr-memory[pos].pos,memory[pos].type);}else{S="ERR";}cout<<S<<'\n';}}return 0;
}

P9118 [春季测试 2023] 幂次

给出 \(n,k\)\(S=\{x\in [1,n]\mid x=t^w,t\in[1,n],w\ge k\}\),求 \(|S|\)

\(n\le 10^{18},k\le 100\)

\(k=1\) 直接输出 \(n\)\(k\ge 3\) 时,\(t\) 最大 \(\sqrt[k]{n}=10^6\),不会 T。

\(k=2\) 时,考虑容斥。先把所有完全平方数加上,再加上其他的,注意判重,当且仅当 \(2\nmid w\) 时有贡献,时间复杂度为 \(O(\sqrt[3]{n})\)

code
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int maxn=2e6+3;
const int maxv=1e6;
const int maxp=1e9;
int n,cnt,C,k;
int pr[maxn];
bool isp[maxn];
signed main(){ios::sync_with_stdio(0);cin>>n>>k;int base=0;for(int i=2;i<=maxv;i++){__int128 now=i;base=1;if(isp[now]) continue;while(1){base++;now=now*i;if(base>=k&&now<=n){if(now<=n&&base%k==0){if(now<=maxv) isp[now]=1;continue;}cnt++;}if(now<=maxv) isp[now]=1;if(now>=n) break;}}cnt+=powl(n,1.0/k)-1;cout<<cnt+1;return 0;
}

双倍经验:[ABC361F] x = a^b

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/808083.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

10.Java集合框架_List接口

集合与数组的区别数组:长度开始时必须指定,而且一旦指定,不能修改。 保存的必须为同一类型的元素。 使用数组进行增加/删除元素比较麻烦。集合:可以动态保存任意多个对象,使用比较方便。 提供了一系列方便操作对象的方法: add、remove、set、get。 使用集合添加,删除新元…

20240924

[牛半仙的妹子 Tree(tree)](http://ac.robo-maker.cn/d/contest/p/ZY1044?tid=66f28cd11bca2159e88c8fb0) 我们会发现其实牛半仙发癫时就等于将以前的标记清空,从头开始,所以我们可以考虑根号分治,如果两个牛半仙发癫的时间间隔小于 \(\sqrt n\) ,那么我们可以直接暴力枚举两…

『模拟赛』冲刺CSP联训模拟2

『模拟赛记录』冲刺CSP联训模拟2Rank 不重要了A. 挤压 你说的对,期望怎么能算签呢? 一个重要的性质:一个数的平方可以在二进制下表示为 \(\sum_{i,j}\ s_i\ s_j\ 2^{i+j}\),所以就可以分别求每一位对答案的贡献了。 设 \(f_{i,1/0,1/0}\) 表示到第 \(i\) 个数我们枚举的两位…

PbootCms上传图片变模糊、上传图片尺寸受限的解决方案

在使用PbootCMS的过程中,如果上传的图片被压缩变得模糊,通常是因为上传的图片尺寸过大。PbootCMS 默认的上传图片限制宽度为 1920 像素,缩略图的限制大小为 10001000 像素。可以通过调整这些参数来解决这个问题。 解决方案打开 config.php 文件 调整 max_width 和 max_heigh…

ROS基础入门——实操教程

ROS新人可看ROS基础入门——实操教程前言 本教程实操为主,少说书。可供参考的文档中详细的记录了ROS的实操和理论,只是过于详细繁杂了,看得脑壳疼,于是做了这个笔记。Ruby Rose,放在这里相当合理前言:本文初编辑于2024年10月24日 CSDN主页:https://blog.csdn.net/rvdgds…

PbootCMS增加可允许上传文件类型,例如webp、mov等文件格式扩展

在PbootCMS中增加可允许上传的文件类型(例如 webp、mov 等文件格式),需要在多个地方进行配置。以下是详细的步骤: 操作步骤 1. 修改 config.php 文件 首先需要修改 config.php 文件,增加允许上传的文件类型。打开 config.php 文件打开 config.php 文件,通常位于 /config …

出现“登录失败,表单提交校验失败”,请检查服务器环境

如果出现“登录失败,表单提交校验失败”,请检查服务器环境,然后刷新页面重试,或者删除 runtime 文件夹,然后刷新页面重试。 操作步骤删除 runtime 文件夹使用 FTP 客户端或 SSH 连接到服务器。 删除 runtime 文件夹:bashcd /path/to/your/site rm -rf runtime刷新页面清除…

多次密码错误导致登录界面锁定,可以删除网站的 runtime 文件夹

如果多次密码错误导致登录界面锁定,可以删除网站的 runtime 文件夹,然后刷新页面重试。 操作步骤删除 runtime 文件夹使用 FTP 客户端或 SSH 连接到服务器。 删除 runtime 文件夹:bashcd /path/to/your/site rm -rf runtime刷新页面清除浏览器缓存。 重新访问后台登录页面扫…

红日靶机(三)笔记

VulnStack-红日靶机三 概述 相交于前边两个靶场环境,靶场三的难度还是稍难一点,有很多兔子洞,这就考验我们对已有信息的取舍和试错,以及对渗透测试优先级的判断。涉及到对数据库操作的试错,对 joomla 框架 cve 的快速学习,php 中 用到disabled_function 的 bypass ,对li…

快乐数学2勾股定理0000000

2 勾股定理 在任意一个直角三角形中,两条直角边的平方和等于斜边的平方。 a + b = ca 和 b 分别表示直角三角形的两条直角边长度。 c 表示斜边长度。我们大多数人都认为这个公式只适用于三角形和几何图形。勾股定理可用于任何形状,也可用于任何将数字平方的公式。 2.1 了解面…

信息学奥赛复赛复习11-CSP-J2020-04方格取数-动态规划、斐波那契数列、最优子结构、重叠子问题、无后效性

PDF文档公众号回复关键字:202410041 P7074 [CSP-J2020] 方格取数 [题目描述] 设有 nm 的方格图,每个方格中都有一个整数。现有一只小熊,想从图的左上角走到右下角,每一步只能向上、向下或向右走一格,并且不能重复经过已经走过的方格,也不能走出边界。小熊会取走所有经过的…

python相平面 图形

二阶非线性自治系统绘制相平面图。假设我们有一个简单的阻尼摆系统,其状态方程可以表示为: \[ dx1/dt = x2 \\dx2/dt = -cx2 - gsin(x1) \] import numpy as np import matplotlib.pyplot as plt from scipy.integrate import odeint # 定义系统的状态方程 def pendu…