腾讯笔试0901,代码实现+思路(c++)

第一题,水题
#include<iostream>
#include<algorithm>
#include<cstdio>
int n,m;
int cnt11,cnt12,cnt21,cnt22;
int num1[111111],num2[111111];
using namespace std;

int main()
{
    scanf("%d %d",&n,&m);
    for(int i=0;i<n;i++)
    {
        scanf("%d",&num1[i]);
        if(num1[i]&1)
            cnt11++;
        else
            cnt12++;
    }
    for(int i=0;i<m;i++)
    {
        scanf("%d",&num2[i]);
        if(num2[i]&1)
            cnt21++;
        else
            cnt22++;
    }
    int ans=min(cnt11,cnt22)+min(cnt12,cnt21);
    printf("%d\n",ans);
}

第二题,简单的贪心策略
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
int n;
struct person
{
    int a,b;
}num[111111];
bool cmp(person a,person b)
{
    return a.b+b.a<a.a+b.b;
}

int main()
{
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    {
        scanf("%d %d",&num[i].a,&num[i].b);
    }
    sort(num,num+n,cmp);
    long long ans=0;
    for(int i=0;i<n;i++)
    {
        ans+=(long long)i*num[i].a;
        ans+=(long long)num[i].b*(n-1-i);
    }
    cout<<ans<<endl;
}

第三题,没有做出来,gg
第四题,一个简单的单调栈模板题
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<stack>
using namespace std;
int n;
int w[111111];
int res[111111];
struct range
{
    int l,r;
}temp[111111];
stack<int> sk;
long long sum[111111];
long long ans;
int main()
{
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    {
        scanf("%d",&w[i]);
        if(i==0)
            sum[i]=w[i];
        else
            sum[i]=sum[i-1]+w[i];
        temp[i].l=temp[i].r=i;
		while(!sk.empty()&&w[sk.top()]>w[i])
        {
            temp[sk.top()].r=i-1;
            temp[i].l=temp[sk.top()].l;
            sk.pop();
        }
        sk.push(i);
    }
    int temp1;

    if(!sk.empty())
        temp1=sk.top();
    while(!sk.empty())
    {
        temp[sk.top()].r=temp1;
        sk.pop();
    }
    ans=0;
	for(int i=0;i<n;i++)
    {
        ans=max(ans,(long long)w[i]*(sum[temp[i].r]-sum[temp[i].l-1]));
    }
    cout<<ans<<endl;
	return 0;
}


第五题,简单的动态规划
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<stack>
using namespace std;
int t,k;
int l,r;
int mod=1000000007;
long long dp[111111][2];
long long sum[111111];
int main()
{
    scanf("%d %d",&t,&k);
    dp[0][0]=1;
    for(int i=0;i<k;i++)
    {
        dp[i+1][0]=dp[i][0];
        dp[i+1][0]%=mod;
        dp[i+k][1]+=dp[i][0];
        dp[i+k][1]%=mod;
    }
    for(int i=k;i<=100000;i++)
    {
        dp[i+1][0]+=dp[i][0];
        dp[i+k][1]+=dp[i][0];
        dp[i+1][0]+=dp[i][1];
        dp[i+k][1]+=dp[i][1];
        dp[i+1][0]%=mod;
        dp[i+k][1]%=mod;
    }
    sum[0]=0;
    for(int i=1;i<=100000;i++)
    {
        sum[i]=sum[i-1]+dp[i][0]+dp[i][1];
        sum[i]%=mod;
    }
    while(t--)
    {
        scanf("%d %d",&l,&r);
        long long ans=sum[r]-sum[l-1];
        if(ans<0)
            ans+=mod;
        printf("%lld\n",ans);
    }
	return 0;
}


先这样,晚些更新详细思路
#腾讯##笔试题目##C++工程师#
全部评论
大佬。。。都是简单xxx
点赞 回复 分享
发布于 2019-09-01 22:07
tql 
点赞 回复 分享
发布于 2019-09-02 10:12
诶,感觉自己好菜…… 暑假里刷算法题,感觉笔试不是板子题都会凉……
点赞 回复 分享
发布于 2019-09-01 22:21
第一题也是这样做的,只通过了10%
点赞 回复 分享
发布于 2019-09-01 22:13
int n; while(cin >> n){     vector<int> ws(n);     for(int i = 0; i < n; i++)         cin>>ws[i];     vector<long> wsum(n);     wsum[0] = ws[0];     for(int i = 1; i < n; i++)         wsum[i] = wsum[i - 1] + ws[i];     vector<int> sv(1,0);     long maxx = 0;      int index = 1;     while(index < n || (index == n && (int)sv.size() > 0)){         if(index < n && ((int)sv.size() == 0 || ws[index] >= ws[sv.back()])){             sv.push_back(index);             index++;         }else{             int mn = ws[sv.back()];             sv.pop_back();             long curSum = 0;              if((int)sv.size() > 0){                 curSum = wsum[index - 1] - wsum[sv.back()];             }else curSum = wsum[index - 1];             curSum = mn * curSum;             maxx = max(maxx, curSum);         }     }      cout << maxx << endl; } 老哥,给你补上第四道🤣
点赞 回复 分享
发布于 2019-09-01 22:11
大佬,我第五道脑壳都想爆了
点赞 回复 分享
发布于 2019-09-01 22:09
和我一样
点赞 回复 分享
发布于 2019-09-01 22:09
这个真强
点赞 回复 分享
发布于 2019-09-01 22:08

相关推荐

点赞 评论 收藏
分享
评论
4
50
分享

创作者周榜

更多
牛客网
牛客企业服务