赞
踩
先开个数组arr用来存储各员工处理任务所花费的时长,然后再遍历数组arr,找出最大时长用变量zhong存储,再遍历找出等于最大时长的时间,返回logs[i][0]即可。
- class Solution {
- public:
- int hardestWorker(int n, vector<vector<int>>& logs) {
- int m = logs.size();
- vector<int>arr(m);
- int i;
- arr[0] = logs[0][1];
- for(int i = 1; i < m; i++){
- arr[i] = logs[i][1] - logs[i - 1][1];
- }
- int index = 0;
- int zhong = 0;
- for(int i = 0; i < m - 1; i++){
- index = max(arr[i], arr[i + 1]);
- if(index > zhong)zhong = index;
- }
- int miN = 10000;
- for(int i = 0; i < m; i++){
- if(zhong == arr[i])
- miN = min(miN, logs[i][0]);
- }
- return miN;
- }
- };
先将pref[0]赋值给arr[0],从i = 1开始,arr[i] = pref[i - 1] ^ pref[i],返回arr即可;
- class Solution {
- public:
- vector<int> findArray(vector<int>& pref) {
- int n = pref.size();
- vector<int>arr(n);
- arr[0] = pref[0];
- for(int i = 1; i < n; i++){
- arr[i] = pref[i - 1] ^ pref[i];
- }
- return arr;
- }
- };
输出min(min(a, b), (a + b) / 3)即可
- #include<bits/stdc++.h>
-
- using namespace std;
-
- int main()
- {
- int T;
- cin >> T;
- while(T--)
- {
- int a, b, x;
- cin >> a >> b;
- x = (a + b) / 3;
- cout << min(min(a, b), x) << endl;
- }
- return 0;
- }
贪心,读入每个物体的压缩之前的体积和压缩之后的体积。用一个LL的数据记录总体积,一定要开longlong,然后根据压缩之后的体积跟压缩之前的体积的差值从大到小排序,按照这个次序去压缩,直到其他物品可以不压缩就能直接放进去,就输出计数,否则的话就输出-1;
- #include<iostream>
- #include<cstring>
- #include<algorithm>
-
- using namespace std;
-
- typedef long long LL;
- const int N = 1e5+10;
- int w[N];
- int n, m;
-
- int main(){
- cin >> n >> m;
- LL sum = 0;
- for(int i = 0; i < n; i++){
- int a, b;
- cin >> a >> b;
- sum += a;
- w[i] = a-b ;
- }
- sort(w, w + n, greater<int>());
- if(sum <= m)cout << 0;
- else{
- for(int i = 0;i<n;i++){
- sum -= w[i];
- if(sum <= m){
- cout << i + 1;
- return 0;
- }
- }
- cout << -1;
- }
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。