玲珑杯 ACM Round #12】的更多相关文章

A =w= B 占坑 C 题意:有长度为n的序列A和长度为n的序列W,以及一个G,对于Ui,1<=Ui<=Wi,求Σgcd(Ai,Ui)=G的方案数,n<=1e3,Ai<=1e5,Wi<=1e5,G<=1e3 分析:递推 f(i,j)表示前i位,当前和为j的方案数 f(i,j)=Σf(i-1,j-gcd(Ai,k)) 这样直接搞是会TLE 注意到我们如果对于一个Ai能预处理求出gcd(Ai,k)的所有种类和个数,那么时间就允许了 考虑Ai.Wi,首先筛出Ai的所有因子,…
A 题意:给长度为n的序列染黑白色,要求连续的黑的格子数量<=a,连续的白的格子数量<=b,问方案总数,有多个询问 分析:递推 注意数据范围,是可以O(n)做的,所以可以直接递推 B 题意:每个servant有ai,bi,ci,pi,有boss的血量H,求满足(ai+bj+ck)(1+pi%)>=H(i!=j!=k)的组数,n<=1e5 分析:FFT典型应用 枚举每个ai的话,问题就是求bj+ck>=M的组数,明显的FFT应用 若b中有大于H的,直接修改成H,不影响结果,同样…
[链接] 我是链接,点我呀:) [题意] n个物品,每个物品都有无限个. 第i个物品的价格是一样都,都是ai 让你从中选出恰好k个物品 问你选出的物品的总价值 有多少种不同的可能. [题解] 可以用f[j]表示物品的总价值为j最少需要选多少个物品. for (int i = 1;i <= n;i++) for (int j = a[i];j <= k*a[i];j++){ f[j] = min(f[j],f[j-a[i]]+1); } 然后对于价值j; 如果f[j]==k的话.j就可行? 但是…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 记录每个数字出现的次数cnt[x]; (大于1e6的直接忽略) 另外用一个数组z[1e6] 然后for枚举x 第二层for枚举x的倍数(倍数不超过m) 即for (int i = x;i <=m;i+=x) z[i]+=cnt[x]; 这样z[i]就表示a[]中I的约数有多少个. 显然i也是这些约数的倍数. 我们无法确定i是这些数的最小公倍数. 但是我们可以找一个最大的z[i] 使得i最小. 这样i肯定就是这z[i]个约数的最小…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 考虑任意两个字符串(a,b) 假设a在b的前面 那么如果a+b>=b+a 这里的+表示字符串的链接 那么显然需要交换a,b的位置. 这样能让最后结果的字符串的字典序更小一点. 把这个条件写在SORT的CMP函数里面 调用一下之后把n个字符串都拼起来就OK了 [代码] #include <bits/stdc++.h> using namespace std; const int N = 5e4; int n; string…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 写个前缀和 和 一个后缀和. (即前i个字符A所代表的数字的和以及前i个字符B所代表的数字的和.. 然后枚举前i个字符翻转. 求B对应数字的最大值 枚举i..n这些字符翻转 求B对应数字的最大值 两个同时求最大值就是答案了. [代码] #include <bits/stdc++.h> #define ll long long using namespace std; const int N = 5e5; int a[N+10]…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 知道题意之后就是一个模拟的过程了. 用int now记录当前苹果的个数.bool flag记录是否有小数(即半个苹果) (这样处理为了防止double精度误差 根据half 和halfplus的规则,变化now和flag即可. 变的时候把卖出去的苹果累加答案 [代码] #include <bits/stdc++.h> #define ll long long using namespace std; const int N =…
我能说我比较傻么!就只能做一道签到题,没办法,我就先写下A题的题解&源码吧,日后补上剩余题的题解&源码吧!                                     A -- Niro plays Galaxy Note 7                    Time Limit:1s Memory Limit:128MByte DESCRIPTION Niro, a lovely girl, has bought a Galaxy Note 7 and wants to…
“玲珑杯”ACM比赛 Round #18 Start Time:2017-07-15 12:00:00 End Time:2017-07-15 15:46:00 A -- 计算几何你瞎暴力 Time Limit:5s Memory Limit:256MByte Submissions:1764Solved:348 DESCRIPTION 今天HHHH考完了期末考试,他在教学楼里闲逛,他看着教学楼里一间间的教室,于是开始思考: 如果从一个坐标为 (x1,y1,z1)(x1,y1,z1)的教室走到(…
A -- simple math problem Time Limit:2s Memory Limit:128MByte Submissions:1599Solved:270 SAMPLE INPUT 5 20 1314 SAMPLE OUTPUT 5 21 1317 SOLUTION “玲珑杯”ACM比赛 Round #19 题目链接:http://www.ifrog.cc/acm/problem/1145 分析: 这个题解是官方写法,官方代码如下: #include <iostream>…
“玲珑杯”ACM比赛 Round #19 Start Time:2017-07-29 14:00:00 End Time:2017-07-29 16:30:00 Refresh Time:2017-07-29 16:42:55 Private B -- Buildings Time Limit:2s Memory Limit:128MByte Submissions:590Solved:151 DESCRIPTION There are nn buildings lined up, and th…
Start Time:2016-08-20 13:00:00 End Time:2016-08-20 18:00:00 Refresh Time:2017-11-12 19:51:52 Public A -- Absolute Defeat Time Limit:2s Memory Limit:64MByte Submissions:394Solved:119 DESCRIPTION Eric has an array of integers a1,a2,...,ana1,a2,...,an.…
Codeforces Beta Round #12 (Div 2 Only) http://codeforces.com/contest/12 A 水题 #include<bits/stdc++.h> using namespace std; #define lson l,mid,rt<<1 #define rson mid+1,r,rt<<1|1 #define sqr(x) ((x)*(x)) #define maxn 1000010 typedef long lo…
War Time Limit: 8000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 81    Accepted Submission(s): 23 Special Judge Problem Description Long long ago there are two countrys in the universe. Each country haves i…
//首先,感谢Q巨 题目链接 定义状态向量b[6] b[0]:三面临红色的蓝色三角形个数 b[1]:两面临红色且一面临空的蓝色三角形个数 b[2]:一面临红色且两面临空的蓝色三角形个数 b[3]:三面临红色的黄色三角形个数 b[4]:两面临红色且一面临绿+的黄色三角形个数 b[5]:一面临红色且两面临绿+的黄色三角形个数 转移矩阵: [3 1 0 0 0 0;0 2 2 0 0 0;0 1 3 0 0 0;3 2 1 0 0 0;0 0 0 6 3 0;0 0 0 0 2 4] 最朴素的TLE代…
A:DESCRIPTION Eric has an array of integers a1,a2,...,ana1,a2,...,an. Every time, he can choose a contiguous subsequence of length kk and increase every integer in the contiguous subsequence by 11. He wants the minimum value of the array is at least…
题目链接   DESCRIPTION INPUT OUTPUT SAMPLE INPUT 1 4 2 1 2 5 2 3 5 3 4 5 5 5 SAMPLE OUTPUT 35 HINT 对于样例,我们将1和4匹配,2和3匹配,然后对2和3之间的边使用膜法,对3和4之间的边使用魔法 若出现爆栈问题,改栈方法请参考1093题目代码 1093地址:http://www.ifrog.cc/acm/problem/1093  代码地址:http://ideone.com/Wk24ET   思路:官方题…
1171 - 这个E大概是垃圾桶捡来的 Time Limit:2s Memory Limit:128MByte Submissions:138Solved:45 DESCRIPTION B君在做 CODE FESTIVAL 2017 qual B 遇到了这样的一道题目 http://code-festival-2017-qualb.contest.atcoder.jp/tasks/code_festival_2017_qualb_f 于是B君决定出一个加强版 输入一个字符串,将他重新排列,使得重…
A 题目链接:http://www.ifrog.cc/acm/problem/1111 分析:容易发现本题就是排序不等式, 将A数组与B数组分别排序之后, 答案即N∑i=1Ai×Bi 此题有坑,反正据我提交而言,一直RE,之后发现两个地方会出错,一是定义数组要放在main函数之前,第二是ans+=1LL*a[i]*b[i],如果少了1LL,结果肯定WA,这就是此题的亮点所在! #include <bits/stdc++.h> using namespace std ; typedef long…
题目链接 DESCRIPTION INPUT OUTPUT SAMPLE INPUT 2 3 2 3 5 7 3 10 3 5 7 SAMPLE OUTPUT 12 26 HINT 官方题解: 代码如下: #include <iostream> #include <algorithm> #include <cstdio> #include <cstring> using namespace std; typedef long long LL; ]; ]; i…
DESCRIPTION 今天HHHH 考完了期末考试,他在教学楼里闲逛,他看着教学楼里一间间的教室,于是开始思考: 如果从一个坐标为 (x1,y1,z1)(x1,y1,z1) 的教室走到(x2,y2,z2)(x2,y2,z2) 的距离为 |x1−x2|+|y1−y2|+|z1−z2||x1−x2|+|y1−y2|+|z1−z2| 那么有多少对教室之间的距离是不超过RR 的呢? --> INPUT 第一行是一个整数T(1≤T≤10)T(1≤T≤10) , 表示有TT 组数据 接下来是TT 组数据,…
http://www.ifrog.cc/acm/problem/1054 问删除一个字符后的最小循环节是多少. 比赛的时候想不出,不知道怎么暴力. 赛后看了别人代码才晓得.唉,还以为自己字符串还不错,但是变了一点点就不懂了. 1.可以暴力枚举循环节长度i,必要条件是(lenstr - 1) % i == 0.这是必须的,因为必须是倍数,关于约数的个数:(不大) http://vfleaking.blog.163.com/blog/static/174807634201341913040467/…
http://www.ifrog.cc/acm/problem/1050?contest=1006&no=4 DP[val]表示以val这个值结尾的等差数列有多少个 DP[val] += DP[val / 2]; 数值很大,用map<int, int>DP即可. #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <alg…
E -- Expected value of the expression DESCRIPTION You are given an expression: A0O1A1O2A2⋯OnAnA0O1A1O2A2⋯OnAn, where Ai(0≤i≤n)Ai(0≤i≤n) represents number, Oi(1≤i≤n)Oi(1≤i≤n) represents operator. There are three operators, &,|,^&,|,^, which means a…
[链接]http://www.ifrog.cc/acm/problem/1161 [题意] 在这里写题意 [题解] 首先x<l肯定无解; 然后,肯定是要选其中的一些数字的. 而且这些数字肯定是大于等于l的. 则我们尽可能多的先选一些l 即x/l个l; 然后剩下rest=x/l-l就用cnt个数字[0..r-l]来填; 且cnt <= x/l; 表示把其中的一些l扩大一点,变成大于l的数字. 也即判断(x/l)*(r-l)是不是大于等于rest的 很巧妙的方法.. 最后整理一下会发现就是判断 设…
题目链接:http://www.ifrog.cc/acm/problem/1147 题解:这题很容易想到的是边的贡献也就是每条边最多被取到几次,和点的贡献类似,那些加边只要加在边贡献大的边上就行.然后什么是边的贡献,就是一条边左右两边连着的最小的点的个数,因为这条边最多被取到这么多次.还有就是爆栈的处理具体看一下代码那个define的就是爆栈的处理如果是lunix的话那个else不需要. #include <iostream> #include <cstring> #include…
题目链接:http://www.ifrog.cc/acm/problem/1146?contest=1020&no=2 题解:显然知道这是一道dp而且 dp[i]=min(dp[j]+2^(x[j]-x[i])+a,dp[i])但是这题很显然2的次幂显然很容易比a大于是只要for一遍最多30次就行具体看一下代码,炒鸡简单的. #include <iostream> #include <cstring> #include <algorithm> #include…
题目链接:http://www.ifrog.cc/acm/problem/1143?contest=1020&no=0 题解:就是瞎暴力具体多暴力看一下代码就知道了. #include <iostream> #include <cstring> #include <queue> #include <cstdio> #include <cmath> using namespace std; typedef long long ll; ][]…
http://www.ifrog.cc/acm/problem/1097?contest=1013&no=1 //LIS的高端写法 #include <iostream> #include <cstdio> #include <cstring> #include <cassert> #include <algorithm> using namespace std; ]; ]; int n, x; int main() { while (s…
题意:初始时有个首都1,有n个操作 +V表示有一个新的城市连接到了V号城市 -V表示V号城市断开了连接,同时V的子城市也会断开连接 每次输出在每次操作后到首都1距离最远的城市编号,多个距离相同输出编号最小的城市 输入数据保证正确,每次添加与删除的城市一定是与首都相连的 题解:每次都只需要知道最远且编号最小的城市,所以直接使用优先队列存储 如果是+V就使用并查集(不能路径压缩)添加上然后加入优先队列,接着直接弹出首元素就是结果 如果是-V则把V指向0,接着弹出优先队列的第一个元素 如果他与1相连就…