在哪里查网站是什么时候建站综合门户网站建设
- 作者: 五速梦信息网
- 时间: 2026年04月20日 06:53
当前位置: 首页 > news >正文
在哪里查网站是什么时候建站,综合门户网站建设,海外网站域名注册,系统做网站的地方STL综合 一、数据结构1. 队列2. 映射 二、队列例题1. 约瑟夫环#xff08;数据加强#xff09;2. 打印队列3. 小组队列4. 日志统计 2.0 三、映射真题1. 眼红的 Medusa2. 美食评委 一、数据结构
- 队列 功能代码定义queuetpq入队.push(x)出队.pop()队头.front()队尾… STL综合 一、数据结构1. 队列2. 映射 二、队列例题1. 约瑟夫环数据加强2. 打印队列3. 小组队列4. 日志统计 2.0 三、映射真题1. 眼红的 Medusa2. 美食评委 一、数据结构
- 队列 功能代码定义queuetpq入队.push(x)出队.pop()队头.front()队尾.back()为空.empty()大小.size()
- 映射 功能代码定义maptp1,tp2name增/改mp[key]value删除.erase(key)全删.clear()头部.begin()尾部.end()key 出现.count(key)为空.empty()大小.size()查找.find(key)键it-first值it-second 二、队列例题
- 约瑟夫环数据加强 题目描述 n n n 个人报数报到 m m m 的人出列再由下一个人重新从 1 1 1 开始报数以此类推输出依次出圈人的编号。 输入描述 一行两个整数 n , m n,m n,m。 输出描述 一行 n n n 个整数相邻整数用一个空格隔开按顺序输出每个出圈人的编号 样例1 输入 10 3输出 3 6 9 2 7 1 8 5 10 4提示 对于 50 % 50\% 50% 的数据 n , m ≤ 50 n,m\le 50 n,m≤50 对于 80 % 80\% 80% 的数据 n ≤ 1000 , m ≤ 1 0 6 n\le1000,m\le10^6 n≤1000,m≤106 对于 100 % 100\% 100% 的数据 1 ≤ n ≤ 5000 , 1 ≤ m ≤ 1 0 9 1\le n\le5000,1\le m\le10^9 1≤n≤5000,1≤m≤109 程序1: 暴力 #includebits/stdc.h using namespace std; int n,m; queueintq; int main(){cinnm;for(int i1;in;i)q.push(i);for(int i1;in;i){//一共有n个人需要出圈for(int j1;jm-1;j){//前1~m-1的人不用出圈q.push(q.front());//备份一份本体到队尾q.pop();//本体删除}coutq.front() ;//输出出圈人q.pop();//出圈人出圈}return 0; }问题直接模拟会非常耗时尤其是 m n mn mn 的时候可以考虑使用模运算作答。 参考答案 #includebits/stdc.h using namespace std; int n,m; queueintq; int main(){cinnm;for(int i1;in;i)q.push(i);for(int i1;in;i){for(int j1;j(m-1)%q.size();j){//模运算记得不要直接m%nq.push(q.front());q.pop();}coutq.front() ;q.pop();}return 0; }2. 打印队列 题目描述 学生会里只有一台打印机但是有很多文件需要打印因此打印任务不可避免地需要等待。有些打印任务比较急有些不那么急所以每个任务都有一个 1 ∼ 9 1∼9 1∼9 间的优先级优先级越高表示任务越急。 打印机的运作方式如下首先从打印队列里取出一个任务 J J J如果队列里有比 J J J 更急的任务则直接把 J J J 放到打印队列尾部否则打印任务 J J J此时不会把它放回打印队列。 给定打印队列中各个任务的优先级以及所关注的任务在队列中的位置队首位置为 0 0 0求该任务完成的时刻。所有任务都需要 1 1 1 分钟打印。 例如打印队列为 { 1 , 1 , 9 , 1 , 1 , 1 } { 1,1,9,1,1,1 } {1,1,9,1,1,1}目前处于队首的任务最终完成时刻为 5 5 5。 输入描述 多组数据第一行一个整数 T T T表示了有 T T T 组数据。 每组数据第一行两个整数 n , m n,m n,m分别表示队列中任务数量以及所关注任务的位置。 接下来一行 n n n 个数分别表示 n n n 个任务的优先级。 输出描述 每组数据输出一行表示所关注任务的完成时刻。 样例1 输入 3 1 0 5 4 2 1 2 3 4 6 0 1 1 9 1 1 1输出 1 2 5提示 对于 20 % 20\% 20% 的数据 0 ≤ m n ≤ 10 0≤mn≤10 0≤mn≤10。 对于 60 % 60\% 60% 的数据 0 ≤ m n ≤ 100 0≤mn≤100 0≤mn≤100。 对于 100 % 100\% 100% 的数据 T ≤ 10 , 0 ≤ m n ≤ 1000 T≤10,0≤mn≤1000 T≤10,0≤mn≤1000。 参考答案 #includebits/stdc.h using namespace std; int t,n,m; int cnt[10]; struct task{int id,prio;//编号和优先级 }; bool check(int p){//查找打印优先级for(int ip1;i9;i)//遍历更高的优先级if(cnt[i]!0)//有更高优先级的任务等待打印return true;//不打印return false;//打印 } void solve(){memset(cnt,0,sizeof(cnt));//清空优先级计数queuetaskq;cinnm;for(int i0,p;in;i){//id从0开始cinp;//输入优先级cnt[p];//增加对应优先级任务的计数q.push({i,p});//存储任务}int ans0;while(!q.empty()){auto[id,p]q.front();//取出队首q.pop();if(check(p))//不可以打印q.push({id,p});else{ans;//增加做任务的次数cnt[p]–;//减少对应优先级任务的计数if(idm){//是否为关注任务coutansendl;return;}}} } int main(){cint;while(t–)solve();return 0; }3. 小组队列 题目描述 有 m m m 个小组 n n n 个元素每个元素属于且仅属于一个小组。 支持以下操作 push x使元素 x x x 进队如果前边有 x x x 所属小组的元素 x x x 会排到自己小组最后一个元素的下一个位置否则 x x x 排到整个队列最后的位置。pop出队弹出队头并输出出队元素出队的方式和普通队列相同即排在前边的元素先出队。 输入描述 第一行有两个正整数 n , m n,m n,m分别表示元素个数和小组个数元素和小组均从 0 0 0 开始编号。 接下来一行 n n n 个非负整数 A i A_i Ai 表示元素 i i i 所在的小组。 接下来一行一个正整数 T T T表示操作数。 接下来 T T T 行每行为一个操作。 输出描述 对于每个出队操作输出一行为出队的元素。 样例1 输入 4 2 0 0 1 1 6 push 2 push 0 push 3 pop pop pop输出 2 3 0提示 对于 30 % 30\% 30% 的数据 1 ≤ n ≤ 100 , 1 ≤ m ≤ 10 , T ≤ 50 1≤n≤100,1≤m≤10,T≤50 1≤n≤100,1≤m≤10,T≤50。 对于 100 % 100\% 100% 的数据 1 ≤ n ≤ 1 0 5 , 1 ≤ m ≤ 300 , T ≤ 1 0 5 1≤n≤10^5,1≤m≤300,T≤10^5 1≤n≤105,1≤m≤300,T≤105输入保证操作合法。 参考答案 #includebits/stdc.h using namespace std; int t,n,m; int a[100010];//每个人所属的队伍编号 queueintq;//队伍编号 queueintteam[305];//队伍成员的队列数组 int main(){cinnm;for(int i0;in;i)cina[i];cint;while(t–){string op;cinop;if(oppush){int x;cinx;if(team[a[x]].empty())//如果x所属队伍之前没有人入队q.push(a[x]);//将x所属队伍入队team[a[x]].push(x);//将x入队到对应队伍中} else {int xq.front();//取出下一个要出队的队伍编号coutteam[x].front()endl;//输出当前队首队伍中的第一个人的编号team[x].pop();//将当前队首队伍中的第一个人出队if(team[x].empty())//如果当前队首队伍中没有人了q.pop();//将当前队伍从队伍中删除}}return 0; }4. 日志统计 2.0 题目描述 小猴维护着一个程序员论坛。现在他收集了一份点赞日志日志共有 N N N 行。其中每一行的格式是 ts id表示在 t s \tt ts ts 时刻编号 i d \tt id id 的帖子收到一个赞。 现在小猴想统计有哪些帖子曾经是热帖。如果一个帖子曾在任意一个长度为 D D D 的时间段内收到不少于 K K K 个赞小猴就认为这个帖子曾是热帖。 具体来说如果存在某个时刻 T T T 满足该帖在 [ T , T D ) [T,TD) [T,TD) 这段时间内注意是左闭右开区间收到不少于 K K K 个赞该帖就曾是热帖。 除此之外小猴还想知道哪个长度为 D D D 的时间段内的热帖种类最多小猴称这个段时间为黄金时间段。这里统计帖子的出现次数只能使用该黄金时间段内的帖子也就是说在黄金时间段内的帖子之前可能是热帖但是仅在黄金时间段内却可能不是热帖。 例如 N 5 , D 3 , K 2 N5,D3,K2 N5,D3,K2 N N N 个帖子依次是 { 1 , 1 } , { 2 , 1 } , { 3 , 2 } , { 4 , 2 } , { 5 , 3 } {1,1},{2,1},{3,2},{4,2},{5,3} {1,1},{2,1},{3,2},{4,2},{5,3}以 { t s , i d } {\tt ts,id} {ts,id} 的形式依次给出每个帖子的信息那么在黄金时间段 [ 2 , 4 ] [2,4] [2,4] 内“热帖”的个数只有 1 1 1 个其中编号为 1 1 1 的帖子在时间 [ 2 , 4 ] [2,4] [2,4] 中只出现了一次虽然它曾经是热帖。 给定日志请你帮助小猴统计出黄金时间段内的热帖种类数以及输出所有曾是热帖的帖子编号。 输入描述 第一行包含三个整数 N , D , K N,D,K N,D,K。 以下 N N N 行每行一条日志包含两个整数 t s , i d \tt ts,id ts,id。 输出描述 输出两行 第一行表示黄金时间段内的帖子种类数。 第二行按从小到大的顺序输出热帖 i d \tt id id。每个 i d \tt id id 之间空格隔开, 如果没有任何热帖就输出 −1。 样例1 输入 7 10 2 0 1 0 10 10 10 10 1 9 1 100 3 100 3输出 1 1 3样例2 输入 7 10 1 0 1 0 10 10 10 10 1 9 1 100 3 100 3输出 2 1 3 10 样例3 输入 7 10 3 0 1 0 10 10 10 10 1 9 1 100 3 100 3输出 0 -1提示 对于 50 % 50\% 50% 的数据 1 ≤ K ≤ N ≤ 1000 1≤K≤N≤1000 1≤K≤N≤1000。 对于 100 % 100\% 100% 的数据 1 ≤ K ≤ N ≤ 2 × 1 0 5 , 0 ≤ i d , t s 1≤K≤N≤2×10^5,0≤\tt{id,ts} 1≤K≤N≤2×105,0≤id,ts ≤ 1 0 5 ≤10^5 ≤105。 参考程序 #includebits/stdc.h using namespace std; const int MAXN200010; int n,d,k,cnt; int sum[MAXN]; int isHot[MAXN]; struct LOG{int ts,id;bool operator(const LOGrhs)const{return tsrhs.ts;} }logs[MAXN]; queueLOGq;//某个长度为D的时间段的热搜情况 int main(){cinndk;for(int i1;in;i)cinlogs[i].tslogs[i].id;sort(logs1,logsn1);int ans0;for(int i1;in;i){while(!q.empty()q.front().tslogs[i].ts-d){if(sum[q.front().id]k)//点赞个数刚好是k条cnt–;//减少热帖个数sum[q.front().id]–;q.pop();}//把当前记录放入日志q.push(logs[i]);sum[logs[i].id];if(sum[logs[i].id]k){cnt;//新增一个热帖isHot[logs[i].id]1;//标记为热帖}ansmax(ans,cnt);}coutansendl;if(ans0)cout-1\n;else{for(int i1;in;i)if(isHot[i])couti ;}return 0; }三、映射真题
- 眼红的 Medusa 题目描述 虽然 Miss Medusa 到了北京领了科技创新奖但是她还是觉得不满意。原因是他发现很多人都和她一样获了科技创新奖特别是其中的某些人还获得了另一个奖项——特殊贡献奖。而越多的人获得了两个奖项Miss Medusa就会越眼红。于是她决定统计有哪些人获得了两个奖项来知道自己有多眼红。 输入格式 第一行两个整数 n , m n, m n,m表示有 n n n 个人获得科技创新奖 m m m 个人获得特殊贡献奖。 第二行 n n n 个正整数表示获得科技创新奖的人的编号。 第三行 m m m 个正整数表示获得特殊贡献奖的人的编号。 输出格式 输出一行为获得两个奖项的人的编号按在科技创新奖获奖名单中的先后次序输出。 样例1 输入 4 3 2 15 6 8 8 9 2输出 2 8提示 对于 60 % 60\% 60% 的数据 0 ≤ n , m ≤ 1000 0 \leq n, m \leq 1000 0≤n,m≤1000获得奖项的人的编号 2 × 1 0 9 \lt 2 \times 10^9 2×109 对于 100 % 100\% 100% 的数据 0 ≤ n , m ≤ 1 0 5 0 \leq n, m \leq 10^5 0≤n,m≤105获得奖项的人的编号 2 × 1 0 9 \lt 2 \times 10^9 2×109。 输入数据保证第二行任意两个数不同第三行任意两个数不同。 参考答案 #includebits/stdc.h using namespace std; mapint,boolmp; int n,m,awd[100010]; int main(){cinnm;for(int i1;in;i)cinawd[i];for(int i1,id;im;i)cinid,mp[id]true;for(int i1;in;i)if(mp[awd[i]]true)coutawd[i] ;return 0; }2. 美食评委 题目描述 一年一度的美食比赛火热进行中小猴作为评委需要对一些选手的菜品打分所有菜品从左到右排成一排编号依次为 1 ∼ n 1∼n 1∼n第 i i i 个菜品的美味值是 d i d_i di。小猴可以自己选择对那些选手的菜品进行打分但是必须满足以下两个条件 至少选择两位选手的菜品选择的第一个选手和最后一位选手的菜品美味值必须相同。 小猴所选的第一个菜品和最后一个菜品之间不包含第一个和最后一个菜品的部分菜品可以选择不要请你帮助小猴计算所选菜品美味值的总和的最大值是多少 输入描述 第一行一个整数 n n n 第二行 n n n 个整数 d i d_i di。 输出描述 一行一个整数表示所选菜品美味值的总和的最大值。 样例1 输入 5 1 2 3 1 2输出 8样例2 输入 5 100 1 1 -3 1输出 3提示 对 40 % 40\% 40% 的数据保证 2 ≤ n ≤ 5000 , d i 0 2≤n≤5000,d_i0 2≤n≤5000,di0 对 100 % 100\% 100% 的数据保证 2 ≤ n ≤ 2 × 1 0 5 , − 1 0 9 ≤ d i ≤ 1 0 9 2≤n≤2×10^5,-10^9\le d_i\le10^9 2≤n≤2×105,−109≤di≤109。
- 上一篇: 在哪公司建设网站移动互联网应用程序指的是什么
- 下一篇: 在哪里可以建设网站wordpress 错位
相关文章
-
在哪公司建设网站移动互联网应用程序指的是什么
在哪公司建设网站移动互联网应用程序指的是什么
- 技术栈
- 2026年04月20日
-
在哪个网站做外快设计如何做书签网站
在哪个网站做外快设计如何做书签网站
- 技术栈
- 2026年04月20日
-
在哪个网站做外快设计ppt网站
在哪个网站做外快设计ppt网站
- 技术栈
- 2026年04月20日
-
在哪里可以建设网站wordpress 错位
在哪里可以建设网站wordpress 错位
- 技术栈
- 2026年04月20日
-
在哪里可以学做网站市场营销公司
在哪里可以学做网站市场营销公司
- 技术栈
- 2026年04月20日
-
在哪里可以找到网站站长工具seo综合查询引流
在哪里可以找到网站站长工具seo综合查询引流
- 技术栈
- 2026年04月20日
