打卡五月模拟题编程题(C++附前两题渣渣代码)

入场太慢,想起来的时候已经19:30了.
编程题写了前两道,发现第三题似乎是bfs裸题???
不要吐槽代码规范.
虽然第一题感觉用树状数组,第二题用dp也可以搞,但是我就是这么暴力.
1. 第一道就是一个容斥原理 (100%)
#include<bits/stdc++.h>
using namespace std;
using pii = pair<int, int>;
int mt[1005][1005]{0};
int dp[1005][1005]{0};
int main() {

    int n, m, x, y;
    memset(mt, 0, sizeof(mt));
    memset(dp, 0, sizeof(dp));
    cin >> n;
    while(n--) {
        cin >> x >> y;
        mt[x][y] = 1;
    }
    for(int i = 1; i <= 1000; ++i) {
        for(int j = 1; j <= 1000; ++j) {
            dp[i][j] += dp[i][j-1] + dp[i-1][j] - dp[i-1][j-1] + mt[i][j];
        }
    }
//    for(int i = 1; i < 4; ++i) {
//        for(int j = 1; j < 4; ++j) {
//            cout << mt[i][j] << " ";
//        }
//        cout << endl;
//    }
//    for(int i = 1; i < 4; ++i) {
//        for(int j = 1; j < 4; ++j) {
//            cout << dp[i][j] << " ";
//        }
//        cout << endl;
//    }
    cin >> m;
    int x1, y1, x2, y2;
    while(m--) {
        cin >> x1 >> y1 >> x2 >> y2;
        cout << dp[x2][y2] - dp[x2][y1-1] - dp[x1-1][y2] + dp[x1-1][y1-1] << endl;
    }
    return 0;
}
/*
4
1 1
2 2
3 3
1 3
4
1 1 2 2
1 1 3 3
2 2 3 3
1 2 2 3
*/

2. 第二道题用贪心(100%)
按照单价递减排序,相同单价,优先选择数量多的.
然后顺序买就可以了,需要考虑可能剩下n个人,但是>n张票更便宜的情况.
#include<bits/stdc++.h>
 using namespace std;
 using pii = pair<int, int>;
 int main() {
     int n, m, k;
     int x, y;
     vector<pii> vec;
     cin >> n >> m >> k;
     ++ n;
     vec.push_back(make_pair(1, k));
     while(m--) {
         cin >> x >> y;
         vec.push_back(make_pair(y, x));
     }
     sort(vec.begin(), vec.end(), [](pii& a, pii& b){
         double diff = a.second * 1.0 / a.first - b.second * 1.0 / b.first;
         if(fabs(diff) < 1e-4) return a.first > b.first;
         return diff < 0;
     });
     int ans = 0;
     int min_cnt = 1 << 30;
     for(auto v : vec) {
         while(n >= v.first) {
             n -= v.first;
             ans += v.second;
         }
         if(n < v.first) {
             min_cnt = min(min_cnt, ans + v.second);
         }
     }
     cout << min(min_cnt, ans) << endl;

 }
 /*
 2 2 5
 6 2
 13 3
 */
3. 应该就是bfs最短路径,然后取最短的那个路口对应的路径吧?不知道题目有没看错.
#笔试题目##春招#
全部评论
我java的模拟,老兄第三题是不是公园一堆入口找一个出口那个?
点赞 回复 分享
发布于 2019-05-15 21:18
6
点赞 回复 分享
发布于 2019-05-15 21:22
这三道题都比较简单啊
点赞 回复 分享
发布于 2019-05-15 21:25
用python写的,第一题,第二题同样思路,直接超时,直接换成了java,再也不用python了
点赞 回复 分享
发布于 2019-05-15 21:28

相关推荐

浪子陪都:简历最优秀的地方放到了后面,国奖,校级奖学金这些是最亮眼的。说明你跟同级别的学生不一样。 建议台灯这个,PCB布局布线这个词汇不专业,业内是PCB Layout,第二,单片机的板子一般不用考虑SI,PI 都是低速信号,只要遵循3W原则就好了。 单片机的项目太low了,技能这块,你要看一下BOSS直聘的招聘要求,按照别人的要求写,一些关键词可以增加你简历被检索到的概率。 主修课程不用写,这个没有人去关注的。
点赞 评论 收藏
分享
昨天 20:43
西北大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务