博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2015 Multi-University Training Contest 6 Solutions
阅读量:6193 次
发布时间:2019-06-21

本文共 1201 字,大约阅读时间需要 4 分钟。

hot3.png

先放上官方答案,完整版请戳: http://bestcoder.hdu.edu.cn/blog/

-------------------------大家好我是分割线----------------------

Summary

For a given set {1, 2, . . . , nn}, you are to find the number of nonempty subsets with even sum.

Solution

Let aa be the number of even integers and bb be the number of even integers. The answer is:

2^{a}(\begin{pmatrix}b\0 \end{pmatrix}+\begin{pmatrix}b\2 \end{pmatrix}+2a((b0)+(b2)+)=2^{a+b-1}=2^{n-1}-1)=2a+b1=2n11

Time complexity: O(log\ n)O(log n)

----------------------大家好我是分割线------------------------

    作为一支酱油队,我们不负众望的只做出了水题(1011)。下面附上代码:

#include 
#include 
#define NUM 1000000007using namespace std;long long d[10000000];long long def(int n){    if(n<10000000)    {        return d[n];    }    return (def(n/2)*def(n-n/2))%NUM;}int main(){    long long n;    int t;    d[0]=1;    for(int i=1;i<10000000;i++)    {        d[i]=(d[i-1]*2)%NUM;    }    scanf("%d",&t);    while(t--)    {        scanf("%lld",&n);        long long ans = def(n-1)-1;        printf("%lld\n",ans);    }    return 0;}

    我们做着做着,突然发现如何快速得到2的n次方似乎是个问题,又不能开出10^9大小的数组,所以干脆开了个10^8大小的数组保存2^i,当所给的n大于10^8时,二分即可。递归树只有5层,速度还是很快的。

转载于:https://my.oschina.net/bgbfbsdchenzheng/blog/488815

你可能感兴趣的文章
07 numpy 一元函数
查看>>
基于树莓派的桌上足球计分器
查看>>
【52ABP实战教程】0.1-- Devops如何用VSTS持续集成到Github仓库!
查看>>
JavaCV cvEstimateRigidTransform函数使用心得
查看>>
逻辑回归最小二乘推导
查看>>
opencv提取保存轮廓图
查看>>
Android学习之ViewPager(一)——ViewPager的简单使用
查看>>
再谈GC3:GC调优思路与常用工具
查看>>
阿里云搬家用。
查看>>
Android 开发之布局细节对比:Gravity相关
查看>>
Jenkins+Kubernetes CI/CD
查看>>
Android M Launcher3主流程源码浅析
查看>>
c语言:输入两个正整数 求最大公约数和最小公倍数
查看>>
针对“码农”的营销基础课
查看>>
MyExcel 2.1.3 发布,提供行级读取处理能力
查看>>
算法与数据结构(七) 图论
查看>>
【趣解编程】条件语句if
查看>>
95后博士入职达摩院,14岁上大学,成阿里史上最年轻科学家
查看>>
JPress v2.0-rc.4 发布,修复插件安装卸载的若干问题
查看>>
区块链技术开发 谈谈区块链应用的几大优势
查看>>