[Link]: [Description] [Solution] [NumberOf WA] 1 [Reviw] [Code] #include <bits/stdc++.h> using namespace std; int t; int main(){ cin >> t; int num = 0; for (int i = 1;i <= t;i++){ int x; cin >> x; if (x<=35) num++; } cout <<…
[Link]: [Description] [Solution] 发现1010mod(109+7)=999999937; 猜测答案是nk 写个快速幂; 注意对底数先取模; [NumberOf WA] 1 [Reviw] 看到过的人那么多就应该想到找规律的. 大胆猜测 [Code] #include <bits/stdc++.h> using namespace std; #define int long long const int MOD = 1e9+7; int n,k; int get_…
地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=6060 题目: RXD and dividing Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others)Total Submission(s): 522    Accepted Submission(s): 219 Problem Description RXD has a tr…
[Link]:http://acm.hdu.edu.cn/showproblem.php?pid=6053 [Description] 给你一个b数组,让你求一个a数组: 要求,该数组的每一位都小于等于b数组: 且这个b数组的n个数的gcd>=2 [Solution] 设f[i]表示gcd为i的a数组有多少个; 则从gcd大的开始,往gcd小的方向枚举gcd为i; 然后a的每个位置都可以为i的倍数; 则f[i] = a[1]/i * a[2] / i * a[3]/i - a[4]/i; 但是这…
[Link]:http://acm.hdu.edu.cn/showproblem.php?pid=6047 [Description] 给你一个数列a和一个数列b; 只告诉你a的前n项各是什么; 然后让你求第出a的第n+1..2*n项; 这里a的第i项等于max(a[j]-j)这里j∈[b[k]..i-1]; (i>n) 且,每个b只能用来推一次a. 让你求出∑2∗nn+1ai的最大值 [Solution] 一开始的a数组,对于ai也直接减去i就好; 这样在推的时候,直接取区间的最值就可以了,省…
[Link]: [Description] 给你n个点整数点; 问你这n个点,能够组成多少个正多边形 [Solution] 整点只能构成正四边形. 则先把所有的边预处理出来; 枚举每某两条边为对角线的情况; 看看这两条对角线能否组成一个正方形; 可以的话,递增答案. [NumberOf WA] 1 [Reviw] (排序的时候边的数目和点的弄混了) [Code] #include <bits/stdc++.h> #define int long long using namespace std…
[Link]: [Description] 两个人都做了完全一样的n道选择题,每道题都只有'A','B','C' 三个选项,,每道题答对的话得1分,答错不得分也不扣分,告诉你两个人全部n道题各自选的是什么,问你第一个人得X分,第二个人得Y分可不可能? [Solution] 我们可以倒着想这个问题; 第一个人答对一题,就让X减去1 第二个人答对一题,就让Y减去1 只要能让X和Y都变成0,那就可以了,因为剩余的题目,不管两个人答案 是什么,都可以让他们俩都错. 设xt,bxt是两人所有的题答案相同和…
[Link]: [Description] [Solution] 把所有人的能力从大到小排; 能力最大的肯定可能拿冠军; 然后一个一个地往后扫描; 一旦出现a[i-1]-a[i]>k; 则说明从这以后的人,都不可能再和有实力拿冠军的人竞争了 无论怎么安排都赢不了那部分可能拿冠军的人. [NumberOf WA] [Reviw] [Code] #include <bits/stdc++.h> using namespace std; #define lson l,m,rt<<1…
[Link]: [Description] 给你a数组的n个数的所有2^n个子集的2^n个子集元素的和; 子集元素的和最大为m; 告诉你各个子集元素的和出现的次数; 如 1 2 则0出现1次,1出现1次,2出现一次,3出现一次; 分别对应{},{1},{2},{1,2}; 问你能不能复原出原数组; 输出最小字典序的数组; [Solution] 给你一个b数组; 实际上和背包方案数问题的f数组是一样的; f[i]表示物品组成的体积为i时的方案数 for (int i = 1;i <= n;i++)…
[Link]:http://acm.hdu.edu.cn/showproblem.php?pid=6090 [Description] 给你n个点; 让你在这n个点上最多连m条无向边; 使得 ∑ni=1∑nj=1dis(i,j)最小 这里dis(i,j)定义为点i到点j的最短距离; (距离定义为走过的边数目); [Solution] 如果还没有组成一棵树的话; 就尽量弄成菊花图; ↓ 这样加入一个点的时候,和所有的在这个连通块里面的点最远距离只为2; 然后,当边的个数大于n-1,也就是说,已经够…
[Link]: [Description] [Solution] 把每个数字长什么样存到数组里就好;傻逼题. (直接输入每一行是什么样子更快,不要一个字符一个字符地输入) [NumberOf WA] 1 [Reviw] [Code] #include <bits/stdc++.h> using namespace std; int T; char s[10][30]; char temp[10][10][7]; int get_ans(int x1,int y1,int x2,int y2){…
[Link]:http://acm.hdu.edu.cn/showproblem.php?pid=6069 [Description] 定义d(i)为数字i的因子个数; 求∑rld(ik) 其中l,r<=1012且r−l<=106 [Solution] 如果把一个数x质因数分解成p1a1∗p2a2∗...∗pnan 的形式; 可知数字x的因子个数为 (a1+1)∗(a2+1)∗...∗(an+1) 因为i还有k次方; 所以答案就是 (a1∗k+1)∗(a2∗k+1)∗...∗(an∗k+1)…
[Link]:http://acm.hdu.edu.cn/showproblem.php?pid=6058 [Description] 给你n个数; 它们是由(1..n)组成的排列; 然后给你一个数字k; 让你求这个序列的所有长度大于等于k的区间的第k大值的和; [Solution] 数组模拟链表; 我们从小到大枚举数字x,寻找以x为第k大的数字的区间有多少个; 数组中只保留了了大于等于x的数字的信息 (即每次做完数字x为第k大的区间之后,把x删掉); 每次在做x的时候; 在x的左半部分找最近的…
[Link]:http://acm.hdu.edu.cn/showproblem.php?pid=6127 [Description] 平面上有n个点,每个点有一个价值,每两个点之间都有一条线段,定义线段的值为两个点价值的乘积,现在让你找一条过原点的直线(直线不经过任何一个节点),将这条直线所经过的所有线段的值求和,问最大的和是多少. [Solution] 假设有一条线把x轴上方和x轴下方的点分开了; 这样这条线的答案就为(val上1+val上2+-+val上n)*(val下1+val下2+-+…
[Link]:http://acm.hdu.edu.cn/contests/contest_showproblem.php?pid=1011&cid=765 [Description] 有一种数列叫Kolakoski:1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1,2,2,1--,如果将这个数组相同的数字合并成一个新数列:1,22,11,2,1,22,1,22,11,2,11,22,1--,第二个数列中第几组数中的个数就是第一个数列中的第几个数.现在要求出第一个数列第n个数.…
[Link]:http://acm.hdu.edu.cn/showproblem.php?pid=6129 [Description] 设定b[i]=a[1]^a[2]^a[3]^------a[i]: 每进行一次,我们可以从a数组得到一个b数组.问进行m次的结果. [Solution] 我们把前几轮的结果都写出来; 会发现,最后每一个位置ai的结果都是 t1@a1+t2@a2+-+ti@ai的形式. 这里的x@y表示x个y做异或运算. t1是系数,它>=0 且最后的ai的系数,是a[i+1]的…
[Link]:http://acm.hdu.edu.cn/contests/contest_showproblem.php?pid=1005&cid=765 [Description] 问你a%b的结果有多少种. b未知,可以为任意数字. [Solution] b=a+1,a,a-1,a-2-. 分别对应了a%b==a,0,1,2,- 且当b = a/2时,a%b会出现重复.. 找一下a为奇数和偶数的两种情况. 发现规律就是(a-1)/2 + 2; [NumberOf WA] 0 [Reviw]…
[链接]http://acm.hdu.edu.cn/showproblem.php?pid=6103 [题意] 给出一串字符串,从中选出两个不重叠的字符串,使得两个字符串的距离和 <= m 的最长字符串长度,A,B 串中的字符距离计算为 disA,B=∑i=0n−1|Ai−Bn−1−i| [题解] 两个不相交的串s1和s2,它们之间必然有一个中心点,则我们可以枚举每一个中心点,然后往两边扩展这两个字符串. 这样有什么好处呢? 就是在扩展的时候,如果发现这个时候两个字符串的差值大于m了,则可以把第…
[链接]http://acm.hdu.edu.cn/showproblem.php?pid=6106 [题意] 给出选 A,B,C,AB,AC,BC,ABC 课程的学生,其中 AB 是 A 和 B 都选-.,确定该班级的人数,给出的数据中有一些数错误的,但保证一组正确答案,输出最多的班级的人数 [题解] 除了ab<=a,ac<=c...那些常见的限制之外 如下图,还有1+4+2<=a以及1+4+3<=b.... [错的次数] 0 [反思] 在这了写反思 [代码] #include&…
[链接]h在这里写链接 [题意] 给出一个序列,求2~n每一个数,下标不是这个数倍数的最大值是什么? [题解] 把a数组从大到小排序. 每个位置i,逆序枚举b数组,找到第一个对应下标不是i的倍数的,直接输出 [错的次数] 0 [反思] 在这了写反思 [代码] #include <bits/stdc++.h> #define ll long long #define LL long long #define INF 0x3f3f3f3f #define ll_INF 0x3f3f3f3f3f3f…
[链接]http://acm.hdu.edu.cn/showproblem.php?pid=6165 [题意] 一张有向图,n个点,m条边,保证没有重边和自环.询问任意两个点能否满足任何一方能够到达另外一方. [题解] 用Tarjan算法,先把有向图的强连通分量缩成一个点,缩完点之后,剩下的就是一张有向无环图了. 对其进行拓扑排序.一定要唯一的拓扑排序才能够满足题目的要求. 也即,为一条链的时候. 一旦某个时刻做拓扑排序的队列大小大于1就输出无解 [错的次数] 0 [反思] 在这了写反思 [代码…
[链接]http://acm.hdu.edu.cn/showproblem.php?pid=6168 [题意] 有一个长度为n的序列a1--an,根据a序列生成了一个b序列,b[i] = a[i]+aj,然后有一个人把a,b序列按随机顺序混合了起来,现在问你初始的a序列是什么  [题解] c1和c2分别和a1和a2对应; 则在c中把a1+a2删掉. 然后得到最小的c,肯定就是a3了. 再把a3和a1,a2组成的删掉. 以此类推 [错的次数] 0 [反思] 在这了写反思 [代码] #include…
[链接]http://acm.hdu.edu.cn/contests/contest_showproblem.php?pid=1010&cid=767 [题意] 给一些区间,每台机器在这些区间中运行,但是,一台机器最多只能在一段区间内运行,(在相同的地方有多个区间则需要多个机器),并且,机器关掉不能再开,求:使用最少机器的情况下的最短运行时间. 运行时间是所有机器的运行时间的总和. [题解] 因为优先的是最小的机器个数; 先将区间按左端点升序排一下. 然后按顺序枚举区间. 对于遇到的区间 要用哪…
[链接]点击打开链接 [题意] 给你一棵n节点的树,现在让你放k个猴子,可以删边,问最少可以剩余几条边,放k个猴子,满足任意一个猴 子至少与一只猴子相连.2<=k<=n<=1e5 [题解] 一条边最划算的做法就是,边的两个端点连的是两个单独的不同的点. 且这两个点都没有和其他点相连. 而原题意可以理解为,用最少的边凑够k只猴子. 上面说的这种做法,每次可以凑2只猴子. 显然是最优的. 于是我们优先做这样的连法. 其实也就是在这棵树上选最多的相邻点对数. 而树肯定是二分图. 相邻的点-&g…
[Link]:http://acm.hdu.edu.cn/showproblem.php?pid=6140 [Description] 等价于告诉你有n个物品,每个物品的价值为-a[i]或a[i],或者这个物品可以看成两个物品一个为a[i]另外一个为-a[i]; 问你能不能达到物品价值k [Solution] 爆搜. 加个看起来不是很有用的剪枝就能过. (记录某个位置后面所有的整数的和) 大数据的背包好像都能这样做. (这题数据比较水??) [另解]: 题目描述的上面有说a1=1,b1='N'…
啊人生第一次打多校被虐 紧随yql的脚步做题. 1001: 可以发现我们平时表示的数都是$x*log_{10}{10}$,所以类似于做一个换底公式就可以了. -1是一个烟雾弹,因为小学生都知道2^n不可能是整十的数. #include<bits/stdc++.h> #define N 100005 using namespace std; double x,y; int m; int main(){ ; ){ x=(double)m; x*=log10(); printf("Case…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6063 题目意思:字面意思,给出n,k,算出这个式子的答案. 思路:比赛的时候是打表找规律过了,赛后仔细研究一下数学上的具体做法,首先莫比乌斯函数,就是他后面给的那个式子μ(n)=(−1)k(n=p1p2…pk)   p1,p2,p3…pk是互不相同的的素数.满足这个条件的n,μ^2(n)=1,否则μ^2(n)=0:从这个定义里面我们发现所有满足μ^2(n)=0的n值必定满足n=a^2*b,其中μ^2…
多校训练就这么华丽丽的到了 ,于是乎各种华丽丽的被虐也開始了. 这是多校的1002; 最小费用最大流. 题目大意: 有n*m个方格,每一个方格都一个的十进制一位的数.你能够操作K次. 对于每一次操作,你能够选择一个出发点向下或向右Jump.跳的花费是|x1-x2|+|y1-y2|-1的能量 .假设你跳的这两个位置上数字同样,那么你就会获得数字表示的能量值. 对于每一次操作,你能够这样跳随意次 ,可是每一个位置仅仅能经过一次在这K次操作中. 初始能量值是0,当操作完毕后,假设n*m个方格没有都经过…
Function Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 652    Accepted Submission(s): 267 Sample Input 3 2 1 0 2 0 1 3 4 2 0 1 0 2 3 1 Sample Output Case #1: 4 Case #2: 4 Source 2017 Multi-U…
FFF at Valentine Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 1060    Accepted Submission(s): 506 Problem Description At Valentine's eve, Shylock and Lucar were enjoying their time as any oth…