IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 牛客挑战赛53 题解(A+B+C) -> 正文阅读

[数据结构与算法]牛客挑战赛53 题解(A+B+C)

???????https://ac.nowcoder.com/acm/contest/11193#description???????

智乃哥哥的小迷题A:

最理想的是

1?=1

1+2=3

1+2+3=6

1+2+3+4=10

1+2+3+4+5=15

那么要凑10 直接就是4了

那如果凑11 12呢

我们可以15-1-1-1-1 当然不是最优解

我们只需要-4即可

我们可以

1+2-1+4+5=11 凑-4

那么凑-3呢只需要 1-1+3+4+5=12

但是要凑-1呢

我们只能才最后的位置-1即可

我们要求n*(n+1)/2==x的 n 可以拿二分来找

int main(){
    int t;
    cin>>t;
    while (t--) {
        int x;
        cin >> x;
        ll l = 0;
        ll r = 1e8;
        while(l < r){
            ll mid = l + r >> 1;
            if (mid * (mid + 1) / 2 >= x) r = mid;
            //check()判断mid是否满足性质
            else l = mid + 1;
            }
            ll z = l * (l + 1) / 2 - x;
            if(z == 1)
                l++;
        cout << l << endl;
    }
}

简单的序列:

这道题刚开始拿贪心去找了 根本不知道哥德巴赫猜想

原代码?(错误的)

int main(){
    int t;
    int k=e_cheak(MAX);
    cin>>t;
    while (t--) {
        ll s;
        cin>>s;
        ll ss=s;

        vector<ll>v;
        v.clear();
        if(!vis[s]) cout<<1<<endl,cout<<s<<" = "<<s;
        else if(s==0) cout<<1<<endl,cout<<0<<" = "<<0;
        else {
            while (s!=0) {
                ll x=s;
                while (vis[x]) {
                    x--;
                }
                v.push_back(x);
                s-=x;
            }
            cout<<v.size()<<endl;
            for(int i=v.size()-1;i>=1;i--){
                cout<<v[i]<<" + ";
            }
            cout<<v[0]<<" = "<<ss<<endl;
        }
    }
}

正确(哥德巴赫猜想)

const int N=1e7+10;
const long long mx=1e7;
int T,p[N],cnt,n,ans1[N],ans2[N];
bool vis[N];
inline void check(int x){
    for(int i=1;i<=cnt;i++)
    if(!vis[x-p[i]]){
        printf("%d + %d ",p[i],x-p[i]);
        return;
    }
}
int main(){
    for(ll i=2;i<=mx;i++){
        if(!vis[i]){
            for(ll j=i*i;j<=mx;j+=i)vis[j]=1;
            p[++cnt]=i;
        }
    }
    cin>>T;
    while(T--){
        cin>>n;
        if(n==0||n==1||!vis[n]){
            printf("1\n%d = %d\n",n,n);
            continue;
        }
        if(n%2==0)printf("2\n"),check(n),printf("= %d\n",n);
        else{
            if(!vis[n-2])printf("2\n%d + %d = %d\n",2,n-2,n);
            else printf("3\n"),check(n-1),printf("+ 1 = %d\n",n);
        }
    }
}

奇奇怪怪的魔法阵

直接拿状压dp来枚举情况即可

const int N=26;
int dp[1<<N];
int ys[1<<N];
int t[1<<N];
const int mod=1e9+7;
int res=0;
int main()
{
    int n;
    cin>>n;
    int m;
    cin>>m;
    for(int i=0;i<n;i++) t[i]=(1<<i);
    while(m--){
        int a,b;
        cin>>a>>b;
        t[a]|=(1<<b);
        t[b]|=(1<<a);
    }
    dp[0]=1;
    for(int i=0;i<n;i++)
        ys[1<<i]=i;
    for(int i=1;i<1<<n;i++){
        int id=ys[i&(-i)];
        dp[i]=dp[i^(1<<id)]+dp[i^(i&t[id])];
        if(dp[i]>=mod)
        dp[i]-=mod;
    }
    int res=0;
//  for(int i=0;i<1<<n;i++){
//      cout<<dp[i]<<" ";
//  }
//  cout<<endl;
    for(int i=(1<<n)-1;i>=0;i--){
        res=(res*1ll*233+dp[i])%mod;
    }
    cout<<res;
}

?其他的没做 有时间补题吧!!!

弱鸡!

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-10-16 19:53:24  更:2021-10-16 19:53:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:49:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码