博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ3139/BZOJ1306 HNOI2013比赛/CQOI2009循环赛(搜索)
阅读量:4918 次
发布时间:2019-06-11

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

  搜索好难啊。

  1.对于每个分数集合记忆化。

  2.某人得分超过总分,剪枝。

  3.某人之后全赢也无法达到总分,剪枝。

  4.每有一场比赛分出胜负总分会多三分,而平局则会多两分。某人的分出胜负场次或平局场次超过该限制,剪枝。

  面向代码编程直到除了变量名几乎都一模一样还是T。最后发现记忆化判断某个状态是否已经搜过的时候,写成f.find(x)==f.end()而不是!f[x]会快几倍。果然一直都没有学会map。

#include
#include
#include
#include
#include
#include
#include
using namespace std;int read(){ int x=0,f=1;char c=getchar(); while (c<'0'||c>'9') { if (c=='-') f=-1;c=getchar();} while (c>='0'&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar(); return x*f;}#define P 1000000007#define N 11#define ll long longint n,s,a[N],b[N],lim1,lim2;map
f;ll dfs(int k,int p){ if (k==n) return 1; if (a[k]>3*(n-p+1)) return 0; if (p>n) { ll h=0; for (int i=k+1;i<=n;i++) b[i]=a[i];sort(b+k+1,b+n+1); for (int i=k+1;i<=n;i++) h=h*30+b[i]; if (f.find(h)==f.end()) f[h]=dfs(k+1,k+2); return f[h]; } else { ll sum=0; if (a[k]>=3&&lim1) {a[k]-=3;lim1--;sum+=dfs(k,p+1);lim1++;a[k]+=3;} if (a[k]>0&&a[p]>0&&lim2) {a[k]--,a[p]--;lim2--;sum+=dfs(k,p+1);lim2++;a[k]++,a[p]++;} if (a[p]>=3&&lim1) {a[p]-=3;lim1--;sum+=dfs(k,p+1);lim1++;a[p]+=3;} return sum; }}int main(){#ifndef ONLINE_JUDGE freopen("bzoj3139.in","r",stdin); freopen("bzoj3139.out","w",stdout); const char LL[]="%I64d\n";#else const char LL[]="%lld\n";#endif n=read(); for (int i=1;i<=n;i++) s+=a[i]=read(); sort(a+1,a+n+1);reverse(a+1,a+n+1); lim1=s-(n-1)*n,lim2=(s-3*(s-(n-1)*n))>>1; cout<

 

转载于:https://www.cnblogs.com/Gloid/p/9820692.html

你可能感兴趣的文章
Linux下安装jdk
查看>>
python 中关于descriptor的一些知识问题
查看>>
Golang的方法传递值应该注意的地方
查看>>
XMIND 是一款非常实用的商业思维导图(Mindmap)软件
查看>>
Intent 匹配规则
查看>>
windows 安装nvm步骤(shi'yongnvm-windows管理node版本):
查看>>
JdbcUtils
查看>>
「SCOI2014」方伯伯的玉米田 解题报告
查看>>
eclipse中web项目部署到本地tomcat中,但是在本地的tomcat的webapp下找不到发布的项目...
查看>>
使用PHP连接、操纵Memcached的原理和教程
查看>>
在网页中运用统计Web Service接口
查看>>
python入门(八):连接mysql和STMP
查看>>
将图片地址转为blob格式的例子
查看>>
Entity Framework In Action(1)——数据环境准备
查看>>
linux下重置mysql密码!
查看>>
AngularJS Best Practices: ng-include vs directive
查看>>
Kali Linux 2019.2使用华为源
查看>>
no.5.print sum
查看>>
ADF HOW TO: How to stop adf:Poll
查看>>
翻转拼图网页小游戏制作
查看>>