首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
在线笔面试、雇主品牌宣传
登录
/
注册
AROY
获赞
17
粉丝
0
关注
0
看过 TA
2
男
长江商学院
2019
C++
IP属地:四川
暂未填写个人简介
私信
关注
拉黑
举报
举报
确定要拉黑AROY吗?
发布(40)
评论
刷题
AROY
关注TA,不错过内容更新
关注
2020-05-05 21:29
已编辑
长江商学院 C++
D 坐地铁---分层图/加虚点/两种状态的dis
D 坐地铁 https://ac.nowcoder.com/acm/contest/5556/D 解法1: 数组用二维分别表示点(station)和线路(line)两种状态;跑最短路的过程中, 先将当前点经过的所有line入队, 在跑邻接点的时候, 看和当前点是否在同一线内, 在的话则更新。表示sp到i点的最短距离,最后到i的线是第j条线 #include<bits/stdc++.h> using namespace std; #define sc scanf #define MEM(x, b) memset(x, b, sizeof(x)) typedef long lo...
0
点赞
评论
收藏
分享
2020-05-04 22:19
已编辑
长江商学院 C++
[牛客IOI周赛16-提高组]补题 暴力美学
https://ac.nowcoder.com/acm/contest/5389 B 参考大佬题解 https://ac.nowcoder.com/acm/problem/blogs/201976题目:给定一个序列,每次在其左端点或者右端点加入一个元素。每次加入都求一次这个序列的最长子区间---满足这个子区间的 'W' 元素的个数等于 'D' 元素的个数 比赛时考虑把W看成1 R看成0 然后看个数是否相等----考虑复杂了,不过也想到了用区间和来表示把 'W' 看成 1,把 'D' 看成 -1,若一个子区间满足条件,则这个子区间的和为 0。所以先用一个表示前缀和;若满足条件则。但是这个题...
0
点赞
评论
收藏
分享
2020-05-08 14:17
已编辑
长江商学院 C++
【牛客IOI周赛16-普及组】补题,树形DP
A 签到题,本质上是求 #include <bits/stdc++.h> using namespace std; #define ll long long const int MOD=1e9+7; int main() { int n;ll ans=1;cin>>n; while(n){ ans=(ans%MOD*n%MOD)%MOD; n--; } cout<<ans; } B 猜数---排序和不排序两种做法 原数组排序,从前以后依次加上,一直加到大于等于给定m 。相当于一种贪心,从最多的差...
0
点赞
评论
收藏
分享
2020-04-23 23:09
长江商学院 C++
【每日一题0422】二分答案
https://ac.nowcoder.com/acm/problem/14301对数列A的每个区间求第K大,并将第k大插入到B中,再求B的第M大。 暴力不行咋办===那就不如反着想吧,二分枚举答案;二分一个数x,第k个数大于x的区间个数大于m-1个
0
点赞
评论
收藏
分享
2020-04-22 17:10
长江商学院 C++
【每日一题0421】枚举,后缀和,思维
https://ac.nowcoder.com/acm/problem/14583题目:一共两组糖,第i只糖可以消灭掉所有排在他前面的和他不是同一组的且值小于他的数;第i秒会让前ci个值加1;问最后存活多少个糖。 这个题有意思的点就是题面给你展示的是动态给前i个增加1;但实际上这个动态增加和一次性加上去结果是一样的。因为两个都增加1 大小关系是不变的。用每个糖最后他的值判断能不能存活就行了。也就是说第i只糖能否存活取决于后面有没有比他大且不是同一个组的从后往前 维护两个组最大值就可以了;增加1的操作用后缀和来维护就可以如果当前的糖能力值小于另一个组别的最大值, 那么它就会被消灭 #inc...
0
点赞
评论
收藏
分享
2020-04-21 23:51
长江商学院 C++
【每日一题0417】二分答案模板题
https://ac.nowcoder.com/acm/problem/23049 典型的二分答案模板题二分一个长度,检查答案是否大于等于K即可,若可以增大长度,不可以缩小长度 #include<bits/stdc++.h> using namespace std; #define N 200010 int num[N];int k;int n; int check(int len){ int cnt=0; for(int i=1;i<=n;++i){ cnt+=num[i]/len; } return cnt>=k; ...
0
点赞
评论
收藏
分享
2020-04-21 22:57
已编辑
长江商学院 C++
【每日一题0415】树上dfs+技巧
https://ac.nowcoder.com/acm/problem/14248 技巧:偶 = 偶 + 偶 = 奇 + 奇。偶数层到偶数层的节点路径长度为偶数,奇数层到奇数层的节点路径长度为偶数,算出每个节点的深度,统计深度为奇、偶数的节点个数odd、even。答案就是树上dfs直接统计深度就可以了 #include<bits/stdc++.h> using namespace std; #define ll long long #define N 100005 ll n,tot,rt,dis[N],fa[N],h[N],ne[N<<1],p[N<<1...
0
点赞
评论
收藏
分享
2020-04-20 21:08
已编辑
长江商学院 C++
【每日一题0414】异或前缀和
https://ac.nowcoder.com/acm/problem/14247给定一个长度为n的整数数组,问有多少对互不重叠的非空区间,使得两个区间内的数的异或和为0。 异或前缀和 序列[5,1,1]pre[1]=5 pre[2]=5^1 pre[3]=5^1^1区间[2,3]的异或则=pre[3]^pre[1]=5^1^1^5 , 即去掉pre[1] 本题 思路在代码注释 #include <bits/stdc++.h> using namespace std; typedef long long ll; int pre[10004], cnt[3000006]; i...
0
点赞
评论
收藏
分享
2020-04-20 17:13
已编辑
长江商学院 C++
【每日一题0413】树型dp+换根
201400 树学 n个点和n-1条边(树),选择一个点作为根节点使得所有点的深度和最小。 用表示以i为根的时候的深度和,表示i子树含有的节点和; 每个节点的深度;假设u是v的父亲;则 #include <bits/stdc++.h> using namespace std; #define ll long long const int MAXN = 1e6 + 5; #define N 1000005 ll tot,dis[N],fa[N],h[N],ne[N<<1],p[N<<1],wi[N<<1]; void addEdge(int u,i...
0
点赞
评论
收藏
分享
2020-05-04 20:40
已编辑
长江商学院 C++
【牛客小白月赛24】补题(离散化,树剖)TODO
这次比赛啥都不说了===心酸。这次小白赛难度其实不高,除了A之外我应该都能做出来才对===心酸FG很简单,不写题解了。A放弃了-- H 好朋友——并查集+离散化 先把所有朋友关系合并到并查集里面;然后枚举敌人关系,只要两者在一个朋友集合里面就是矛盾的。当时只用了并查集没过,想着10^9数值的话tree数组直接用map,但是map本身内部有排序,处理速度不如数组,导致时间超时这道题数据设计的比较强。。。只能离散化,离散化就是把一组数去重排序之后映射成下标,即 #include <bits/stdc++.h> using namespace std; #define ll long l...
0
点赞
评论
收藏
分享
2020-04-12 00:24
已编辑
长江商学院 C++
【牛客练习赛61】4月10日贪心/dfs/最短路
https://ac.nowcoder.com/acm/contest/5026 还是好菜=.=.=卡在B时间太长了,一直没找出自己思路哪里错误。。。以后比赛30分钟搞不出一道题直接跳过吧==== B 贪心 设操作次数是ans,从减一操作上来讲,必然等于两个数中的较大者;所以这道题贪心是去想怎么使得乘2的操作次数最少,我的错误思路是让n,m两者diff(判断和2的i次方之间关系)不断变小,实际上只要n,m下降到m=n/2即可不妨设,最终的目的是让相等,换个说法就是让n不断的逼近m,能让m变大的方法只有乘2,所以贪心思路就是: m一直乘2,直到m>n/2 两者一起减1直到m=n/2...
0
点赞
评论
收藏
分享
2020-04-09 23:23
已编辑
长江商学院 C++
【每日一题】树上dfs+贪心
https://ac.nowcoder.com/acm/problem/13249一棵n个点的有根树,1号点为根,相邻的两个节点之间的距离为1。树上每个节点i对应一个值k[i]。每个点都有一个颜色,初始的时候所有点都是白色的。你需要通过一系列操作使得最终每个点变成黑色。每次操作需要选择一个节点i,i必须是白色的,然后i到根的链上(包括节点i与根)所有与节点i距离小于k[i]的点都会变黑,已经是黑的点保持为黑。问最少使用几次操作能把整棵树变黑。 马上就把题目补完了=.=,实在没啥时间做首先肯定是从叶子节点开始选点变黑,感觉做过这类题,类似跳跃游戏什么的==;当选完一个点,选下一个点的策略是:选...
0
点赞
评论
收藏
分享
2020-04-09 22:03
长江商学院 C++
【每日一题】枚举优化 数码 待补题
https://ac.nowcoder.com/discuss/399522?type=101&order=0&pos=14&page=2 #include <bits/stdc++.h> using namespace std; #define int long long int l, r, a[20], b[20]; int shou(int x) { int ans = 0 ; while (x>0) { ans = x % 10; x /= 10; } return an...
0
点赞
评论
收藏
分享
2020-04-09 21:58
长江商学院 C++
【每日一题】转换思维/树上dfs
https://ac.nowcoder.com/acm/problem/13886 是我最喜欢的树上dfs~给你一棵 n 个节点的树(保证 n是偶数),你需要将 nn个节点分为 n/2 个点对,使得每个点对的两个点的距离的和最小。 关键点:思维转换:选点两两配对求距离和--》转换成选边 在最短的距离和之中一条边一定不会被覆盖两次,也就是说对于一条边来说,其实只有选和不选两种可能。 对于一个点x,它子树中的点一定会尽量在子树中找到匹配的点内部消化掉(要么连父亲要么连兄弟),只有根是有可能会往上找一个点来匹配(不然又会出现重复覆盖一条边的情况)。这道题最关键的是转换思维,如果考虑两两配对并不容...
0
点赞
评论
收藏
分享
2020-04-09 21:19
已编辑
长江商学院 C++
【每日一题】dfs序/DP
https://ac.nowcoder.com/acm/problem/13611shy有一颗树,树有n个结点。有k种不同颜色的染料给树染色。一个染色方案是合法的,当且仅当对于所有相同颜色的点对(x,y),x到y的路径上的所有点的颜色都要与x和y相同。请统计方案数。题目:给k个联通块染色 学习到了~树转换为线性结构————在对树进行深度优先遍历时把进(出)栈序列记录下来,记录下来的这个序列称为dfs序;由深度优先遍历的性质知道, 对于一个节点,他的祖先节点肯定比他先进栈; 序列中两个节点编号相同夹着的序列就是这个节点的子树序列。 但是这道题。。。不关心dfs序具体是啥样。。。因为涂一个点...
0
点赞
评论
收藏
分享
1
2
3
关注他的用户也关注了:
牛客网
牛客企业服务