首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
课程
专栏·文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
在线笔面试、雇主品牌宣传
登录
/
注册
精神病科黄主任
蚂蚁集团_支付宝_研发
获赞
871
粉丝
111
关注
28
看过 TA
424
男
福建工程学院
2022
移动开发
IP属地:浙江
暂未填写个人简介
私信
关注
拉黑
举报
举报
确定要拉黑精神病科黄主任吗?
发布(233)
刷题
精神病科黄主任
2020-06-07 21:50
已编辑
蚂蚁集团_支付宝_研发
小A与小B
分别对两个人进行bfs 计算出到达每个点的最短时间然后枚举两个人都能达到的点,最晚到的那个人的时间就是在这个点的相遇时间。因为要求时间最小,所以总体维护一个最小值即可对于判断点两个人是不是能同时达到,应该判断这个点两个人是不是能在有限时间内到,而不是这个点是不是障碍比如1 3C#D答案显然是NO 不然如果判断点是不是障碍,因为一定有C和D两点,所以结果一定是YES刚开始的做法在最后枚举的时候 判断两个人能不能达到,判断条件是该点是不是障碍,wa到自闭 #include<bits/stdc++.h> using namespace std; int to[][2]={-1,0,1,0...
每日一题
0
点赞
评论
收藏
转发
精神病科黄主任
2020-06-07 11:38
蚂蚁集团_支付宝_研发
Contest
树状数组+排序 A比B的一场排名高,并且B也有一场的排名比A高那么对第一场排序后,就保证了后面的排名比前面的排名高,这样只需要统计有多少个数对(a[i],a[j]) 满足 i<j && a[i]>a[j] 这不就是求逆序数对吗。所以我们对任意两场求逆序数对即可。以第一场排序后,求相对于第一场而言,第二场的逆序数对(即求出第一场、第二场之间的满足的),第三场的逆序数对(即求出第一场、第三场之间的满足的)然后在以第二场排序,求相对于第二场而言,第三场的逆序数对(即求出第二场、第三场之间的满足的)最后的结果要除以2,为什么?假设存在一组逆序数对,假设A的第一场比B的第一...
每日一题
0
点赞
评论
收藏
转发
精神病科黄主任
2020-06-06 22:04
蚂蚁集团_支付宝_研发
旅游
树型dp和没有上司的舞会如出一辙 如果当前点居住了,那么子节点肯定不能居住。如果当前点没住,那么子节点可以住可以不住设dp[x][1/0]为以x为根的子树带的最长时间,1表示住在x过,0表示没有那么易得dp[x][1]=1+Σ(dp[son][0])dp[x][0]=Σmax(dp[son][0],dp[son][1])最后答案就是dp[s][1]因为指定了第一天一定要住在s #include<bits/stdc++.h> using namespace std; vector<int> e[1<<20]; int dp[1<<20][2]; v...
每日一题
0
点赞
评论
收藏
转发
精神病科黄主任
2020-05-30 19:46
蚂蚁集团_支付宝_研发
货币系统
题目描述在网友的国度***有n种不同面额的货币,第i种货币的面额为a[i],你可以假设每一种货币都有无穷多张。为了方便,我们把货币种数为n、面额数组为a[1..n]的货币系统记作(n,a)。在一个完善的货币系统中,每一个非负整数的金额x 都应该可以被表示出,即对每一个非负整数x,都存在n个非负整数t[i] 满足a[i] x t[i] 的和为x。然而,在网友的国度中,货币系统可能是不完善的,即可能存在金额x不能被该货币系统表示出。例如在货币系统n=3, a=[2,5,9]中,金额1,3就无法被表示出来。两个货币系统(n,a)和(m,b)是等价的,当且仅当对于任意非负整数x,它要么均可以被两个货币...
每日一题
0
点赞
评论
收藏
转发
精神病科黄主任
2020-05-29 14:18
蚂蚁集团_支付宝_研发
Protecting the Flowers
题意:n头牛,每次搬运一头牛回到起始点,搬运每头牛的时间为Ti,从起点返回回来也需要Ti的时间,没搬运的牛每分钟会破坏di朵花,问最少会破坏多少朵花。 容易知道,对于任意两头相邻的牛,搬运的顺序不会影响其他牛造成的破坏,那么我们计算先搬运A在搬运B破坏值就是先搬运b在搬运a破坏值为假设前者更优秀则有化简后得到所以按照上述式子,对牛进行排序,按顺序搬运牛即可,维护一个变量表示在搬运这头牛之前花了多少时间,即在搬运他之前他破坏了多少分钟。 #include<bits/stdc++.h> using namespace std; #define int long long struct...
每日一题
0
点赞
评论
收藏
转发
精神病科黄主任
2020-05-27 12:49
蚂蚁集团_支付宝_研发
小AA的数列
按位计算贡献 要求区间[l,r]的异或和,只需要知道[1,r]和[1,l-1]的异或和即可。所以我们先对序列进行前缀异或和处理一下。这样可以O(1)计算任意一个子区间的异或和。先不考虑要求偶数长度的限制,只考虑区间长度的限制。我们知道 对于每一位而言,前缀异或和,该位要么是0要么是1,而要想对区间[l,r]对答案有贡献,则需要区间[1,r]和[1,l-1]的前缀异或和在该二进制位上的值相反。那么这个很简单,我们只需要开一个cnt[0/1]数组统计每一二进制位上异或前缀和位0/1的个数。那么要求长度是偶数呢?容易知道奇+偶=奇、偶+偶=偶 所以cnt可以在多开一维 cnt[0/1][0/1]表示...
每日一题
0
点赞
评论
收藏
转发
精神病科黄主任
2020-05-26 20:11
蚂蚁集团_支付宝_研发
二分
思路:差分数据范围比较大,所以考虑把数据离散化掉,因为我们只在意相对大小,不在意具体数值。对于符号是 . 则cnt[pos]++,cnt[pos+1]--对于符号是 + 则cnt[0]++,cnt[pos]--对于符号是 - 则cnt[pos+1]++ 然后前缀和一下,更新最值即可。这样子你会发现过了80%的数据,还有20%的数据过不了(你猜我怎么知道的) 考虑一下这样的情况5-8+显然答案取6或者7,结果是2最大。如果按照上述方式,因为离散化后,5是1,8是2,其实答案可以是5到8之间的数字,但离散化后,我们就把这一段区间的数字都忽略掉了。所以离散化出来的pos,只需要pos*=2即可...
0
点赞
评论
收藏
转发
精神病科黄主任
2020-05-26 11:45
蚂蚁集团_支付宝_研发
收集纸片
因为最多只有10个纸片,所以直接用stl的next_permutation函数暴力枚举全排列。也就是拿纸片的先后顺序,然后每次排列计算求和 更新最小值即可。 #include<bits/stdc++.h> using namespace std; int a[15]; pair<int,int> q[15]; int main(){ int t;cin>>t; while(t--){ int nn,mm;cin>>nn>>mm; int ex,ey;cin>>ex>&g...
0
点赞
评论
收藏
转发
精神病科黄主任
2020-05-25 18:41
已编辑
蚂蚁集团_支付宝_研发
建筑抢修
贪心。显然的,肯定是以结束时间为关键字从小到大排序。为什么?结束时间早点完成后,然后尽可能有更多时间去修复下一个即可。那么可能出现当前花费的时间加上当前修复的时间会超过时间要求,这时候可以选择这个点不修复,跳过,可以选择再前面完成的里面,选取一个不修复,然后多出来的时间用来修复这个。怎么处理?如果我当前这个只需要花费5就能修复,而已修复的里面有个需要花费10的才能修复,那么完全可以抛弃已修复的10,然后来修复这个花费5的。因为这样可以再更短的时间内修复一样的个数,然后多余的时间就可以分配给后面的点。 #include<bits/stdc++.h> using namespace s...
每日一题
0
点赞
评论
收藏
转发
精神病科黄主任
2020-05-22 18:22
蚂蚁集团_支付宝_研发
异或和之和
这种题肯定是考虑按位计算的跑不了 因为选三个要么3个0、2个0和1个1、1个0和2个1、3个1.容易发现0 0 1和1 1 1才有贡献 那么遍历二进制的64位,根据组合数选取方案数乘上该二进制位的数即可。。 #include<bits/stdc++.h> using namespace std; typedef long long ll; const ll mod=1e9+7; ll a[1<<18],cnt[65]; ll f[65]; int main(){ /*cout<<(0^0^0)<<endl; cout<&l...
0
点赞
评论
收藏
转发
精神病科黄主任
2020-05-22 18:20
蚂蚁集团_支付宝_研发
十字爆破
开两个数组求出每一行、每一列的和 然后遍历把行和列的和加起来 减去多算的这个位置的数字即可 #include<bits/stdc++.h> using namespace std; typedef long long ll; ll r[1000005],c[1000005]; int main(){ int n,m;cin>>n>>m; vector<vector<ll>> a(n+1,vector<ll>(m+1)); for(int i=1;i<=n;i++){ for(i...
0
点赞
评论
收藏
转发
精神病科黄主任
2020-05-22 18:18
蚂蚁集团_支付宝_研发
神奇的字母(二)
。。。。。。签到多组输入遍历找最大输出就是了。。 using namespace std; typedef long long ll; int main() { char c; int a[130]={0}; while(cin>>c){ if(c>='a' && c<='z') a[c]++; } int ma=0; for(int i='a';i<='z';i++){ if(a[i]>ma) ma=a[i],c=i; } //cout<&...
0
点赞
评论
收藏
转发
精神病科黄主任
2020-05-22 18:17
蚂蚁集团_支付宝_研发
解方程
容易发现左边的那个函数一定单调递增。当x=1时候,函数质一定是1,如果x小于1,函数值一定是负数,而右边的c是大于等于1的,所以其实是一定有解的那么二分就好了。考虑到精度问题。所以可以考虑限定次数来二分答案。。 #include<bits/stdc++.h> using namespace std; int main() { double a,b,c; cin>>a>>b>>c; double l=1.0,r=1e9,mid; int time=1000; while(time--) { ...
0
点赞
评论
收藏
转发
精神病科黄主任
2020-05-22 18:15
蚂蚁集团_支付宝_研发
疯狂的自我检索者
很简单,最小的就是把隐藏的都当成1,最大就是当成5。。 #include <bits/stdc++.h> using namespace std; typedef long long ll; int main() { ll n,m;cin>>n>>m; double sum=0; for(int i=1;i<=n-m;i++){ double x;cin>>x; sum+=x; } // cout<<sum<<endl; ll a=sum+...
0
点赞
评论
收藏
转发
精神病科黄主任
2020-05-22 18:13
蚂蚁集团_支付宝_研发
点击消除
。。。栈的经典题吧把当前的字符跟栈顶比较,一样就把栈顶弹出,不一样就把该字符压入栈。 #include<bits/stdc++.h> using namespace std; char s[300005]; int main(){ cin>>s; int len=strlen(s); stack<char> st; for(int i=0;i<len;i++){ if(st.size() && st.top()==s[i]) st.pop(); else st.push(s...
0
点赞
评论
收藏
转发
1
2
3
4
5
6
16
工具箱
TA的圈子
暂未加入圈子
TA的圈子
TA的笔记
暂无笔记
TA的笔记
登录
0
天
已登录
0
天
连续登录
0
人
今日访客
牛客网
牛客企业服务