
【ACM比赛真题】
WangMeow
这个作者很懒,什么都没留下…
展开
-
山东省第八届ACM大学生程序设计竞赛 --- company (贪心+前缀和)
Problem DescriptionThere are n kinds of goods in the company, with each of them has a inventory of and direct unit benefit . Now you find due to price changes, for any goods sold on day i, if its d...原创 2018-04-21 20:37:47 · 686 阅读 · 0 评论 -
【ACM-ICPC 2018 焦作赛区网络预赛】G题Give Candies ---- 费马小定理优化快速幂+模拟大数取模
题目链接做法:一、优化快速幂:前提p为质数, gcd(a,p) = 1 对于计算a^b % p 可优化: a^b % p = a^(b%(p-1))%p 证明:设b = kp+x a^b % p = a^(kp+x) % p = a^kp * a^x mod p 由费马小定理a^p % p = a % p 可以将 a^kp % p 化简为 a^k % p 所以上述等式 = a^...原创 2018-09-16 20:20:44 · 198 阅读 · 0 评论 -
【ACM-ICPC 2018 徐州赛区网络预赛】B题 BE, GE or NE ---- 博弈背景+记忆化搜索★
题目链接做法:首先我们根据题意知道这两个人玩游戏,每次都是选取对自己最优的策略。 然后在数据规模上,n<=1000,完全可以用记忆化搜索。 每个人针对每个选项,都做出这一步的最优策略。然后进行模拟即可AC代码:#include<bits/stdc++.h>#define IO ios_base::sync_with_stdio(0),cin...原创 2018-09-12 16:58:44 · 163 阅读 · 0 评论 -
[HDU](5514)Frogs ---- 技巧容斥原理★
题目传送门Hint: 2015ACM/ICPC亚洲区沈阳站总结:指数型的容斥一定会超时……TLE到哭 无可奈何只好赛后去看了题解,才发现容斥才可这样写 重点是用vis[i]-num[i]来求m所有因子的对结果贡献(这个真的是很有技巧的想法)AC代码:#include<bits/stdc++.h>#define IO ios_base::syn...原创 2018-10-02 10:34:53 · 183 阅读 · 0 评论 -
[HDU](5536)Chip Factory ---- 0-1字典树★
题目传送门Hint: 2015ACM/ICPC亚洲区长春站-重现赛做法:0-1字典树模板题,因为题目中要求,i,j,k是不同的,所以当我们选取两个数求和找与这个值异或最大的数时,要先把这俩求和的数从字典树中删掉,求完和,再增加。AC代码:#include<bits/stdc++.h>#define IO ios_base::sync_with_s...原创 2018-10-03 21:17:19 · 150 阅读 · 0 评论 -
【ACM-ICPC 2018 北京赛区网络预赛】B题Tomb Raider ---- 状态压缩+思维★
题目传送门题意:找出这n个串的最长公共子序列,我们把每个串都看成环,子序列可以从环中找出。 其中要保证公共子序列的字典序最小。 比如: abcdefkedajceu 其中他们的公共子序列是 acd 做法:每个串的长度最多不超过8,最多10组数据,显然我们可以通过状态压缩枚举子集找到所有的子串。 由于每个串是环状的,所以我们把串加倍,模拟成环,枚举第一个串s1所有...原创 2018-09-22 19:53:28 · 478 阅读 · 0 评论 -
[HDU](6438)Buy and Resell ---- 贪心+优先级队列★
题目传送门做法:补题,也是学习了别人很棒的写法。学到了~总的来说这种想法很巧妙,说一下自己的理解。 首先我们先看1 2 10,我买1,卖2 ----> 赚1, 接着买2,卖10,赚8 共赚 1+8 = 9 和买1,再卖10 ----> 赚9 其实获取的价值是相同的。即有传递性,就是数学算式a b c ----> c-a = c-b+b-a 所以我们用优先级...原创 2018-09-28 12:14:07 · 171 阅读 · 0 评论 -
【ACM-ICPC 2018 焦作赛区网络预赛】H. String and Times ---- 后缀自动机
题目传送门做法:计算出每个状态下的endpos,通过endpos在区间内统计maxlen[st] - minlen[st]+1即 maxlen[st] - minlen[st]+1 = l[st] - l[slink[st]];模板题AC代码:#include<bits/stdc++.h>#define IO ios_base::sync_with_...原创 2018-10-19 12:24:40 · 189 阅读 · 0 评论 -
【ACM-ICPC 2018 青岛赛区网络预赛】H. Traveling on the Axis ---- 前缀和+规律
题目传送门做法:我们很容易推出,对于每一个位置到终点,先判断起始位置是1or0,是1初始化为1,是0初始化为0从当前位置往后相邻两项如果不一样,那么+1,如果一样+2举个例子:1 0 11位置: 1 1+1 1+1+12位置: 2 2+13位置: 1ans = 1+2+3+2+3+1 = 12然后多写几组数据,我们发现后一项是前一...原创 2018-10-19 21:22:13 · 216 阅读 · 0 评论 -
【ACM-ICPC 2018 南京现场赛 】 J.Prime Game ---- 思维+素数筛
题目:做法: 计算出来每个数的质因子在各个区间的贡献。以第二组样例为例:第一个元素的素因子2:它能贡献的区间有[1,1],[1,2],……,[1,10] 10个区间第一个元素的素因子3:它能贡献的区间有[1,1],[1,2],……,[1,10] 10个区间当前sum = 10+10第二个元素的素因子7:它能贡献的区间有[1,2],[1,3],……,[1,10] 9个区...原创 2018-10-22 17:47:45 · 1648 阅读 · 2 评论 -
【ACM-ICPC 2018 沈阳赛区网络预赛】B. Call of Accepted ----中缀表达式计算
题目传送门题意:给你一个表达式由+,-,*,d,( ),组成。运算符左边的元素>=0,右边的元素>=1其中d的运算规则是,比如3d6,指3次掷6面体骰子,出现的数值为[1,6]。现在让你求表达式的最大和最小做法:经典的中缀表达式转后缀表达式(逆波兰式)算法:复习复习~中缀表达式 —> 后缀表达式1. 数字:直接输出2. 运算符:如果栈顶运算符的优先级&g...原创 2018-10-29 21:05:35 · 168 阅读 · 0 评论 -
【ACM-ICPC 2018 南京赛区网络预赛】J题 Sum ---- 积性函数线性筛+思维★
题目链接做法:通过打表找规律,我们发现所有情况可以分为三类。我们把一个n 设为 n = p^k * x (p为质数),这里的x可能为质数也可能为合数 注:如果x与p互质,满足积性函数的性质,f[n] = f[p]*f[x] 筛法: 1.f[p] = 2 ,f[p^2] = 1 2.若i % p!=0,f[i * p] = f[i] * f[p] 积性函数 3.若i % (p * ...原创 2018-09-03 21:16:48 · 206 阅读 · 3 评论 -
【ACM-ICPC 2018 徐州赛区网络预赛】H题 Ryuji doesn't want to study ---- 树状数组
题目链接做法:我们知道我们想要的答案的式子中,相邻两项的系数差1,所以我们构造出类似这样的情况 如下图所示 n*a1 (n-1)*a2 (n-2)*a3 (n-3)*a4 (n-4)*a5 (n-5)*a6 (n-6)*a7 (n-7)*a8比如n = 8 想查询[2,4] 答案ans = (4-2+1)*a2+(...原创 2018-09-11 21:10:15 · 164 阅读 · 0 评论 -
【ACM-ICPC 2018 徐州赛区网络预赛】G题 Trace ---- 思维
题目链接做法:很好的一个思维题 题意向我们保证当前的浪花的痕迹不会完全覆盖之前的浪花的痕迹,所以我们要逆向思维,倒着来,从最后的浪花的痕迹往前思考。如果能找到第一个比当前浪花痕迹短的,那么保留的痕迹就是当前的痕迹-第一个比当前短的浪花的痕迹 否则,它的痕迹如果是最小的,那么直接加入答案。 这个题用STL写的话,利用一个set,然后二分查,就非常容易理解。AC代码:#inclu...原创 2018-09-11 19:44:29 · 185 阅读 · 0 评论 -
【2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛】A题 Fruit Ninja ---- 共线+随机数
题目链接 ---- Fruit Ninja思路:先用随机数跑两个点,然后从已知的点集合中枚举,判断是否共线(利用斜率相同),找到满足条件M/N >= x 的M 即可随机数真是个神奇的东东(`・ω・´)AC代码:#include<bits/stdc++.h>#define rep(i,s,t) for(int i = (int)(s); i <= (int...原创 2018-08-05 20:58:02 · 243 阅读 · 0 评论 -
【2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛】D题 Thinking-Bear magic ---- 计算几何
题目链接 ---- Thinking-Bear magic做法:我们通过分析,可以发现n边形的内n多边形(即按照题意描述,把各边的中点连接起来形成的新的n多边形)把n边形的边长称为old_a,n边形的边长称为new_a,角度设为dd = (n-2)*180new_a = old_a * sin(1/2*j/180*PI);根据多边形的面积公式S = n*a*a/(4*tan(P...原创 2018-08-05 21:09:35 · 282 阅读 · 0 评论 -
[UPC](5058)Network Report ---- 多源最短路(Floyd)
题目链接来源:ICPC2017 Hua-Lian 做法: 很简单的Floyd模板题……只是自己脑子ZZ了这是一开始(WA)的代码#include<bits/stdc++.h>using namespace std;typedef long long ll;const int mod = 998244353;const double PI = 4*atan(1....原创 2018-08-27 20:55:25 · 244 阅读 · 0 评论 -
[UPC](5065)Assigning Frequencies ---- 暴力DFS★
题目链接Hint:ICPC 2017 Japan Tsukuba题意:有n个卫星,要给它们分配频率。有p个关系,表示卫星u和卫星v是相邻的。要求相邻的卫星不可以有相同的频率。频率一共具有三种。做法:给每个卫星试着分配频率i,如果当前卫星与它相邻的卫星频率不同,则分配这个频率,如果是不相邻的卫星,也可以分配这个频率。暴力搜一遍即可。#include<bits/stdc++.h...原创 2018-08-28 21:55:02 · 190 阅读 · 0 评论 -
[UPC](8838)Secret of Chocolate Poles ---- DP
题目链接Hint: ICPC 2017 Japan Tsukuba题意: 给你三种圆盘,1.白色薄盘 2.黑色薄盘 3.黑色厚盘。其中白色薄盘和黑色薄盘的厚度为1,黑色厚盘的厚度为k。 现在给你一个高度为l的容器,让你往容器中放圆盘。有以下要求: 1.黑色的圆盘需要在顶部和底部。 2.白色圆盘上面如果有圆盘,必须为黑色圆盘;黑色圆盘上面如果有圆盘,必须为白色圆盘。 3.至少有一...原创 2018-08-29 20:34:41 · 143 阅读 · 0 评论 -
[UPC](8840)Medical Checkup ---- 思维
题目链接Hint: ICPC 2017 Japan Tsukuba题意:有n个同学排成一队,要去体检1,2,3,4,……等等几个体检项目,同学的编号也是1,2,3,…… n 要求:必须要个遵守同学的编号进行项目体检。允许多个项目同时进行。 问当时间到达t的时候,各个同学都在体检或等待体检那个体检项目,输出这些体检项目的编号。做法:这个题,要动脑筋稍微想一下……而我的脑筋却想成...原创 2018-08-29 21:36:17 · 353 阅读 · 0 评论 -
[UPC](5222)Sum of the Line ---- 容斥原理★
题目链接Hint: ACM-ICPC 2017 Asia Urumqi: K. Sum of the Line做法:通过打表或手写,我们很容易发现,第k行的S就是gcd(x,k) = x 的平方和当k为奇数时,我们可以直接利用 1^2 +2^2 +3^2 +4^2 +...+n^2 = n(n+1)(2n+1)/6 来求当k为偶数时。比如k = 4时那一行的T 为 1 ...原创 2018-08-25 22:08:18 · 188 阅读 · 0 评论 -
[UPC](7221)Flower ---- 逆向思维+规律 ★
题目链接Hint: 2018黑龙江省赛 做法:比赛时,和小伙伴被这个题卡了一个半小时……赛后又跟超霸学习到了_(:з」∠)_ 首先,我们知道可行的解一定是1 x x x x …… 由一不定的情况去找可行解复杂,但由可行解去逆推初始情况,找规律,是非常机智的~ 比如:1 2 2 2 2 我们每次随便固定一个数不变,变成2 2 3 3 3 ----> 3 2 4 4...原创 2018-09-04 20:55:51 · 441 阅读 · 1 评论 -
【ACM-ICPC 2018 沈阳赛区网络预赛】K题 Supreme Number ---- 打表
题目链接题意:定义一个数为"Supreme Number"当且仅当 这个数本身是素数以及它数位组成的子序列也是素数 比如:17 1,7, 17都是素数所以 17满足题意 现在给你一个N,让你输出不超过N 的最大 "Supreme Number"做法:首先,由子序列也是素数就确保了答案里面不存在重复的数位,比如373 所以最大的范围就是1e8,因为1~9 9个数嘛~...原创 2018-09-08 18:38:01 · 300 阅读 · 0 评论 -
【ACM-ICPC 2018 徐州赛区网络预赛】F题 Features Track ---- STL应用(暴力)
题目链接做法:使用STL map+pair 暴力模拟即可,注意避免同一帧有相同特征的情况代码:#include<bits/stdc++.h>#define IO ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0)#define pb(x) push_back(x)#define sz(...原创 2018-09-11 14:12:06 · 126 阅读 · 0 评论 -
【ACM-ICPC 2018 焦作赛区网络预赛】L. Poor God Water ---- 矩阵快速幂 or 杜教BM算法
题目传送门做法:我们设(肉,鱼,巧) —&amp;gt; (0,1,2)f(i,j,k) i表示第i小时,j表示当前状态,k表示上一状态 j,k ∈\in∈ (0,1,2)从n = 3 开始,我们利用后两项推前一项可得f(i,0,0)=f(i−1,0,1)+f(i−1,0,2)f(i,0,0)= f(i-1,0,1) + f(i-1,0,2)f(i,0,0)=f(i−1,0,1)+f(i...原创 2018-10-26 22:19:26 · 256 阅读 · 0 评论