codeforces585D. Lizard Era: Beginning
来源:互联网 发布:北京行知实验小学 编辑:程序博客网 时间:2024/05/16 08:37
传送门:http://codeforces.com/problemset/problem/585/d
思路:中途相遇法
前一半暴力枚举,后一半暴力枚举,在hash表里查找是否有合法的方案即可,输出方案在hash表存一个3进制数即可
#include<cstdio>#include<cstring>#include<algorithm>const int maxn=30,mod=9999993,base=500000000,maxt=600010,inf=1e9;typedef long long ll;using namespace std;int n,m,ans,sta1,sta2,pow[maxn];struct data{int a,b,c;}p[maxn];struct hash{ int pre[maxt],now[mod+10],tot,val[maxt][3],sta[maxt]; void insert(int a,int b,int c,int st){ int x=(a-b+base)%mod; for (int y=now[x];y;y=pre[y]) if (val[y][0]==a&&val[y][1]==b&&val[y][2]==c) return; pre[++tot]=now[x],now[x]=tot,val[tot][0]=a,val[tot][1]=b,val[tot][2]=c,sta[tot]=st; } void query(int a,int b,int c,int st){ int x=(b-a+base)%mod,tmp=-inf*2,t1; for (int y=now[x];y;y=pre[y]) if (val[y][1]-val[y][2]==c-b) if (val[y][0]>tmp) tmp=val[y][0],t1=sta[y]; if (tmp+a>ans) ans=tmp+a,sta1=st,sta2=t1; }}T;void dfs(int k,int lim,int a,int b,int c,int code,int op){ if (k==lim+1){ if (!op) T.insert(a,b,c,code); else T.query(a,b,c,code); return; }dfs(k+1,lim,a+p[k].a,b+p[k].b,c,code*3,op); dfs(k+1,lim,a+p[k].a,b,c+p[k].c,code*3+1,op); dfs(k+1,lim,a,b+p[k].b,c+p[k].c,code*3+2,op);}int main(){ scanf("%d",&n),m=(n+1)>>1,ans=-inf; pow[0]=1;for (int i=1;i<=m+1;i++) pow[i]=pow[i-1]*3; for (int i=1;i<=n;i++) scanf("%d%d%d",&p[i].a,&p[i].b,&p[i].c); dfs(m+1,n,0,0,0,0,0),dfs(1,m,0,0,0,0,1); if (ans==-inf){puts("Impossible");} else{ for (int i=1;i<=m;i++){ int t=(sta1/pow[m-i])%3;if (t==0) puts("LM");if (t==1) puts("LW"); if (t==2) puts("MW"); } for (int i=m+1;i<=n;i++){ int t=(sta2/pow[n-i])%3; if (t==0) puts("LM");if (t==1) puts("LW"); if (t==2) puts("MW"); } } return 0;}
0 0
- codeforces585D. Lizard Era: Beginning
- Codeforces 585D Lizard Era: Beginning
- CodeForces 585D Lizard Era: Beginning
- [Codeforces 585D] Lizard Era: Beginning (折半枚举)
- beginning
- BEGINNING
- beginning
- Beginning
- Beginning
- Beginning
- $beginning
- Beginning
- beginning
- Beginning
- beginning
- Beginning~
- beginning
- Beginning
- QQ游戏百万人同时在线服务器架构实现
- HDU 3652
- The Cloud Security Ecosystem: Technical, Legal, Business and Management Issues
- 又见导弹拦截 nyoj 814
- 【已解决】Genymotion, “Unable to load VirtualBox engine”
- codeforces585D. Lizard Era: Beginning
- cf 18a Triangle
- iOS: 通过addChildViewController实现 Segment 下的 View 的切换
- 硬盘和显卡的访问与控制(一)——《x86汇编语言:从实模式到保护模式》读书笔记01
- 杭电-2639Bone Collector II
- ASCII排序 nyoj4
- 需求分析过程
- sql 存储过程 循环
- R12.1.3 应用克隆过程中autocfg脚本报错