- 博客(17)
- 收藏
- 关注
原创 C++ WZOI 糖果
假设 f[i][j]是由f[i-1][d]转移过来的,那么j=(d+a[i]%k)%k, 根据这个公式,可以得出d是(k+j-a[i]%k)%k,()里加一个k,是为了防止 j-a[i]%k<0。思路:状态转移方程:f[i][j]=max(f[i][j],max(f[i-1][j],f[i-1][(k+j-a[i]%k)%k]+a[i]));2.取第i个包,那么就要判断能转移到f[i][j]的前一种状态, f[i-1][(k+j-a[i]%k)%k],f[1][a[1]%k]=a[1];
2024-08-04 10:59:27
159
原创 C++ 整数去重(WZOI 296)
给定含有n个整数的序列,要求对这个序列进行去重操作。所谓去重,是指对这个序列中每个重复出现的数,只保留该数第一次出现的位置,删除其余位置。输入包含两行:第一行包含一个正整数n(1 <= n <= 200000),表示第二行序列中数字的个数;第二行包含n个整数,整数之间以一个空格分开。每个整数大于等于0、小于等于100,000。输出只有一行,按照输入的顺序输出其中不重复的数字,整数之间用一个空格分开。5hash表()的应用,用于记录当前的数有没有出现过。时间限制: 1500ms。
2024-07-31 20:21:44
196
原创 WZOI 604 画螺旋矩阵(肝帝解法,无敌水文)
提交数: 59, 通过率: 62.71%, 平均分: 66.95螺旋矩阵是指一个呈螺旋状的矩阵,他的数字由第一行开始到右边不断变大,向下变大,向左变大,向上变大,如此循环。输入一个数n。画出对应的n*n的螺旋矩阵。n<=105时间限制: 1000ms空间限制: 256MB来源: 高中教材。
2024-07-25 14:07:36
170
原创 保存数据——C++文件输入输出_fstream类
此外,在使用open函数关联后,就可以把定义的ifstream类对象当成cin、ofstream类对象当成cout使用啦!
2024-07-25 08:53:29
694
原创 WZOI 699 白云校区的奶牛
白云校区的食品学院最近养了只奶牛作奶品分析,最近下大雨奶牛趁机走丢了,小明被告知奶牛正在某位置上吃草,他很想尽快捉住它。假设小明刚开始在位置X (0 ≤X≤ 100,000),假设他与奶牛在一条直线上,奶牛在位置Y (0 ≤Y≤ 100,000)。小明有两种移动的方法:走路或瞬间移动:(1)走路,小明可以在1秒钟从位置X 走到位置X – 1和位置X + 1;(2)瞬间转移,小明可以在1秒钟从位置X 转移到位置2X。
2024-07-09 14:27:29
424
原创 WZOI 872 查字典(map练习)
小明正在复习全国英语四级考试,他手里有一本词典,现在有很多单词要查。第1行是一个长度小于或等于100的字符串,表示这个单词,全部小写字母,单词不会重复。第1行1个正整数N,N<=10,000,表示字典中一共有多少个单词。接下来的M行,每行一个字符串,表示要查的单词,保证在字典中存在。接下来一行是1个整数M,M<=10,000,表示要查的单词数。1.由于单词各不相同,所以只要将单词排序,每次可以二分查找。M行,每行一个正整数,表示第i个单词在字典中的页码。第2行是1个整数,表示这个单词在字典中的页码。
2024-07-09 14:15:52
178
原创 WZOI 873 讲话模式(map练习2)
如果出现次数最多的单词有多个,则输出字典序最小的那个。在此所说的单词,是一个连续的,由非数字、非字母的字符或是行初、行末分隔开的字符串。输入包含至少一个字母或数字,即一个来自于0-9,A-Z,a-z之间的字符。建立maxn_s作为答案,在将单词储存进map的同时找到maxn_s(目标单词),最后访问m[maxn_s]即可。现在给出一个字符串,需要求出其中出现次数最多的单词。输出一行,为出现次数最多的单词和它出现的次数,以一个空格隔开。时间限制: 1000ms。空间限制: 256MB。
2024-07-09 14:13:16
181
原创 WZOI 874 最大收益(map练习3)
每个订单给出需求商品和需求数量。否则,输出“-X“,X表示第一个无法满足的订单编号。储存收益和库存,map mp储存商品。每种商品的个数保证在int范围内,保证每个订单中都不会出现没有的商品,商品名的长度
2024-07-09 14:00:22
197
原创 WZOI 849 周末舞会
假设在周末舞会上,男士们和女士们进入舞厅时,各自排成一队。跳舞开始时,依次从男队和女队的队头上各出一人配成舞伴。规定每个舞曲能有一对跳舞者。若两队初始人数不相同,则较长的那一队中未配对者等待下一轮舞曲。现要求写一个程序,模拟上述舞伴配对问题。第一行男士人数m和女士人数n;第二行舞曲的数目k。共k行,每行两个数,表示配对舞伴的序号,男士在前,女士在后。4 361 12 23 34 11 22 3时间限制: 1000ms空间限制: 256MB。
2024-06-23 11:28:09
261
原创 C++ 双向队列———特殊的队列 (WZOI 864 滑动窗口)
双向队列,顾名思义就是能在双向(队头和队尾)进行操作的一种特殊的队列。如果说队列是一个只能在一端扔东西,在另一端丢东西的容器,那么双向队列就好比一个两端都通的容器,既可以在头部扔进东西,在尾部倒出东西;也能在尾部扔进东西,在头部倒出东西的容器。它支持在队头、队尾插入或删除元素。
2024-06-22 12:51:39
662
原创 C++ 算法——广搜BFS(WZOI 689 简易小迷宫)
o,a,b,c都是树的节点,o点连接a,b,c点,a,b,c点连接其他的节点……以这棵树为例,DFS就是从o点从左往右搜,一根根“枝干”地搜,从o点开始,按顺序先搜a点,a点延伸出2条“枝干”,就从最左边那条往下搜,搜到末端退到a点,再搜从左往右数第二条与a点连接的“枝干”……首先思考DFS,DFS先搜a点,搜到d点,d点没有子节点,就搜e点,搜到了i点……搜完a点搜b点,搜到f点,搜f点搜到j点。也就是说,要用DFS搜h点必须把前面a,b,c,d,e,f,g,i,j,k点全部搜完才能搜到它,效率极低。
2024-06-10 13:06:16
989
原创 C++ 队列(WZOI 846 模拟队列)
队列和栈不同。它虽然也是一个表,但是遵守“先进先出”的原则,简称FIFO(First in first out)表。队列和栈一样,都是从一头进出。如果把栈比作一个桶,不停往里面放东西,那么队列就像个水管,不停往一头塞东西。需要时,就把东西一件件倒出来。水管塞进东西的那一头叫队尾,倒出东西的那一头叫队头。注意,栈是从栈顶插入元素,队列是从队尾插入元素。队列和栈相同,无法用下标访问,更无法遍历。请不要试图这么做。
2024-06-04 21:25:48
260
原创 WZOI 548 飞行员的工资
他的公司有N ( N是偶数 ) 个飞行员组成 N/2 个机组,每个机组包括两个飞行员——机长和他的助手,机长必须比他的助手年长。同一个飞行员当机长的工资要高于当助手的工资,然而就同一个机组而言,一个助手的工资可能高于他的机长。每行包含两个整数x和y,由一个空格隔开,1<=y<x<=100,000,x表示该飞行员当机长的工资,y表示当助手的工资。接下来的N行包含每个飞行员的工资,按飞行员的年龄排序,最年轻的飞行员的工资排在第一行。时间限制: 1000ms。空间限制: 256MB。
2024-02-29 20:21:28
179
原创 WZOI 544 food
PKS的餐桌是一个长方形 (即第一盘 和第N盘 不相连)上面放着N盘食物,每一盘食物都有其相应饱食值,PKS必须选择其中的不能重叠的(即一盘食物不能吃多次)M段食物来吃(每一段都不能小于1)。他太饿了,他希望能得到最大的饱食值。但是食物可能会有负的饱食值,比如吃了会拉肚子。20%的数据n<=100000 m=1。40%的数据n<=100000 m=2。20%的数据 n<=100 m=1。20%的数据 n<=100 m=2。一行 为能得到的最大的饱食值。时间限制: 1000ms。空间限制: 128MB。
2024-02-29 20:17:34
207
原创 WZOI 600 递归n阶勒让德多项式
当n>1的时候,p(n,x)=((2*n-1)*x*p(n-1,x)-(n-1)*p(n-2,x))/n。在一行内有一个正整数n和一个实数x,用空格分隔。输出pn(x)的值,小数点后保留4位小数。当n=0的时候,p(0,x)=1。当n=1的时候,p(1,x)=x。时间限制: 1000ms。请注意行尾输出换行。空间限制: 32MB。
2024-02-28 21:26:05
180
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人