大奖赛+秘密信息
来源:互联网 发布:网络礼仪资料 编辑:程序博客网 时间:2024/06/16 18:15
30爆搜,60 01背包,100折半搜索。
01背包
dp[j]表示在j钱下最多有多少种方案。
dp[j]+=dp[j-a[i]]
01背包要倒推,否则会导致状态的混乱。
#include <cstdio>#include <iostream>#define ll long longusing namespace std;ll a[50];ll dp[11000];int main(){ ll n,k; scanf("%lld%lld",&n,&k); for(int i=1;i<=n;i++) scanf("%lld",a+i); dp[0]=1; for(int i=1;i<=n;i++) for(int j=k;j>=a[i];j--) dp[j]+=dp[j-a[i]]; ll ans=0; for(int i=0;i<=k;i++) ans+=dp[i]; printf("%lld",ans);}
折半搜索
#include <cstdio>#include <iostream>#include <algorithm> #define ll long longusing namespace std;ll a[50],b[50]; ll n,k,t,w;ll f[9999999],cnt,ans;void dfs1(ll x,ll c){ if(c>k) return; if(x==t+1) { f[++cnt]=c; return; } dfs1(x+1,c+a[x]),dfs1(x+1,c);}void dfs2(ll x,ll c){ if(c>k) return; if(x==w+1) { ll q=upper_bound(f+1,f+cnt+1,k-c)-f-1;//不能用lower_bound(=可以成立) //if(q!=cnt+1) ans+=q; return; } dfs2(x+1,c); dfs2(x+1,c+b[x]);}int main(){ scanf("%lld%lld",&n,&k); t=n/2; w=n-t; for(int i=1;i<=t;i++) scanf("%lld",&a[i]); for(int i=1;i<=w;i++) scanf("%lld",&b[i]); dfs1(1,0); sort(f+1,f+cnt+1); dfs2(1,0); printf("%lld",ans);}
50做法
没有相同字母
把字母排序,然后跟本来的序列 一 一 对应起来
.P
EH
H.
LE
PL
应该先输出最后一个是 .
. ->P->L->E->H
相同的
如果一个开头的 A 在所有开头的 K 中排名
第 K,那么它在所有结尾的 A 中也排在第 K 位。
通过这个性质给字母编号,搞个链表即可。
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;int tax[27],a[999999];int bh[999999];char s1[999999];int f[99999];int c[999999];int main(){ scanf("%s",s1); int len=strlen(s1); for(int i=0;i<len;i++) if(s1[i]>='A') a[i]=s1[i]-'A'+1; else a[i]=0; for(int i=0;i<len;i++) ++tax[a[i]];//编号 for(int i=1;i<=26;i++) tax[i]+=tax[i-1];//编号不重叠 for(int i=len-1;i>=0;i--) bh[i]=--tax[a[i]];//倒着搞 for(int i=0;i<len;i++) f[bh[i]]=i;//对应的位置 for(int i=1,t=f[0];i<=len;i++) c[i]=t,t=f[t];//建立链表 for(int i=1;i<len;i++) printf("%c",a[f[c[i]]]+'A'-1); printf("."); /*for(int i=1;i<=strlen(s1+1);i++) printf("%c",s2[i]);*/}
阅读全文
0 0
- 大奖赛+秘密信息
- 秘密信息
- 大奖赛
- NOIP 模拟题 秘密信息
- [Usaco2008 Dec]Secret Message 秘密信息
- BZOJ1590: [Usaco2008 Dec]Secret Message 秘密信息
- 《秘密》
- 秘密
- -秘密-
- 秘密
- 歌星大奖赛
- 歌星大奖赛
- 大奖赛计分
- 大奖赛计分
- 大奖赛计分。
- 大奖赛积分
- 大奖赛计分
- 大奖赛计分
- Qt 学习 第5节 Qt之创建并使用共享库
- 树莓派 FFmpeg 支持GPU硬解码
- 局域网内两台电脑ping不通
- 演讲PPT:用Kubernetes实现Fabric区块链即服务的实践
- Java集合框架面试问题集锦
- 大奖赛+秘密信息
- matlab里svd(Y,'econ')
- apktool 在mac下的使用 -反编译安卓apk文件
- Windows下SVN服务器迁移
- 《机器学习》第一章
- Linux学习:简单字符设备驱动
- VUE开源项目库汇总
- 剖析 epoll ET/LT 触发方式的性能差异误解(定性分析)
- Django 模板内地址配置