头像

gongcharlie




离线:1小时前


最近来访(94)
用户头像
Expelliarmus2011
用户头像
Zhangwy
用户头像
Mr.Lonely
用户头像
来感觉了
用户头像
冰凝
用户头像
SUPERDOGE
用户头像
鳕鱼饭
用户头像
Cccc
用户头像
骂完继续写
用户头像
Jun不见
用户头像
冰中月
用户头像
yqw2486
用户头像
WangJY
用户头像
zhengnengliang
用户头像
wakakaka
用户头像
牛神
用户头像
yxc
用户头像
rushhhhh
用户头像
sgr258093
用户头像
提子面包


class Solution {
public:
    int numWays(int s,int b) {
        int len=min(s/2,b-1)+1;
        vector<int> v1(len, 0);
        v1[0]=1;
        for(int i=1;i<=s;i++){
            vector<int> v2(len);
            for(int j=0;j<len;j++) {
                v2[j]=v1[j];
                if(j-1>=0)v2[j]=(0LL+v2[j]+v1[j-1])%1000000007;

                if(j+1<=len-1)v2[j]=(0LL+v2[j]+v1[j+1])%1000000007;
            }
            v1=move(v2);
        }
        return v1[0]%1000000007;
    }
};




class Solution {
public:
    vector<vector<string>> suggestedProducts(vector<string>& p, string s) {
        sort(p.begin(), p.end());
        int j=0,n=s.size();
        vector<vector<string>> ans(n);
        string str="";
        for (int i=0;i<n;i++) {
            int mark=-1;
            str+=s[i];
            while(j<p.size()) {
                if(p[j].substr(0,i+1)==str) {
                    if(mark==-1)mark=j;
                    ans[i].push_back(p[j]);
                    if (ans[i].size()==3)break;
                }
                j++;
            }
            if (mark!=-1) j=mark;
        }
        return ans;
    }
};



class Solution {
public:
    int countServers(vector<vector<int>>& grid) {
        int n=grid.size();
        int m=grid[0].size();
        int a[300],b[300];
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                if(grid[i][j]==1){
                    a[i]++;
                    b[j]++;
                }
            }
        }
        int ans=0;
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                if(grid[i][j]==1&&(a[i]>1||b[j]>1)){
                    ans++;
                }
            }
        }
        return ans;
    }
};



class Solution {
public:
    int minTimeToVisitAllPoints(vector<vector<int>>& a) {
        int n=a.size(),ans=0;
        for(int i=1;i<n;i++){
            ans+=max(abs(a[i][0]-a[i-1][0]),abs(a[i][1]-a[i-1][1]));
        }
        return ans;
    }
};



gongcharlie
8个月前

我的代码再调试的时候mle,提交的时候却又没事了,这是什么情况




gongcharlie
10个月前

题目链接 Linux 1.1. homework_0

qwq.PNG
我每次输入homework 1 text 都给我输出这东西。。
命令好像没毛病啊?



新鲜事 原文

gongcharlie
11个月前
15分钟一颗线段树纪


新鲜事 原文

gongcharlie
2021-05-29 08:10
再一次祝自己考试成功~



gongcharlie
2021-05-28 18:00

C++ 代码

#include<cstring>
#include<iostream>
#define N 108
using namespace std;
int n;
int path[N];//加成序列
bool dfs(int nowd,int maxd)//现在有多少个数了,数量上限
{
    if (nowd==maxd)return path[nowd-1]==n;//已经有上线个数了,看看最后一位是否合法
    bool st[N]={0};//排除等效冗余
    for (int i=nowd-1;i>=0;i--)
        for(int j=i;j>=0;j--)//枚举每一种可能
        {
            int s=path[i]+path[j];//取两数之和
            if (s>n||s<=path[nowd-1]||st[s])continue;//这两个数的和已经大于最大数,这个数比上一个数还要小,这个数已经遍历过了
            st[s]=true;
            int xx=path[nowd];
            path[nowd]=s;
            if (dfs(nowd+1,maxd))return true;//往下继续搜索,如果发现合法解就直接返回
            st[s]=false;
            path[nowd]=xx;
            //不需要回溯
        }
    return false;//没找到和法解
}

int main()
{
    path[0]=1;
    while(cin>>n&&n!=0){
        int k=1;
        while(dfs(1,k)==false)k++;//枚举上线
        for(int i=0;i<k;i++){
            cout<<path[i]<<" ";
        }
        cout<<endl;
    }
    return 0;
}


新鲜事 原文

gongcharlie
2021-05-28 10:33
祝自己明天北大附中考试顺利,拿到第一名