算法竞赛入门经典 每日一题
郭晋龙
压力面前保持优雅
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
团体程序设计天梯赛(L2-004 这是二叉搜索树吗? (25 分))
题目: 思路分析: 二叉搜索树的前序遍历分为三部分 就是第一个数是树根第二部分都是小于第一个数的部分 第三部分是大于第一个数的部分 按照这样的思路我们递归就可以把树展开 然后按照后序遍 历的特征递归输出 代码实现: const int MAX=1010; int a[MAX]; int f=0; int n; vector<int>ans; void dfs(int head,int tail){ if(head>tail) return; i..原创 2021-10-28 19:04:28 · 550 阅读 · 0 评论 -
团体程序设计天梯赛(L2-002 链表去重 (25 分))
题目: 思路分析: 我们要就是把二个链表分开打印出来 所以根本没有必要来模拟链表什么的! 一个骚操作就是没有vis的放前面 vis过的+MAX置后 同时进行二个链表的计数k1,k2 然后按照他们用来顺序输出即可 代码实现: const int MAX=1e5; const int N=1e5; struct node{ int next,dz,num; int key; }e[MAX]; bool cmp(node a,node b){ return a.n.原创 2021-10-28 13:36:46 · 658 阅读 · 0 评论 -
团体程序设计天梯赛(L2-001. 紧急救援)(dijstra优化)(25分)
题目: 思路分析: 其实就是在最短路的条件下多了一约束条件尽可能的使救援队伍更大 数据大于200 Floyd不好用了 直接dji吧! 就是在路径更新时候多一点救援队伍数量的约束 求最短路的路径数也简单 dfs解决就行 代码实现: const int MAX=1010; struct node{ int next,to,w; }e[510*510]; struct l{ int w,v; bool operator <(const l&a) .原创 2021-10-28 10:28:55 · 860 阅读 · 0 评论 -
牛客练习赛79(题解报告)
题目链接牛客练习赛79_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ A-炼金术师 题目: 思路分析: 根据染色覆盖规律 我们要找的就是整个序列的最大峰值的递减个数(先找到一个最大的峰点然后在他之后的第二大 在第二大点后面找第三到的峰点 依次寻找 最后统计个数 这个过程我们可以拿栈来实现! 听不懂的话看代码就行! 代码实现: const int MAX=2e6; int a[MAX]; int main(){ int n; ...原创 2021-10-27 22:25:33 · 1484 阅读 · 0 评论 -
牛客月赛21 (题解报告)
A-Audio 思路分析: 代码: B-Bits(待补) C-Channels 思路分析: 代码: D-DDoS 思路分析: 代码: E-Exams 思路分析: 代码: F- Fool Problem 思路分析: 代码: G-Game 思路分析: 代码: H- ”Happy New Year!“ 思路分析: I-I love you 思路分析: 代码: J-Jelly 思路分析: 代码 A-Audio 思路分析: 就是简单的求...原创 2021-10-27 13:48:00 · 192 阅读 · 0 评论 -
2021 CSP-J 题解
分糖果 其实题意就是要求x%n的最大值 我们可以吧min(kn-1,r)作为x来求x%n的最大值 k求法就是(l+1)/n向上取整 向上取整就直接分母+1就行 int n, l, r; cin >> n >> l >> r; int t = min(r, (l + 1 + n - 1) / n * n - 1); cout << t % n << endl; ...原创 2021-10-25 13:24:10 · 724 阅读 · 0 评论 -
P1197 [JSOI2008]星球大战
思路: 乍一看题目我们可以直接想到的是bing原创 2021-10-24 17:27:30 · 119 阅读 · 0 评论 -
2149. 「SCOI2005」繁忙的都市(最小生成树)
题意就是要把图全部连通所要的联通路最大的一条边最小 明显就是最小生成树的模版呀!Kruskal 暴力来吧! const int MAX=10010; int fa[MAX]; int find(int x){ if(x==fa[x]) return x; return fa[x]=find(fa[x]); } int n,m; struct E{ int u,v,w; bool operator<(const E &a) const{ ...原创 2021-10-21 22:44:26 · 186 阅读 · 0 评论 -
算法竞赛入门经典 每日一题(最短路)
明显是最短路题目 (其实可以理解为找树的重心 有能力的自己了解吧!不写了有点麻烦! 这道题是点权值并不是之前最熟悉的边权值 然后我们初始化全部为INF然后联通的为1 我们只想要先计算最短路然后*每个点的权值 数据小 最短路什么方法都行吧 floyd简单好写自己跑!!! const int MAX=1010; int n; int g[MAX][MAX]; int weight[MAX]; int main(){ cin>>n; mms(g,INF); ...原创 2021-10-21 22:20:58 · 154 阅读 · 0 评论 -
P2024 [NOI2001] 食物链
二种动物之间有三种关系 那么我们可以开辟三倍空间的并查集 1~n n+1~2*n 2*n+1~3*n 如果u v 是同类的话那么就让三个群系中的uv全部相连 如果u 吃v的话 那么就u连v的下一个群系 那么如何判断是否正确呢 判断是否是同类我们只需要判断相邻群系的二者是否属于一个集合 判断是否异类 我们只要判断在同一个群系中二者是否属于一个集合 const int MAX=100010; int fa[MAX*3]; int find(int x){ if(x==fa[x]...原创 2021-10-21 16:38:58 · 167 阅读 · 0 评论 -
P1197 [JSOI2008]星球大战(逆向并查集)
思路: 乍一看题目我们可以直接想到的是并查集的运用 开始我们知道并查集可以用来连通图 但是怎么用来拆图呢 那么我们为啥子不先一开始不连被摧毁的城市的点 然后逆序连图 存入栈中 到最后逆序输出 const int MAX=1000010; int fa[MAX]; int vis[MAX]; int a[MAX]; int find(int x){ if(x==fa[x]) return x; return fa[x]=find(fa[x]); } vector<i...原创 2021-10-21 15:35:34 · 205 阅读 · 0 评论 -
P1855 榨取kkksc03(二维费用背包问题)
int main(){ int n,m,t; cin>>n>>m>>t; for(int i=0;i<n;i++){ cin>>a[i]>>b[i]; } for(int i=0;i<n;i++){ for(int j=m;j>=a[i];j--){ for(int k=t;k>=b[i];k--){ ...原创 2021-10-20 19:08:28 · 155 阅读 · 0 评论 -
算法竞赛入门经典 每日一题(P1833 樱花+混合背包+二进制优化)
看题 我们可以知道这是一个混合背包的题目 什么是混合背包呢? 其实就是01背包+多重背包+完全背包的混合体 我们只需要处理对应的细节就行 但是我们要对多重背包进行二进制的优化处理 其中多重背包可以和01背包进行合并 const int MAX=100010; int a[MAX]; int b[MAX]; int c[MAX]; int dp[MAX]; int main(){ int a1,a2,a3,a4; scanf("%d:%d",&a1,&...原创 2021-10-20 19:01:34 · 363 阅读 · 0 评论 -
算法竞赛入门经典 每日一题(德玛西亚万岁)
题目描述 德玛西亚是一个实力雄厚、奉公守法的国家,有着功勋卓著的光荣军史。 这里非常重视正义、荣耀、职责的意识形态,这里的人民为此感到强烈自豪。 有一天他们想去制裁邪恶的比尔吉沃特,于是派遣了自己最优秀的战士。 结果比尔吉沃特领土太小,只有长为n宽为m共计n*m块土地,其中有些土 地标记为0表示为高山峻岭或者深海湖泊,英雄们无法在其中站立,只有标 记为1的土地才能容纳一个英雄。德玛西亚的英雄们战斗时有一个特点,他 们不希望队友站在自己旁边显得很暧昧。请问最多能有多少种安排德玛西...原创 2021-10-20 13:22:30 · 236 阅读 · 0 评论 -
算法竞赛入门经典 每日一题(小G有一个大树)
题目描述 小G想要把自己家院子里的橘子树搬到家门口(QAQ。。就当小G是大力水手吧) 可是小G是个平衡性灰常灰常差的人,他想找到一个这个橘子树的平衡点。 怎么描述这棵树呢。。。就把它看成由一个个节点构成的树吧。结点数就 代表树重。 输入描述: 多组数据输入输出, 第一行包含一个整数n(3<=n<=1000)代表树的结点的个数 以下n-1行描述(1-n)节点间的连接关系。 输出描述: 输出两个个整数 x,num 分别代表树的平衡点,和删除平衡点后最大子树的结点数(如果结点...原创 2021-10-19 22:40:55 · 521 阅读 · 0 评论 -
算法竞赛入门经典 每日一题(美丽的项链)
题目描述 妞妞参加了Nowcoder Girl女生编程挑战赛, 但是很遗憾, 她没能得到她最喜欢的黑天鹅水晶项链。 于是妞妞决定自己来制作一条美丽的项链。一条美丽的项链需要满足以下条件: 1、需要使用n种特定的水晶宝珠 2、第i种水晶宝珠的数量不能少于li颗, 也不能多于ri颗 3、一条美丽的项链由m颗宝珠组成 妞妞意识到满足条件的项链种数可能会很多, 所以希望你来帮助她计算一共有多少种制作美丽的项链的方案。 输入描述: 输入包括n+1行, 第一行包括两个正整数(1...原创 2021-10-19 21:57:48 · 346 阅读 · 0 评论 -
算法竞赛入门经典 每日一题(TaoTao要吃鸡)
题目描述 Taotao的电脑带不动绝地求生,所以taotao只能去玩pc版的荒野行动了, 和绝地求生一样,游戏人物本身可以携带一定重量m的物品,装备背包 之后可以多携带h(h为0代表没有装备背包)重量的东西。玩了几天 taotao发现了一个BUG,当装备背包之后,如果可携带重量没有满,就 可以拿一个任意重的东西。(解释看样例)有一天taotao空降到了一个 奇怪的岛上,岛上有n件装备,每个装备都有重量Wi和威力值Vi,但taotao 不认识这些装备,所以他来求助你,挑选威力最大的装备,帮助他吃...原创 2021-10-19 21:31:20 · 289 阅读 · 0 评论 -
牛客小白月赛27(题解)
B-乐团派对 题目描述 音乐是带给大家快乐的存在,而你的目标就是组建若干支乐队,让世界听到你们的演奏! 你目前有n位乐手,每位乐手只能进入一个乐队,但并不是每位乐手都能担大任,因此需要团队合作。第i位乐手的能力值为a[i],表示该位乐手所在乐队的人数必须大于等于a[i]。在保证每位乐手都被分进一个乐队的情况下,乐队数量最多可以是多少? 有二种思路: 1)贪心: 就是先a数组从小到大排序 如果最大的数大于n的话 直接返回-1 然后顺序遍历a数组 满足num大于ai就++ 2)dp动态...原创 2021-10-19 12:14:40 · 596 阅读 · 0 评论 -
算法竞赛入门经典 每日一题(树上行走)
题目描述 牛牛苦练武功绝学——轻功水上漂,最终没有练成,但是他学会了在树上行走的本领。 这天,牛牛落入了敌人的陷阱,身后有巨石追击,面前有n个点,n-1条边连成一张连通图(一棵树),现在牛牛必须立马选择进入这张图中,但是牛牛发现,这张图有两种不同的点,一旦进入一个点,所有与该点不同类型的点都会消失(相连的边也会消失),牛牛只能走到有边相连的点,牛牛想要自己尽量有更多的点可以活动,那么他可以进入哪些点? 输入描述: 第一行有一个正整数 nn 表示共有 nn 个点(n≤2×105)(n...原创 2021-10-19 10:49:44 · 438 阅读 · 0 评论 -
算法竞赛入门经典 每日一题(迷宫)
题目描述 有一个n×m的网格地图,每个点有个值aijaij,现在牛牛要从(1,1)走到(n,m)(1,1)走到(n,m),他可以往右边或者往下走,每次到一个点会获得当前的点权值,并将权值和mod1e4+71e4+7,当牛牛从不同方式走到(n,m)(n,m)的时候能获得多少种权值和? 输入描述: 第一行输入正整数n,m(n,m≤100)n,m(n,m≤100) 接下来nn行每行有mm个正整数,分别代表aijaij(aij≤109)(aij≤109) 输出描述: ...原创 2021-10-18 21:59:10 · 603 阅读 · 0 评论 -
算法竞赛入门经典 每日一题(上学要迟到了)
题目描述 牛牛早上起床一看,自己睡过了,赶紧起床准备去学校,他去学校只有两种方式,坐公交车和步行,牛牛去学校是一条直线,这条直线上总共有n个车站,车站之间的距离都是相等的,每个车站只有一种公交车aiai,每个公交车只在对应的公交站停车,每个公交车的速度也不一样,第i种公交车过一站的时间需要titi,并且公交车是单向行驶,只能从左到到右,走路可以任意走,然而牛牛自己步行走一站需要的时间为T,恰好牛牛家和学校都在某一个站点,分别为s和t,问最少需要多少时间牛牛才能到学校? 输入描述: ...原创 2021-10-18 21:41:02 · 206 阅读 · 0 评论 -
算法竞赛入门经典 每日一题(牛牛和字符串的日常)
题目描述 牛牛每天都要做的事就是读书,从书里找自己喜欢的句子,他每天都会去读一本书,如果牛牛今天读的书的某连续kk个字符刚好是牛牛喜欢句子的某个前缀,那么牛牛将得到kk点兴奋感,但他每天只能注意到一次自己喜欢的句子(也就是每天只能增加一次兴奋感),也就是说他会尽量去找那个让自己兴奋度增加最多的句子,那么,nn天之后牛牛总共最多能有多少兴奋感? 输入描述: 第一行是一个字符串s(∣s∣<=1×105)表示牛牛喜欢的字符串第一行是一个字符串s(∣s∣<=1×105)表示牛牛喜欢的...原创 2021-10-18 21:14:28 · 534 阅读 · 0 评论 -
算法竞赛入门经典 每日一题(合并回文子串)
题号:NC13230 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 输入两个字符串A和B,合并成一个串C,属于A和B的字符在C中顺序保持不变。如"abc"和"xyz"可以被组合成"axbycz"或"abxcyz"等。 我们定义字符串的价值为其最长回文子串的长度(回文串表示从正反两边看完全一致的字符串,如"aba"和"xyyx")。 需要求出所有可能的C中价值最大的字符串,输出这个最...原创 2021-10-17 13:40:13 · 256 阅读 · 0 评论 -
算法竞赛入门经典 每日一题(wyh的吃鸡)
题目描述 最近吃鸡游戏非常火,你们wyh学长也在玩这款游戏,这款游戏有一个非常重要的过程,就是要跑到安全区内,否则就会中毒持续消耗血量,我们这个问题简化如下 假设地图为n*n的一个图,图中有且仅有一块X的联通快代表安全区域,有一个起点S代表缩圈的时候的起点,图中C代表的是车(保证车的数量小于等于100),标记为.的代表空地,可以任意通过,O代表障碍物不能通过。每次没有车的时候2s可以走一个格(只能走自己的上下左右4个方向),有车的话时间为1s走一个格 现在告诉你最多能坚持的时间为t秒,问你在...原创 2021-10-15 15:16:21 · 686 阅读 · 0 评论 -
算法竞赛入门经典 每日一题(郊区春游)
郊区春游 题解 讨论 查看他人的提交 我的提交 题号:NC16122 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 今天春天铁子的班上组织了一场春游,在铁子的城市里有n个郊区和m条无向道路,第i条道路连接郊区Ai和Bi,路费是Ci。经过铁子和顺溜的提议,他们决定去其中的R个郊区玩耍(不考虑玩耍的顺序),但是由于他们的班费紧张,所以需要找到一条旅游路线使得他们的...原创 2021-10-14 20:19:37 · 483 阅读 · 0 评论 -
算法竞赛入门经典 每日一题(UVa10966)------你值得尝试
typedef unsigned long long LL; typedef vector<int> VI; typedef vector<string> VS; const string ERROR_BAD_USAGE = "bad usage\n"; const string ERROR_NO_COMMAND = "no such command\n"; const string ERROR_DIR_NOT_FOUND = "path not found\n"; const .原创 2021-10-14 03:15:27 · 308 阅读 · 0 评论 -
算法竞赛入门经典 每日一题(How to sort)
题目描述 坑坑作为一个ACMer,经常要对一组数字进行排序,在排序过程中,将两个数字交换位置的花销是这两个数字的和,慢慢的他想实现一种最低花销的排序方式,你们能帮助他吗? 输入描述: 输入包含多组测试数据。 每组测试输入包含一组数字包含的整数个数n以及n个整数mi(1<=n<1000,0<=mi<=10000)给定的整数互不重复。 输出描述: 对于每组测试数据,输出一个整数,给定整数按升序排序时所需花销的最小值。 示例1 输入 复制 4 3...原创 2021-10-13 20:20:49 · 342 阅读 · 0 评论 -
算法竞赛入门经典 每日一题(3029 City Game)
思路: 扫描 从下到上 从左到右 从右到左 得出每个点的 运动极限 const int MAX=1010; int n,m; int a[MAX][MAX]; int up[MAX][MAX]; int l[MAX][MAX]; int r[MAX][MAX]; int main(){ cin>>n>>m; over(i,0,n-1){ over(j,0,m-1){ char c; ...原创 2021-10-13 13:35:31 · 162 阅读 · 0 评论 -
算法竞赛入门经典 每日一题(好题呀!!!)
After doing Ray a great favor to collect sticks for Ray, Poor Neal becomes very hungry. In return for Neal’s help, Ray makes a great dinner for Neal. When it is time for dinner, Ray arranges all the dishes he makes in a single line (actually this line is v原创 2021-10-12 22:08:15 · 169 阅读 · 0 评论 -
算法竞赛入门经典 每日一题
题目: 有n个正整数组成的一个序列 给定整数s 求长度最短的连续序列 求他们的和大于等于s O(n^2)的思路特别容易想 O(N*logN)也是简单的 不过可以优化到O(n) 思路就是枚举右端点然后最大化左端点 表面是是二个循环 有些人可能会说这不是n^2 的复杂度嘛? 好好想想真的是这样嘛 i的值不是就没有回到起点 const int MAX=100010; int A[MAX]; int B[MAX]; int main(){ int n; int s; .原创 2021-10-12 10:47:03 · 187 阅读 · 0 评论 -
算法竞赛入门经典 每日一题
题目: 给一个长度为n的整数列A0A1A2A3An-1,找出两个整数Ai和Aj,使得Ai -Aj尽量大。 最简单的思想就是二指针 我们可以优化到O(1)直接输入判断 const int MAX=10001; int main(){ int t; cin>>t; while (t--) { int n; cin>>n; int x; cin>>x; ...原创 2021-10-12 10:34:11 · 255 阅读 · 1 评论 -
算法竞赛入门经典 每日一题
这里没有标准输出 写了写大体思路 就是定义ve vh分别是这点的可以向下 右延伸的最长线段 通过后缀的思想得到 从下到上 从右到左 遍历 然后枚举每个点 min(ve,vh)是最大边长 从而可以得到其他的端点 进行判断 const int MAX=16; int ve[MAX][MAX]; int vh[MAX][MAX]; int H[MAX][MAX],V[MAX][MAX]; int se[MAX]; int main(){ int m; int n; ...原创 2021-10-12 02:49:45 · 143 阅读 · 0 评论 -
算法竞赛入门经典 每日一题
直接贪心的选取每位出现最多的字母 可以哈希对应 int b[1010][5]; int main(){ int n,m; string a; cin>>n>>m; for(int i=0;i<n;i++){ cin>>a; //a-1 g-2 c-3 t-4 for(int j=0;j<m;j++){ if(a[j]=='A'){ ...原创 2021-10-12 02:01:36 · 130 阅读 · 0 评论
分享