——————基础——————
文章平均质量分 72
DT2131
Rage, rage against the dying of the light.Do not go gentle into that good night.
展开
-
HDU 4801 Pocket Cube (模拟)
题意:给出一个2阶魔方,问在少于N步旋转内,最多产生多少个同样颜色的面?思路:共6个有效方向,模拟即可。有一个坑点,颜色不是0-5的,是 Integer 。判重时注意下即可代码:#include <bits/stdc++.h>using namespace std;int n, fans;int dirx[6][8] = {{ 0,2,6,12,16,...原创 2018-10-18 21:34:54 · 457 阅读 · 0 评论 -
HDU 4620 Fruit Ninja Extreme (简单搜索带剪枝)
题意:T组样例,每组样例给出 N M W 代表可供选择的切法数,水果数及触发连击的最大间隔时间。对于N种切法给出每种切法切的水果个数 C ,切的时间 T,C个水果分别是谁。思路:注意到数据量直接搜索,但需要剪枝。我们注意到按切法按时间排序后,我们可以将可连击的一些切法分成一块。对每块我们可以预测,接下来的搜索的答案是否会比当前答案大。由此剪枝。代码:#include us原创 2017-05-25 07:42:21 · 327 阅读 · 0 评论 -
2017 东北四省赛热身赛 C
原题:清华大学出题(侵删)题意:模拟俄罗斯方块游戏给出 N 个方块,限高为 M对于 N 个方块给出 方块的类型 ,方块的方向,方块的最左端的列数。问 N 个方块径直下落后,共可以消除几层?游戏过程中保证不超出限高。思路:模拟代码:可能会TLE#include using namespace std;char kuai;int n,m,f原创 2017-05-13 22:19:07 · 816 阅读 · 1 评论 -
HDU 6023 Automatic Judge
题意: 模拟 Online Judge cost 计算。 T 组数据,每组 N 道题 M 次提交记录,问最终 AC 几道题以及 cost思路: map 判重复 AC,模拟即可。代码:#include using namespace std;map vis;int main(){ int T; s原创 2017-05-08 16:25:09 · 299 阅读 · 0 评论 -
HDU 6025 Coprime Sequence
题意: T组样例,给出 N 个数,求去掉一个数后,数列的最大 GCD。思路: 维护前缀 GCD 和 后缀GCD 即可。 代码里使用了线段树,其实完全没有必要。代码:#include using namespace std;#define ls l,mid,rt*2#define rs mid+1,r,rt*2+1#defi原创 2017-05-08 16:39:01 · 550 阅读 · 0 评论 -
Gym-101341E Bonuses and Teleports
题意: 给出 N 个跳点和 M 个目标点,跳点之间可任意传送,问从第一跳点开始,走遍所有目标点并返回第一跳点的最小 cost 是多少?思路: 见代码代码:#include using namespace std;const int N=2e5+5,inf=0x7fffffff;long long t[N],b[N],c[N],d[N];原创 2017-05-08 18:05:18 · 932 阅读 · 0 评论 -
Gym - 101341B Pursuing the Happiness
题意: 交换串中的两个位置能否使得串中不含有 “happiness”。思路: 分情况判断即可 值得注意的是,若串中原不含模式串时,我们的随意交换可能反而会形成模式串。 那么原串中若有相同字符,互换即可。若没有,交换头两个字符即可保证不会形成模式串。代码:#include using namespace s原创 2017-05-08 18:15:16 · 520 阅读 · 0 评论 -
Gym - 101341C Urn with Balls
题意: 给出 N 个 红球 M 个蓝球,K个未知颜色(任何颜色)的球。问最多取出几个球才能使取出的球中红球数量不超过 Q ,蓝球数量不超过 P。思路: 假设 K 个球都是红球或蓝球即可。代码:#include #include #include #include using namespace std;const int INF=0原创 2017-05-08 22:16:47 · 616 阅读 · 0 评论 -
Gym - 101341D Jumps
题意: 给出 N 个数,终点 M。 问从 0 开始每次移动 N 个数中的一个距离,是否能达到 M。思路: 显然求这些数的 GCD 即可。代码:#include using namespace std;long long gcd(long long x,long long y){ return y==0?x:gcd(y,x%y);}原创 2017-05-08 22:20:47 · 558 阅读 · 0 评论 -
Codeforces 805D Minimum number of steps
题意: 给出一个只含 a b 字符的串,问不断将串中的 “ab” 字串替换为 “bba” 至少需要几次可以结束替换,结果对 1e9 + 7 取余。思路: 首先,替换的顺序并不影响最终替换的次数。 我们从空串开始模拟添加,可以发现规律,每加入一个 ‘b’ ,设 ‘b’ 之前 ‘a’ 的个数为 x ,替换次数就加上 2^x -1。原创 2017-05-05 10:49:51 · 582 阅读 · 0 评论 -
Codeforces 805C Find Amir
题意: 给出一个 N 个节点的图,节点 i 到节点 j 的花费为 ( i + j ) MOD ( N + 1 ),问遍历所有节点的最小花费。思路: 举例观察 若 N == 10 那么 1 10 路径 2 9 路径 3 8 路径原创 2017-05-05 10:39:19 · 366 阅读 · 0 评论 -
Gym 101097I Sticks (思维)
题意: 给出至多 50 种颜色的共 1e6 根木棍,问是否能有 3 支颜色不同的木棍可以拼成三角形。思路: 首先注意可能爆 int 的细节。 队里三个人都在做这道题,结果三个人都思维江化僵化,拖了很久。 结果三个人写了三种代码,都是 AC 的,事后证明三个人的思路原理是一样的。 所以以下贴三种原创 2017-04-27 23:48:52 · 635 阅读 · 0 评论 -
HDU - 4608 I-number
题意: 给出一个正整数x,求最小的整数y,满足y > x且y的所有位的数字和是10的倍数。(x的长度小于1e5)思路: 高精度加法,每次发生进位时,数位的和 减9 。每次 +1 判断即可。代码:#include using namespace std;long long sum;string str1;string str2=原创 2017-04-30 18:07:37 · 300 阅读 · 0 评论 -
HDU 4452 Running Rabbits (模拟)
题意: 给出 N * N 的格子,两只兔子的起点为 1 ,1 和 N ,N。 现在给这两只兔子一个出发方向,和每秒跳跃格子数和每过t秒方向就向左转这些条件。 如果这只兔子跳到一定的步数碰到了墙壁,那么就回头继续将剩余的步数跳完。如果两只兔子相遇,那么这两只兔子就互换方向,这时候如果正好需要向左转,就不需要向左转。思路:原创 2017-05-01 15:49:34 · 325 阅读 · 0 评论 -
hdu 4607 Park Visit (求树的直径)
题意: 给出树,求从任意点开始遍历 K 个节点最短路径长度是多少?思路: 对于所有小于树的直径的 K 个节点,每条边只需要走一遍。大于直径的其他节点所的对应的边要走两边。代码:#include #include #include #include using namespace std;const int MAXN=1e5+100;原创 2017-04-30 17:58:54 · 302 阅读 · 0 评论 -
2017 黑龙江省赛热身赛 C - World Cup
题意: 思路: 本来是道很简单的题,现场思考的很复杂,这搜那搜的,归并树模拟一下就行。代码:不知道 AC 不 AC 我没有数据......... #include using namespace std;#define ls l,mid,rt*2#define rs mid+1,r,rt*2+1#define sf l,r,rt#de原创 2017-05-11 20:56:06 · 455 阅读 · 0 评论 -
Codeforces 798B Mike and strings
题意: 给出 N 个串,问最少能移动几次使 N 个串都相等。 移动的规则是,每次只能将一个串首的字符移到串尾。 N 最大 50,串长最大 50。思路: 竟然是暴力题。 50^4 并不超时……代码:#include #include #include #include #include us原创 2017-04-22 01:35:35 · 712 阅读 · 0 评论 -
Codeforces 805A Fake NP
题意: 给出两个大于2的数,求两数之间所有数中出现次数最多的因子。思路: 观察可知,除 A==B 时,答案为 A或B 本身,出现次数最多的因子为 2 。代码:#include using namespace std;int main(){ int a,b; scanf("%d%d",&a,&b); if(a!原创 2017-05-05 10:27:56 · 477 阅读 · 0 评论 -
Codeforces 805B 3-palindrome
题意: 用 a b c 三个字符构造一个长度为 N 的串,保证串中不出现长度大于等于 3 的回文串 并且 尽可能使字符 c 出现的次数最少。思路: 串用 aabb 构造即可满足题意 例:长度为 3 的串为 aab 5 aabba原创 2017-05-05 10:32:07 · 342 阅读 · 0 评论 -
HDU 6027 Easy Summation
题意: 给出 N 和 K,问( 1^k + 2 ^k + ......... + N^k )Mod 1e9+7 的值。思路: N 小于 1e5,k小于6,暴力即可。 若 N 的范围较大,好像可以推出公式求解。代码:#include using namespace std;const int MOD=1e9+7;c原创 2017-05-08 16:44:34 · 711 阅读 · 0 评论 -
一些有趣的异或运算
数组中只出现一次的数数组中只出现1次的两个数字翻译 2017-03-21 17:20:30 · 371 阅读 · 0 评论 -
HDU 5538 House Building (求表面积)
题意:给出一个由立方块堆起的物体,求其表面积思路:扫一遍即可代码:#include using namespace std;const int MAXN=55;int a[MAXN][MAXN];int dirx[]={0,0,-1,1};int diry[]={1,-1,0,0};int main(){ int T,n,m; scanf(原创 2017-07-24 13:17:14 · 357 阅读 · 0 评论 -
HDU 5971 Wrestling Match (二分图匹配)
题意:给你n个人,m场比赛,x个好人,y个坏人,对于每一场比赛,必有一个好人一个坏人,问是否能将n个人完全区分成好坏人。思路:并查集或二分图匹配对于已经确定的好人和坏人先行进行归类,bfs搜一遍即可。对于剩下未确定阵营的人随机选取一个人归为好人或坏人bfs再搜一遍。若两次bfs中出现同一人被分为不同阵营的情况 或 两次bfs后仍有未分配阵营的人 return NO;原创 2017-07-24 12:53:54 · 455 阅读 · 0 评论 -
HDU 6150 Vertex Cover (有趣的构造)
题意:给出一组样例,使得最小顶点覆盖问题中,贪心点法的性能比大于等于3。思路:参考论文(四川师范大学学报 2006.03 ):最优顶点覆盖的贪心边近似算法 易得,N取60时,性能比等于3。代码:#include using namespace std;int x[1000],y[1000];int main(){ int cnt=0,pos=原创 2017-08-21 13:58:09 · 557 阅读 · 0 评论 -
HDU 6171 Admiral (DFS + 剪枝)
题意:给出原始阵列01 12 2 23 3 3 34 4 4 4 45 5 5 5 5 5问对于给出的某种阵列,能否通过每步只移动 0 至(i - 1 , j)or ( i - 1 , j - 1) or ( i + 1 , j ) or ( i + 1 , j + 1 ) ,在20步之内移动到原始阵列。思路:考虑到只要求20步,直接搜索即可。但原创 2017-08-26 02:03:46 · 544 阅读 · 0 评论 -
HDU 5699 货物运输 ( 二分 + 不等式判断 )
思路:http://blog.csdn.net/tc_to_top/article/details/51476095代码:#include using namespace std;const int MAXN=1e6+7;const int INF=0x3f3f3f3f;int st[MAXN],en[MAXN],n,m;bool judge(int mid){原创 2017-09-23 23:56:34 · 413 阅读 · 0 评论 -
HDU - 1231 最大连续子序列 (前缀和)
题意:中文思路:维护前缀和,最小前缀和,可以计算出每个右端点的最大子序列。代码:#include using namespace std;const int MAXN=1e4+7;int a[MAXN],b[MAXN]={0},c[MAXN];int main(){ int n; while(scanf("%d",&n)&&n){ f原创 2017-09-21 13:02:32 · 895 阅读 · 0 评论 -
51nod 1163 最高的奖励
题意:中文思路:倒过来想,从最后时间的一个任务往前推,找出在某个时间点可做的任务集,取最大权值的任务即可。代码:#include using namespace std;const int MAXN=1e5;typedef struct Node{ int v,t; bool operator < (const Node &a)const{原创 2017-12-10 20:25:33 · 224 阅读 · 0 评论 -
Codeforces 631C Report
题意:给出一个2e5的数组,有两种操作1.对【 1 , X 】升序排列2.对【 1 , X 】降序排列求最终的数组思路:单调栈维护有效操作区间后,按序填入每个位置上的数即可。代码:#include using namespace std;const int MAXN = 2e5 + 7;const int INF = 0x3f3f3f3f;int a[MAX原创 2017-11-23 10:17:19 · 416 阅读 · 0 评论 -
HDU 5532 Almost Sorted Array (求逆序数)
题意:给你一组数,能否删除一个后使他成为升序或者降序思路:正反各求一边逆序数即可。代码:#include using namespace std;const int MAXN=1e5+10;int a[MAXN];int b[MAXN];int n;bool solve(){ b[n]=a[n]; for(int i=n-1;i>=0;i--原创 2017-07-24 13:12:37 · 347 阅读 · 0 评论 -
HDU-5122 K.Bro Sorting (逆序数)
题意:给一个1~n的一种排列,每次随机选一个数,如果下一个数比他小,则交换,一直进行上述过程直到下一个数比他大。最少经过多少次这样的循环能将其变成升序?思路:答案等于数列逆序数字的个数代码:#include using namespace std;const int MAXN=1e6+10;int a[MAXN],b[MAXN];int main(){原创 2017-07-24 13:07:44 · 1650 阅读 · 0 评论 -
HDU 5515 Game of Flying Circus
翻译&题解:http://blog.csdn.net/snowy_smile/article/details/49535301 代码:#include using namespace std;const double eps=1e-8;double t,v1,v2;bool solve(){ double le=0,ri=300,mid; if(v1==v2原创 2017-06-18 10:46:55 · 386 阅读 · 0 评论 -
HDU 4572 Bottles Arrangement (找规律)
题意:此题出自2009年IMO中国国家队选拔考试。思路: 考虑到题目要求苛刻,所以如果能构造出可以解释样例的矩阵,我们就能找到其中的规律。 以 5 8 为例 满足题意的矩阵即: 第一列由 1 ... N 顺序构成 每一行按 1 ... N N ... 1顺序构成原创 2017-06-02 20:48:06 · 338 阅读 · 0 评论 -
HDU 4574 Bombs DFS
题意: 恐怖分子要制作一批炸弹,做出的炸弹的威力是其原料威力的乘积,并且选取时,后选取的原料威力必须大于等于先选的原料。 制作出的炸弹按照其原料威力按字典序排序。 现已知,制作炸弹的原料的威力区间为[l,r],期望得到的炸弹的威力区间为[a,b],求第K的炸弹的威力及原料组成。 输入:原创 2017-06-02 20:57:02 · 343 阅读 · 0 评论 -
HDU 5975 Aninteresting game ( lowbit理解 )
题意: 已知对于任意的 X ,将其本身填入集合时,也需要将 [ x - lowbit(x) + 1 , x - 1] 重新填入集合。 给出 X 的最大值 N 和询问次数 K 共有两类询问 1.询问将 [ L , R ] 中所有数逐次填入集合时,一共对每个数字填入了多少次。 2.询原创 2017-06-08 16:44:17 · 503 阅读 · 1 评论 -
51Nod 1562 玻璃切割 (set)
联动:CodeForces - 527C Glass Carving (二分+set) 多维矩形切割问题是同一道题,51Nod 数据加强。题意: 给出一个高为 H ,宽为 V 的矩形。要经过 N 次切割,问每次切割后最大的一块是多少?思路: 首先注意乘积爆 INT 。 为简化思考,本题题意为二维切割,我们不妨先考虑将问题转化为一位线段的原创 2017-04-28 15:40:54 · 1037 阅读 · 0 评论 -
HDU 5112 A Curious Matt (水题)
题意:有个人在数轴上跑步,已知他在某些时间点时的位置,求他的最大速度。思路:按时间sort然后依次处理即可代码:#include using namespace std;const int MAXN=1e6+10;typedef struct Node{ double t,x; bool operator < (const Node a)const{原创 2017-07-24 12:58:09 · 323 阅读 · 0 评论 -
HDU 5113 Black And White (搜索剪枝)
题意:给一个N*M的格子,给出K种颜色以及每种颜色的数目,保证数目和相加 = N*M,求一种方案使得上下左右相邻的格子颜色都不相同。思路:搜索暴力剪枝:剩下的格子的数量+1必需是剩余最多种类棋子的两倍代码:#include using namespace std;int a[30];int vis[6][6];int dirx[]={0,0,1,-1};原创 2017-07-24 13:00:01 · 383 阅读 · 0 评论 -
HDU 5118 GRE Words Once More!(搜索剪枝)
题意:给定一个有无环图,边权代表一个字母(事实上用数字表示的),然后给定2~n个点的特殊性,1表示特殊,0表示不特殊,从1出发,到一个特殊点停止,这条路径上的所有字母拼成一个单词,将所有单词按照字典序排序后,然后Q组询问,问第k个单词的长度是多少。思路:参考自:http://blog.csdn.net/yuanjunlai141/article/details/73744137原创 2017-07-24 13:05:23 · 2013 阅读 · 0 评论 -
CodeForces - 791C Bear and Different Names
题意: N 个人站一排,从左至右依次每 K 个人中有重名的标记为 NO ,没有重名则标记为 YES,请给出一种可能的队列。N,K思路: 先生成50个不重复的名字,怎么生成都行。 跑一边生成队列,先固定前 K - 1的人名字不重复,若遇到 NO 则向队列后加入即将出队的那个名字。若遇到 YES 就找一遍队列中没有的名字。代码:#inc原创 2017-03-20 13:10:29 · 552 阅读 · 0 评论