首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
在线笔面试、雇主品牌宣传
登录
/
注册
YZBPXX
获赞
32
粉丝
0
关注
0
看过 TA
72
男
沈阳技师学院
2022
算法工程师
IP属地:新加坡
暂未填写个人简介
私信
关注
拉黑
举报
举报
确定要拉黑YZBPXX吗?
发布(111)
评论
刷题
收藏
YZBPXX
关注TA,不错过内容更新
关注
2019-08-02 16:48
已编辑
沈阳技师学院 算法工程师
CF The Door Problem
题目描述: 有n个房子 起始时有的开有的关, 有m个开关每个开关控制几个房间(改变一次全部房子的状态就改变 原来开(开->关)或者 原来 关(关->开)),但一个房间恰好由两个开关控制 问能否同时打开n个房子 2 ≤ n ≤ 10^5, 2 ≤ m ≤ 10^5 分析: 假如不能同时打开n个房子 那么比会有一个开关同时出现打开和关闭,所以将开关的情况都放在一颗树上 比如:两个开关x,y 如果对应的门关则 x开,y不开,或则y开,x不开 当问打开时也有相同的道理 如果同一个开关 开或不开同时出现在了一棵树上则不能...
0
点赞
评论
收藏
分享
2019-08-02 16:49
已编辑
沈阳技师学院 算法工程师
cf 793B
http://codeforces.com/problemset/problem/793/B 题目描述: 给你一个题 让你搜索起点到终点有没有路径,只能上下左右走,且转弯数不超过2个 1 ≤ n, m ≤ 1000 解题思路: 明显是dfs题,但时间上过不去, 我们唯一可以解决的就是减少重复点的次数,分析可以知道当一个点重复出现且转弯数和方向都相等 那么该点完全重复可以省去,此时就已经能过了,只需要记录该点坐标,方向和转弯数(其实该点转弯数只要大于等于上次出现过的就一定不能走) ac代码: #include<bits/stdc++.h> usi...
0
点赞
评论
收藏
分享
2019-07-27 19:19
沈阳技师学院 算法工程师
cf Sorting the Coins
题目描述: 开始时全是OOO....n个O, 每次从左到右遍历,如果发现出现XO的情况就调换位置,依次循环 直到不能调换了,并且下次开始时又会回到起初的状态,并且有a1,a2,,,,,,an,表示地i次的a[i]位置变为X,保证不重复; 问你 第0次到第n次每次循环了几次 #include<bits/stdc++.h> using namespace std; const int MAX=3e5; int a[MAX]; int main(){ ios::sync_with_stdio(0); cin.tie(0...
0
点赞
评论
收藏
分享
2019-07-26 17:53
沈阳技师学院 算法工程师
CF Cards Sorting
乱序输入n个数,从头开始取 如果这个是最小的(在现在的数组中)就删除否则放到最后面 问需要取几次才能把全部删除 1 ≤ n ≤ 100 000,1 ≤ ai ≤ 100 000 方法一 : 分析每次都是先把最小的取出再取次小的数 所以以最右的的最小值为分界线 左边次小的次数为dis(初始时为1每循环一次加一),而右边的尾dis+1(需要循环一次才能取到),所以时间复杂度为O(ai) ac代码: #include<bits/stdc++.h> using namespace std; const int MAX...
0
点赞
评论
收藏
分享
2019-07-26 17:39
沈阳技师学院 算法工程师
CF Okabe and Boxes
题目描述 给你一个n; 以栈的方式乱序存入n个数 其中有两个操作 add x 压入一个x元素; remove 出栈 保证 会压入n 个元素并且会将n个元素弹出 现在需要你按小到大的元素弹出来 当发现不满足条件时你能改变栈的顺序 问你最少需要排多少次才能从小到大弹出; 1 ≤ n ≤ 3·10^5 分析:问题要我们回答次数 所以并不用真正去排它(并且也会超时) 所以只需要记录前多少我排了,当到这里时直接出栈就好; #include<bits/stdc++.h> u...
0
点赞
评论
收藏
分享
2019-07-25 19:36
沈阳技师学院 算法工程师
CF Tolik and His Uncle
题目描述; 给你一个n*m的坐标方格,每次可以取一个向量(x1,y1)走,也就是每次可以走到(x+x1,y+y1)点,且每次不能去同一个向量; 问是否能走完途中的每一个点 不能输出 “-1” 能 按顺序输出每次走的位置; 1≤n⋅m≤10^6 先分析一维直线时,每次走对称的点向量值不同,由此可推得二维时每次走中心对称点向量值也不同,遍历下来复杂度就是O(n*m),(可以从题目看出时间复杂度来确定用某个算法) #include<iostream> #include<math.h> #include<stdio.h> using nam...
0
点赞
评论
收藏
分享
2019-07-28 13:21
已编辑
沈阳技师学院 算法工程师
向上,向下,四舍五入,向0
ceil函数的作用是朝正无穷方向取整,即将m/n的结果向正无穷方向取整,如m/n=3.12,则ceil(m/n)的结果为4。 fix:朝零方向取整,如fix(-1.3)=-1; fix(1.3)=1; floor:朝负无穷方向取整,如floor(-1.3)=-2; floor(1.3)=1; round:四舍五入到最近的整数,如round(-1.3)=-1;round(-1.52)=-2;round(1.3)=1;round(1.52)=2。 返回double类型
0
点赞
评论
收藏
分享
2019-07-25 13:24
沈阳技师学院 算法工程师
模拟题
题目描述: 给你一些不同页数的数并且其中有待删除的数, 每次能删除该页的要删除的数并且该页删除完毕后 ,后面的值可以向前靠,问需要删几次; (1≤n≤10^18, 1≤m≤10^5, 1≤m,k≤n) (k表示一页有多少个数,m表示要删除数的个数) 这里注意下周期问题 也就是(n-1)/k 比较是否在同一个周期内; ac代码 #include<bits/stdc++.h> using namespace std; const int mod=1e6+3; long long a[10000...
0
点赞
评论
收藏
分享
2019-08-02 16:51
已编辑
沈阳技师学院 算法工程师
dp+离散化
https://ac.nowcoder.com/acm/contest/997/F 题目大意:给定n个数a[0],a[1],,,,a[n-1] 现在你要把它变成一个单调的数列 并应此作出修改 value=(a[i]-b[i]),(b[i]是修改后的数) 问value 总和最小是多少 1 ≤ N ≤ 2,000,0 ≤ a[i] ≤ 1,000,000,000; 分析:状态转移方程 dp[i][j]=abs(a[i]-j)+min(dp[i-1][k]); 其中k<=j; j表示修改后的值 ; 初始...
0
点赞
评论
收藏
分享
2019-07-24 18:40
沈阳技师学院 算法工程师
排序(变值)
题目描述 大概描述 由1,2,3构成一个乱序序列 每次可以改变里面的数字使得它最后变成递增或递减的样子 问最少改变多少个数字 1<n<30000 解题思路: 对于已经连续的就不用改 所以问题转化为求最大的递增或递减数; AC代码: #include<iostream> usingnamespacestd; intn,i,j,a,x,y,u[4]={0,0,0,0},d[4]={0,0,0,0},z=0; intmain(){ &n...
0
点赞
评论
收藏
分享
2019-07-23 18:27
沈阳技师学院 算法工程师
CF Add on a Tree (思维题)
题目描述: 输入n表示有n个节点1,2,3.,,,n ,然后输入n-1行每行两个数表示两节点间的边 每次挑选两个叶子i,j.从i->j 且不会重复走过的点,并给走过的边赋值, 问是否所有边都可以随意赋值(不互相制约) ac代码: 如果一个点的度数只有2 那么相邻两条边必定互相制约 #include<bits/stdc++.h> using namespace std; int main(){ int map1[100009]; int n; c...
0
点赞
评论
收藏
分享
2019-07-23 15:13
沈阳技师学院 算法工程师
判断是不是2的次幂
(n > 0 && ((n & (n - 1)) == 0)
0
点赞
评论
收藏
分享
2019-07-23 14:48
已编辑
沈阳技师学院 算法工程师
A题双端对列
题目描述: 给定n个数 a[0],[1],,,,a[n-1] 每次把前两个取出来 然后大的放前面,小的放后面 有m次询问 每次问第i次操作时取出来的是多少 解题思路: 很容易推出来 当取到最大值a[index]时后面的就是一个循环 所以分两种情况 第一种i<=index,第二种I>index;(循环可能涉及到初始位置怎么设的问题,可以代个起点); 可以用双端队列模拟一遍 求出基础数组 (也可以数组模拟但麻烦) ac代码: #include<b...
0
点赞
评论
收藏
分享
2019-07-23 14:47
已编辑
沈阳技师学院 算法工程师
B. Nick and Array
题目大意: 给你n个数 a[1],[2],,,,,a[i] 每个数支持进行一次a[i]=-a[i]-1 问如何使乘积最大 输出操作后的n个数; 1≤n≤105 −106≤ai≤106 分析只要a[i]>=0 那么进行一次操作后总成积必定变大 ,而正负号只需要最后改变其中最大的值 (而且注意到逆向 操作一样) ac代码: #include<bits/stdc++.h> using namespace std; const int INF=0x3f3f3f3f; int main(){ int n; scanf(&quo...
0
点赞
评论
收藏
分享
2019-07-27 09:46
已编辑
沈阳技师学院 算法工程师
加速cin
具体是: C++为了让cin cout和scanf printf 同时使用时不产生混乱,所以c++用一个缓冲区来同步c的标准流, 而std::ios::sync_with_stdio(false)可以关闭这一个同步,让cin和cout不经过缓冲区; tie()函数是把两个stream绑定到一起,flush()是把缓冲区的数据输出到文件,而cin和cout是默认绑定在一起的, 每次使用都会调用flush(), 而cin.tie(nullptr)可以解除这个绑定; cin和cout默认绑定在一起,是为了防止cin出现在cout之前,在绑定后, 每次cin都会先把缓冲区的数据刷新到输出...
0
点赞
评论
收藏
分享
1
3
4
5
6
7
8
创作者周榜
更多
关注他的用户也关注了:
牛客网
牛客企业服务