ACM
文章平均质量分 57
平时俱乐部训练以及周赛的一些典型题目,可以用作模板复习
球王武磊
愿我们穿越阴霾,依然心怀太阳。
展开
-
【阶乘计算】 PAT 7-7 阶乘的非零尾数 求n的阶乘最后一位非零数字
显然,输入n的范围最大为10的7次方,阶乘是一个超级超级巨大巨大的天文数字,千万级别的阶乘应该有上亿位数字,存在文件里估计都得有几百MB。测试得到最后一组样例为n=5001875,k=9,该样例通过程序计算得到输出为511705344(最后k位非零数字) 1250466(末尾0的个数),但是和下面链接的网站给出的计算结果正好在倒数第9位非零尾数有区别。上面链接中给出的代码只能求出非零部分的最后一位,而对于本问题,需要求非零部分的最后K位,在求解方法上需要有所变化。本文主要记录解题过程中遇到的问题。原创 2023-04-06 22:50:08 · 713 阅读 · 1 评论 -
【double浮点数精度 四舍五入问题】 算法笔记 Codeup 1918 简单计算器
【浮点数精度问题】 算法笔记 Codeup 1918 简单计算器题目本身难度不大,但是发现了一个非常关键的问题,就是浮点数在四舍五入的时候出现的问题。题目本身并不是本文要讨论的重点,这里就不放题干啦。众所周知,对于表达式计算的题目,其实如果采用Python当中的eval函数,一行就能搞定啦:while(True): temp=input() if(temp=="0"): break print(format(eval(temp),'.2f'))当然,这道题的正解显然是栈的原创 2022-01-29 01:16:52 · 1714 阅读 · 0 评论 -
2021 ICPC网络赛1 I Neiborhood Search
2021 ICPC网络赛1I Neiborhood Search【解题思路】签到题。由于输入当中没有给定输入数字的个数,我们需要使用stringstream来读取一整行,然后依次存放每个数。【AC代码】#include <iostream>#include <cstdio>#include <sstream>#include <algorithm>using namespace std;int n=0,a[100005];int mai原创 2021-09-21 02:19:22 · 730 阅读 · 2 评论 -
2021 ICPC网络赛1 H Mesh Analysis
2021 ICPC网络赛1H Mesh Analysis【解题思路】输入当中上面的坐标是没用的。我们分别记录每个点的neighboring points,以及它属于哪些elements即可。注意去重和排序,这里使用了vector,使用set也可以。注意,查询当中 q的范围是-109到109,即有可能不存在这个编号的点,输出的时候要特判一下,代码中给了注释,比赛的时候就是差这一点没有AC。【AC代码】#include <iostream>#include <cstdio>原创 2021-09-21 02:15:59 · 545 阅读 · 4 评论 -
2021 ICPC网络赛1 F Land Overseer
2021 ICPC网络赛1F Land Overseer【解题思路】签到题,简单平面几何。注意,如果b<=R时,直接从(0,0)走到(2a-R,0)即可。【AC代码】#include <iostream>#include <cstdio>#include <cmath>#include <algorithm>using namespace std;int main(){ ios::sync_with_stdio(0),cin.t原创 2021-09-21 02:08:58 · 452 阅读 · 2 评论 -
洛谷 P3378 【模板】堆
洛谷 P3378 【模板】堆【题目描述】给定一个数列,初始为空,请支持下面三种操作:给定一个整数 xx,请将 xx 加入到数列中。输出数列中最小的数。删除数列中最小的数(如果有多个数最小,只删除 11 个)。【输入格式】第一行是一个整数,表示操作的次数 nn。接下来 nn 行,每行表示一次操作。每行首先有一个整数 opop 表示操作类型。若 op = 1op=1,则后面有一个整数 xx,表示要将 xx 加入数列。若 op = 2op=2,则表示要求输出数列中的最小数。若 op = 3o原创 2021-09-17 15:22:43 · 748 阅读 · 2 评论 -
PAT(甲级)2021年秋季考试 满分题解
PAT(甲级)2021年秋季考试 满分题解7-1 Arrays and Linked Lists (20 分)【解题思路】按照题意模拟即可。我们开一个结构体数组,add表示数字对应的地址,num表示对应数组的编号。查询的同时,记录使用过的数组编号,最终使用过的数组数量,我们取其中的最大值即可。需要注意的是,A0数组是一开始默认就存在的,所以最终使用过的数组数量最小是1,而不能是0,有两个测试点一共3分是这种情况,否则不能AC。【满分代码】#include <iostream>#原创 2021-09-13 19:59:46 · 752 阅读 · 2 评论 -
2021.9.11 PAT甲级考试满分代码
2021.9.11 PAT甲级考试满分代码第1题 数组模拟#include <iostream>#include <cstdio>using namespace std;int n,m,q,start,length,tl=0,tr=0,ans=1;int flag[10005];struct node{ int add,num;}p[1300000];int main(){ ios::sync_with_stdio(0),cin.tie(0),cout.ti原创 2021-09-11 22:23:48 · 519 阅读 · 5 评论 -
PAT(甲级)2017年春季考试 PAT 1127 ZigZagging on a Tree (30 分) 二叉树
PAT(甲级)2017年春季考试PAT 1127 ZigZagging on a Tree (30 分) 二叉树【题目描述】Suppose that all the keys in a binary tree are distinct positive integers. A unique binary tree can be determined by a given pair of postorder and inorder traversal sequences. And it is a sim原创 2021-09-11 00:44:23 · 231 阅读 · 2 评论 -
PAT 1020 Tree Traversals (25 分) 二叉树
PAT 1020 Tree Traversals (25 分) 二叉树【题目描述】Suppose that all the keys in a binary tree are distinct positive integers. Given the postorder and inorder traversal sequences, you are supposed to output the level order traversal sequence of the corresponding bi原创 2021-09-11 00:20:30 · 296 阅读 · 2 评论 -
PAT(甲级)2021年春季考试 7-4 Recycling of Shared Bicycles (30 分) Floyd+DFS
PAT(甲级)2021年春季考试7-4 Recycling of Shared Bicycles (30 分) Floyd+DFS【题目描述】There are many spots for parking the shared bicycles in Hangzhou. When some of the bicycles are broken, the management center will receive a message for sending a truck to collect th原创 2021-09-09 11:08:32 · 342 阅读 · 2 评论 -
图论模板 连通分量数 DFS or 并查集
图论模板 连通分量数 DFS or 并查集C Battle Over Cities (25 分)(DFS)#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int num=2000005;//注意:链式前向星,无向图,开两倍(最大边数1000*1000的两倍)!!! int n,m,k,a,b,c,ans=0;//ans为连通分量数量 struct原创 2021-09-04 23:42:29 · 248 阅读 · 6 评论 -
图论模板 最短路+最小生成树
图论模板 最短路+最小生成树5.21 最小生成树 Prime#include <iostream>#include <cstdio>#include <queue>using namespace std;const int INF=0x3f3f3f3f;//无穷大 int n,ans=0,g[105][105],dis[105],vis[105];struct edge{ int u,v,d;//边的起点、终点、权值 bool operator &原创 2021-09-04 22:43:46 · 479 阅读 · 4 评论 -
PAT(甲级)2011年秋仿真卷
PAT(甲级)2011年秋仿真卷发现PAT练习的网站上可以购买往年的真题试卷进行练习,购买时光机以后还可以看到考试的实时榜单,和当时现场考试的考生同场竞技。最近开始为准备9月的PAT考试复习刷题,争取能够取得理想的成绩!A World Cup Betting (20 分)【解题思路】算是签到题,没什么技术含量。【满分代码】#include <iostream>#include <cstdio>using namespace std;int main(){ do原创 2021-08-26 18:57:21 · 325 阅读 · 2 评论 -
洛谷 P1130 红牌 动态规划 DP
洛谷 P1130 红牌 动态规划 DP【题目描述】某地临时居民想获得长期居住权就必须申请拿到红牌。获得红牌的过程是相当复杂 ,一共包括NN个步骤。每一步骤都由政府的某个工作人员负责检查你所提交的材料是否符合条件。为了加快进程,每一步政府都派了M个工作人员来检查材料。不幸的是,并不是每一个工作人员效率都很高。尽管如此,为了体现“公开政府”的政策,政府部门把每一个工作人员的处理一个申请所花天数都对外界公开。为了防止所有申请人都到效率高的工作人员去申请。这M×N个工作人员被分成M个小组。每一组在每一步都有一原创 2021-08-22 12:58:01 · 323 阅读 · 3 评论 -
洛谷 P1352 没有上司的舞会 树形DP
洛谷 P1352 没有上司的舞会 树形DP【题目描述】某大学有 n 个职员,编号为 1…n。他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司。现在有个周年庆宴会,宴会每邀请来一个职员都会增加一定的快乐指数 ri ,但是呢,如果某个职员的直接上司来参加舞会了,那么这个职员就无论如何也不肯来参加舞会了。所以,请你编程计算,邀请哪些职员可以使快乐指数最大,求最大的快乐指数。【输入格式】输入的第一行是一个整数 n。第 2 到第 (n+1) 行,每行一个整数,第原创 2021-08-11 06:45:38 · 300 阅读 · 2 评论 -
HDU 1054 Strategic Game 树形DP
HDU 1054 Strategic Gam 树形DP学校CSP模拟考试的题目,在这道题的基础上稍微进行了一点修改,即有一个结点是指挥部,必须有士兵把守,见下面问题描述。HDU这道题稍加修改即可,代码当中做了注释。【问题描述】现有一城市,假设所有的道路可形成一个具有n个节点的树。为了守卫这个城市,需要有士兵看守所有的道路。如果在一个节点上放置一个士兵,那么和这个节点相连的所有道路都能被看守住。在这n个节点中,指挥部在其中一个节点上,必须有士兵看守。请你设计一个部署方案,为了看守住所有道路,最少需要部署原创 2021-08-11 06:38:52 · 329 阅读 · 2 评论 -
2021牛客暑期多校训练营7 I xay loves or 二进制运算
2021牛客暑期多校训练营7I xay loves or 二进制运算【题目描述】xay loves or. He gives you x and s, you need to calculate how many positive integer y satisfy x or y=s .【输入描述】The first line contains two positive integers x and s .It’s guaranteed that 1≤x,s<2^31 .【输出描述】P原创 2021-08-10 23:33:40 · 267 阅读 · 2 评论 -
【算法设计与分析】 优先队列搜索算法求解八数码问题(搜索算法)
【算法设计与分析】 优先队列搜索算法求解八数码问题(搜索算法)【问题描述】采用优先队列搜索算法求解八数码问题,用一最小堆来存储活结点表,其优先级是结点的估价函数值。估价函数值是状态的深度加上不在位的将牌数。采用heapq模块来实现最小堆。如果迭代3000次,还没有找到目标状态,则输出error。【输入形式】在屏幕上输入起始状态。【输出形式】如果找到目标状态,则显示从起始状态到目标状态的搜索路径;如果迭代3000次,还没有找到目标状态,则输出error。【样例1输入】2 8 31 6 47原创 2021-06-23 14:50:26 · 1352 阅读 · 2 评论 -
2021年度训练联盟热身训练赛第七场 German Collegiate Programming Contest 2020
2021年度训练联盟热身训练赛第七场German Collegiate Programming Contest 2020Problem A: Adolescent Architecture先将圆柱体的半径乘2得到直径,将所有的积木按照边长(直径)排序,从上到下遍历,如果是圆柱体,判断它上面的一个正方体的底面能否放得下(即判断圆是否大于正方形的外切圆,圆的半径应大于正方形边长的根号2倍),否则则不能搭出,输出impossible。AC代码:#include <iostream>#inc原创 2021-05-03 13:07:24 · 513 阅读 · 3 评论 -
CodeForces 1506F Triangular Paths 找规律 路径
CodeForces 1506F Triangular Paths 找规律 路径【题目描述】Consider an infinite triangle made up of layers. Let’s number the layers, starting from one, from the top of the triangle (from top to bottom). The k-th layer of the triangle contains k points, numbered from原创 2021-04-14 02:25:21 · 278 阅读 · 2 评论 -
CodeForces 1506G Maximize the Remaining String 单调栈
CodeForces 1506G Maximize the Remaining String 单调栈【题目描述】You are given a string s, consisting of lowercase Latin letters. While there is at least one character in the string s that is repeated at least twice, you perform the following operation:you choos原创 2021-04-14 02:13:47 · 345 阅读 · 2 评论 -
2021年度训练联盟热身训练赛第五场 H In-place Sorting
【2021年度训练联盟热身训练赛第五场】H In-place Sorting (贪心 字典序比较)【题目描述】Woe is you – for your algorithms class you have to write a sorting algorithm, but you missed the relevant lecture! The subject was in-place sorting algorithms, which you deduce must be algorithms th原创 2021-04-12 00:15:57 · 2806 阅读 · 7 评论 -
CodeForces 1510K King‘s Task DFS暴力搜索
CodeForces 1510K King’s Task【题目描述】The brave Knight came to the King and asked permission to marry the princess. The King knew that the Knight was brave, but he also wanted to know if he was smart enough. So he asked him to solve the following task.There原创 2021-04-08 08:05:22 · 638 阅读 · 0 评论 -
2021年度训练联盟热身训练赛第二场 F Interstellar Love DFS 并查集
【2021年度训练联盟热身训练赛第二场】F Interstellar Love (DFS or 并查集)【题目描述】After two years of sharing a bedroom with you in a college dorm, Jeff finally has his own room. Excited about inviting girls over to his room, he ponders over what decorations the fairer sex wil原创 2021-04-04 02:43:27 · 1753 阅读 · 4 评论 -
2021年度训练联盟热身训练赛第二场 J Lowest Common Ancestor 进制转换
【2021年度训练联盟热身训练赛第二场】J Lowest Common Ancestor (进制转换)【题目描述】Perfect binary trees are one of the coolest structures that computer scientists study. They have a lot of properties that make them very nice to work with. One of the nicest properties is that the原创 2021-04-02 00:05:40 · 274 阅读 · 2 评论 -
2021年度训练联盟热身训练赛第四场 B Connect3 棋盘状态 DFS暴力搜索
【2021年度训练联盟热身训练赛第四场】B Connect3 棋盘状态 DFS暴力搜索【题目描述】【输入描述】【输出描述】测试样例1输入22 3输出516测试样例2输入34 4输出177【题目分析】这道题是一个类似三子棋的游戏,双方谁先在一行、一列或对角线上达到连续三个棋子即获胜。只不过和一般下棋的区别是,棋盘是竖着放的,也就是每次放入棋子只能落入当前一列最底下的空位。题目输入给了黑方第一手放入棋子的列数x(即落在(1,x)处),以及白方最后一手落子的位原创 2021-03-29 00:52:45 · 255 阅读 · 4 评论 -
2021年度训练联盟热身训练赛第四场 I Slot Machines 字符串 KMP 周期
【2021年度训练联盟热身训练赛第四场】I Slot Machines (字符串 KMP 周期)【题目描述】【输入描述】【输出描述】Your program is to write to standard output. Print two integers k and p in one line.The following shows sample input and output for two test cases.测试样例1输入6612534 3157 423 3157 4原创 2021-03-29 00:31:45 · 321 阅读 · 2 评论 -
2021年度训练联盟热身训练赛第三场 M Zipline 简单几何
【热身训练赛第三场】 M Zipline 简单几何题目大意:在两根柱子(高度分别为g和h,水平距离为w)的顶端系一根绳子,绳子最低端距离地面的高度不得小于r,求绳子长度的最小值和最大值。我们很容易发现,绳长的最小值即为绳子绷紧的情况,根据w与g、h的差,用一个勾股定理即可得到。绳长的最大值显然是绳子最低端距离地面为r的情况。我们将g和h分别减去r,问题即转化为在水平线段w上找一点x,使得x分别连接两根柱子顶端构成的直角三角形斜边长之和(如下图a+b)最大。我们可以通过求导发现变化规律,容易得到结论原创 2021-03-22 00:35:27 · 245 阅读 · 2 评论 -
2021年度训练联盟热身训练赛第三场 A Circuit Math 后缀表达式
【热身训练赛第三场】 A Circuit Math后缀表达式+简单数字电路输入电路元件(字母)的状态(T或F)及其连接方式(*表示与,+表示或,-表示非),输出最后的运算结果。对输入从前往后处理,若遇到字母,则将其值(True或False)存入栈中;若遇到运算符,则取出栈顶的一个(非)或两个(与、或)元素进行运算,并将运算得到的结果存入栈中。最终栈中剩下的那个元素即为要求的答案。样例输入:4T F T FA B * C D + - +样例输出:FAC代码:#include &l原创 2021-03-22 00:17:32 · 1585 阅读 · 10 评论 -
蓝桥杯 BASIC-18 矩形面积交 思维
【蓝桥杯】 BASIC-18 矩形面积交 思维问题描述 平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。 输入格式 输入仅包含两行,每行描述一个矩形。 在每行中,给出矩形的一对相对顶点的坐标,每个点的坐标都用两个绝对值不超过10^7的实数表示。 输出格式 输出仅包含一个实数,为交的面积,保留到小数后两位。 样例输入1 1 3 32 2 4 4样例输出1.00【解题思路】这原创 2021-03-17 00:32:48 · 327 阅读 · 2 评论 -
蓝桥杯 BASIC-28 Huffman树 POJ 3253 Fence Repair
【蓝桥杯】 BASIC-28 Huffman树 ( POJ 3253 Fence Repair )POJ3253的题目背景其实就是哈夫曼树。输入格式 输入的第一行包含一个正整数n(n<=100)。 接下来是n个正整数,表示p0, p1, …, pn-1,每个数不超过1000。 输出格式 输出用这些数构造Huffman树的总费用。 样例输入55 3 8 2 9样例输出59【题目分析】今天做了蓝桥杯官网基础练习里的这道题,题目描述就是Huffman树,大家在数据原创 2021-03-16 22:45:07 · 241 阅读 · 2 评论 -
2021年度训练联盟热身训练赛第二场 D Soccer Standings 结构体 sort 排序
【热身训练赛第二场】 D Soccer Standings今天比赛一道比较有意思的题目,要求根据足球比赛结果输出积分榜。使用结构体存储每支球队的数据,定义cmp函数以后使用sort排序即可。排序时需要考虑的条件比较多,要注意细节,也算是个模拟题了,写了八十多行。足球狗对310太熟悉了哈哈。继续努力。【题目描述】Soccer fever has gripped the world once again, and millions of people from dozens of countrieswi原创 2021-03-14 21:28:54 · 417 阅读 · 2 评论 -
2021年度训练联盟热身训练赛第一场 ICPC North Central NA Contest 2019
2021年度训练联盟热身训练赛第一场ICPC North Central NA Contest 2019比赛题目:这学期的周赛都将以训练联盟组织的牛客网上的比赛来进行。这是本学期的第一场比赛,也是我第一次参加五个小时的ICPC模拟赛,过了6道题,表现就目前而言算比较满意了,但赛后看了其他题目别人AC的代码,自己还是有很大提升空间的。继续努力!以下是我通过题目的AC代码:A题 Weird Flecks, But OK最小覆盖圆的模板题,也差不多是第一次做计算几何题,照着模板敲就可以通过了。#i原创 2021-03-07 20:40:03 · 496 阅读 · 4 评论 -
洛谷 P3916 图的遍历 链式前向星 反向DFS
【洛谷】 P3916 图的遍历 链式前向星 反向DFS【题目内容】样例输入4 31 22 44 3样例输出4 4 3 4【解题思路】这是一道经典的图论DFS题。同时复习一下链式前向星的使用,因为它相比邻接表可以更加节省空间。由于题目当中图上有可能存在环,所以我们需要想办法解决。当然可以用到缩点等更加高级的算法,但这里我们不用到也能够解决。后面会阐述解题思路。先给出TLE的80分代码:题目中说明n、m可以达到10的5次方,有两组数据TLE了。程序当中我还进行了注释://vis原创 2021-03-06 00:48:23 · 379 阅读 · 3 评论 -
CodeForces 1295C Obtain The String 字符串DP预处理
CodeForces 1295C Obtain The String字符串DP预处理题目内容You are given two strings s and t consisting of lowercase Latin letters. Also you have a string z which is initially empty. You want string z to be equal to string t. You can perform the following operation原创 2020-11-25 00:09:28 · 270 阅读 · 2 评论 -
CodeForces 1406B Maximum Product
CodeForces 1406B Maximum Product周赛的签到题。题目大意每组数据给出5个或以上的整数,求从中选出5个数,使它们的乘积最大。样例输入45-1 -2 -3 -4 -56-1 -2 -3 1 2 -16-1 0 0 0 -1 -16-9 -7 -5 -3 -2 1样例输出-120120945样例解释In the first test case, choosing a1,a2,a3,a4,a5 is a best choice: (−1)⋅(−2原创 2020-11-23 01:20:55 · 240 阅读 · 2 评论 -
CF1213E Two Small Strings 细节
CF1213E Two Small Strings简单的字符串构造题,但是要注意细节。ACM周赛的时候,WA on test 4,WA on test 10,WA on test 20…最后几分钟好不容易才A了。还是要更加注意考虑一些细节。因为只要输出任意一种符合情况的答案,我们只用考虑两种不同的方案,就能够解决所有的情况。一种是形如“abcabcabc”,字母按照周期输出;一种是形如“aaabbbccc”,每个字母连续输出。对于这道题,难度并不是很大,直接枚举所有情况即可,找到一种符合要求的方案。原创 2020-11-18 00:53:41 · 261 阅读 · 2 评论 -
洛谷 P3368 【模板】树状数组 2 区间修改 单点查询
洛谷 P3368 【模板】树状数组 2 区间修改 单点查询题目描述如题,已知一个数列,你需要进行下面两种操作:将某区间每一个数数加上 x;求出某一个数的值。输入格式第一行包含两个整数 N、M,分别表示该数列数字的个数和操作的总个数。第二行包含 N 个用空格分隔的整数,其中第 i 个数字表示数列第 i 项的初始值。接下来 M 行每行包含 2 或 4个整数,表示一个操作,具体如下:操作 1: 格式:1 x y k 含义:将区间 [x,y] 内每个数加上 k;操作 2: 格式:2 x 含义:输原创 2020-11-07 20:05:53 · 233 阅读 · 2 评论 -
洛谷 P3374 【模板】树状数组 1 单点修改 区间查询
洛谷 P3374 【模板】树状数组 1题目描述如题,已知一个数列,你需要进行下面两种操作:将某一个数加上 x求出某区间每一个数的和输入格式第一行包含两个正整数 n,m,分别表示该数列数字的个数和操作的总个数。第二行包含 n 个用空格分隔的整数,其中第 i 个数字表示数列第 i 项的初始值。接下来 m 行每行包含 3 个整数,表示一个操作,具体如下:1 x k 含义:将第 x 个数加上 k2 x y 含义:输出区间 [x,y] 内每个数的和输出格式输出包含若干行整数,即为所有操作 2原创 2020-11-07 20:03:19 · 362 阅读 · 2 评论