
ACM 竞赛
小萌新的ACM练习记录
linpingyuan
在读博士生,研究兴趣为增强现实/虚拟现实、人机交互和数据可视化。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据统计(基于文件输入输出)
输入一些整数,求出它们的最大值、最小值、平均值(保留三位小数)。输入保证这些数都是不超过1000的整数。 样例输入: 2 8 3 5 1 7 3 6 样例输出: 1 8 4.375基于文件重定向:#define LOCAL //作用:仅在本机使用重定向,提交时将其删掉 #include <stdio.h>const int INF=10000;int main(){ #if原创 2017-01-21 11:20:33 · 377 阅读 · 0 评论 -
开灯问题
有n盏灯,编号为1~n,第1个人把所有灯打开,第2个人按下所有编号为2的倍数的开关(这些灯将被关掉),第3个人按下所有编号为3的倍数的开关(其中关掉的灯被打开, 开着灯将被关闭),依此类推。一共有k个人,问最后有哪些灯开着?输入:n和k,输出开着的灯编号。k≤n≤1000。样例输入: 7 3 样例输出: 1 5 6 7 #include <stdio.h> #includ原创 2017-01-20 21:31:09 · 281 阅读 · 0 评论 -
Uva 10474 Where is the Marble?(排序与检索)
本题若掌握了sort()和lower_bound()两个函数,就无难点。#include <cstdio> #include <algorithm> using namespace std;const int maxn=10005;int main(){ int N,Q,kase=0; while(scanf("%d%d",&N,&Q)==2&&N){ int mar原创 2017-02-12 11:45:46 · 269 阅读 · 0 评论 -
Uva 10976 Fractions Again(简单枚举)
思路:枚举y,其范围为[k,2k]#include <cstdio> using namespace std; const int maxk=10005;int xs[maxk]; //不能与变量同名 int ys[maxk]; int main(){ int k,cnt; while(scanf("%d",&k)!=EOF){ cnt=0; in原创 2017-03-05 17:19:07 · 271 阅读 · 0 评论 -
Uva 725 Division(简单枚举)
这题算是自己系统学习暴力求解法做的第一道题。总结如下: 1.在付诸于实践之前,将问题进行分析,有利于使暴力求解不单单只是暴力,还有点巧劲。 2.如一道题中有多个对象,要选取合适的对象(如范围好确定的,能乘法的不用除法等),确定其枚举范围,通过它来求解其他对象。 3.枚举目前遇到的两种思路: 1)生成—测试法:将枚举的范围扩大,再对求解出的东西进行测试看是否满足要求。适用于在枚举范围不好缩小得原创 2017-03-05 17:06:46 · 425 阅读 · 0 评论 -
Uva 101 The Blocks Problem(不定长数组 vector)
本题思路上没有什么难点,直接模拟操作便可。 难点在于如何用vector模拟出这些操作。通过这题,可以对vector的用法有所理解。 在框架上,由于不同操作有很多相同之处,可将它们提炼出来,故本题用到很多自定义函数,算是自顶向下的求解。但是由于我的思维不够成熟,共同点的提炼较浅,更简洁的方法参见《算法竞赛入门经典》P110.//#define LOCAL#include <cstdio> #inc原创 2017-02-13 12:24:31 · 303 阅读 · 0 评论 -
CCCC_L2解题报告
题目链接:https://www.patest.cn/contests/gplt数组索引应用L2_002 链表去重题目要求补充: 若没有需要删除的节点,则不输出删除节点。 思路:通过自身地址和next遍历链表,对每一个进行节点的值进行判断保留与否,将其地址放入res数组或者del数组 tip:直接利用数组的索引作地址 复杂度:O(n)#include <bits/stdc++.h> using原创 2017-04-12 17:25:27 · 959 阅读 · 0 评论 -
Uva 11059 Maximum Product(简单枚举)
·思路:枚举对象:子序列的起点和终点#include <cstdio> #include <cmath> #include <cstring> using namespace std;const int maxn=20; const long long INF=(long long)pow(10,18); int S[maxn];int main(){ int n,kase=1; w原创 2017-03-05 17:17:00 · 262 阅读 · 0 评论 -
UVa 133 The Dole Queue(圈的下标处理)
本题难点在于用数组处理圈状物时下标的计算。#include <cstdio> #include <string.h> using namespace std;const int maxn=25;int main(){ int n,k,m; while(scanf("%d%d%d",&n,&k,&m)==3&&n){ int people[maxn]; memset(p原创 2017-02-10 11:21:06 · 373 阅读 · 0 评论 -
Uva 489 Hangman Judge
本题不难,但是我花了一个学期才AC(= =)。找到原因后想狠狠地揍自己一顿。原来是输出的一个单词拼错了,一直在解题思路和细节上找问题的我还曾吐槽这是什么脑残游戏= = 以后需细心。#include <iostream> #include <cstring> #include <cstdio>using namespace std;const int maxn=100; char word[max原创 2017-02-09 20:39:23 · 273 阅读 · 0 评论 -
Uva 400 Unix Is (C++中字符串处理的盲点)
输入正整数n([1,100])以及n个文件名,排序后(按照ASCII码升序排列)按下列格式要求输出: 1.按列优先的方式左对齐输出; 2.每行输出最多60个字符并使输出的行数最少; 3.假设输入的最长文件名有M([1,60])字符,则最右列有M个字符,其他列都是M+2个字符。 Input: 每组输入包括两部分:第一行正整数N;接下来的N行为N个文件名。 OutPut: 第一行为—-(6原创 2017-01-31 12:24:44 · 367 阅读 · 0 评论 -
回文词(Uva 401)
输入一个字符串,判断它是否为回文串以及镜像串。输入字符串保证不含数字0。所谓回文串,就是反转以后与原串相同,如abba和madam。所谓镜像串,就是左右镜像之后和原串相同,如2S和3AIAE。注意,并不是每个字符在镜像之后都能得到一个合法字符。(空白项表示该字符镜像后不能得到一个合法字符。)输入的每行包含一个字符串,(保证只有上述字符。不含空白字符),判断它是否为回文串和镜像串(共四种组合)。每组数原创 2017-01-23 11:30:21 · 356 阅读 · 0 评论 -
竖式问题
找出所有形如abc*de(三位数乘以两位数)的算式,使得在完整的竖式中,所有数字都属于一个特定的数字集合。输入数字集合(相邻数字之间没有空格),输出所有竖式。每个竖式前应有编号,之后应有一个空行。最后输出解的总数。具体格式见样例输出(为了便于观察,竖式中的空格改用小数点显示,但你的程序应该输出空格,而非小数点)。 样例输入: 2357 样例输出:自己的蠢方法/⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄:原创 2017-01-21 21:36:17 · 317 阅读 · 0 评论