恒生电子笔试 杭州 c++岗
简单题目没有AC,数据库不会,pdf了
数据库——非常长的一道题。由于楼主非科班+刚开始学数据库,只写了LEETCODE上热门50 的30题,根本cover不住
c++ 第一题,给定若干个点,求解最长斜率 连续递增序列。AC
第二题,给若干个坐标(x,y) 和对应的电量s作为初始状态,以及一个全局的阈值c 规定 每秒s自增一次,如果s==c+1则自动归零。
输入若干个t,x1,y1,x2,y2
求解t时刻由x1,y1 x2,y2围的矩形内的电池电量总和。其中x y的范围是1-100。
但是不知道为什么只过了20%的用例。
后来问deepseek,他说可能每一个x,y会对应好多个小电池。。。。额。有可能是这个原因,不然只过了20%说不过去啊。
把代码贴一下,大家发现问题欢迎提示我。
#include <iostream> #include <map> #include <vector> using namespace std; int main() { int n,q,c; cin>>n>>q>>c; vector<int>x,y,s; vector<vector<int>>map_data(101,vector<int>(101,-1)); for(int i=0;i<n;i++) { int xx,yy,ss; cin>>xx>>yy>>ss; map_data[xx][yy]=ss; } vector<int>res; for(int i=0;i<q;i++) { int x1,y1,x2,y2,t; cin>>t>>x1>>y1>>x2>>y2; int sum_this = 0; for(int xxx=x1;xxx<=x2;xxx++) for(int yyy=y1;yyy<=y2;yyy++) { if(map_data[xxx][yyy]==-1)continue; sum_this += (map_data[xxx][yyy] + t) % (c+1); } res.push_back(sum_this); } for(int i:res) cout<<i<<endl; return 0; } // 64 位输出请用 printf("%lld")
坏了,这次笔试看来要凉凉了。有点小难过。