20160930的考试,noip模拟】SPFA,LIS,状压dp
来源:互联网 发布:linux tar压缩文件 编辑:程序博客网 时间:2024/06/11 19:03
#在全场ak的情况下80是怎样的体验#
钦定noip退役了QAQ
好嘛……其实是这样的……想着反正考三个小时不急不急,于是看着t3是状压就手敲dfs玩……敲完发现只剩两个小时了GG
啊……T1反正是个SPFA,然而没睡醒于是距离公式推错了……y=floor((19/20)*x),要使y成立的最小x=ceil(y*(20/19))……GG,自信了啊QAQ…………0’
T2……大意是给出一个1..n的排列,给每个逆序对连上无向边,求最大独立集…………yy一会儿之后发现就是求LIS(画一画搞一搞思考思考就好了)……关于为什么挂了……我……最后五分钟敲T2,忽然忘记了LIS怎么写……竟然手贱扔了个set上去……果断被卡掉了20’……我一定是脑残了23333
T3……一看数据范围就是个状压dp……然后…………我……手贱写dfs玩…………最后以赶稿的手速敲了dp……果然写错了……GG……爆零滚粗
代码……贴上吧
T1:
#include<bits/stdc++.h>#define MAXN 60#define MXX 150#define INF 0x3f3f3f3fusing namespace std;int n;struct t1{int to,nxt;}edge[MAXN*MAXN];int cnt_edge=0;int fst[MAXN];void addedge(int x,int y){edge[++cnt_edge].to=y;edge[cnt_edge].nxt=fst[x];fst[x]=cnt_edge;}int in_que[MAXN];int que[MXX],head,tail;int dis[MAXN];void SPFA(int v,int now){memset(dis,INF,sizeof dis);memset(in_que,0,sizeof in_que);head=tail=0;que[tail++]=now;dis[now]=v;while(head^tail){now=que[head++];if(head==MXX)head=0;for(int tmp=fst[now];tmp;tmp=edge[tmp].nxt){int aim=edge[tmp].to;if(now>=32){if(dis[aim]>dis[now]+1){dis[aim]=dis[now]+1;if(!in_que[aim]){que[tail++]=aim;if(tail==MXX)tail=0;}}}else{int kk=ceil(1.0*dis[now]/19);int tt=kk+dis[now];if(dis[aim]>tt){dis[aim]=tt;if(!in_que[aim]){que[tail++]=aim;if(tail==MXX)tail=0;}}}}}}char read_s1[10],read_s2[10];int read_x;int main(){freopen("toll.in","r",stdin);freopen("toll.out","w",stdout);int kase=0;if(!(~scanf("%d",&n)))return 0;while(~n){memset(edge,0,sizeof edge);memset(fst,0,sizeof fst);cnt_edge=0;++kase;for(int i=1;i<=n;++i){scanf("%s%s",read_s1,read_s2);addedge(read_s1[0]-'A',read_s2[0]-'A');addedge(read_s2[0]-'A',read_s1[0]-'A');}scanf("%d%s%s",&read_x,read_s1,read_s2);SPFA(read_x,read_s2[0]-'A');printf("Case %d: %d\n",kase,dis[read_s1[0]-'A']);if(!(~scanf("%d",&n)))return 0;}return 0;}
T2:
#include<bits/stdc++.h>#define MAXN 100005using namespace std;int n;int a[MAXN];int rec[MAXN];int ans=0;int main(){freopen("sort.in","r",stdin);freopen("sort.out","w",stdout);scanf("%d",&n);for(int i=1;i<=n;++i)scanf("%d",a+i);for(int i=1;i<=n;++i){if(a[i]>rec[ans])rec[++ans]=a[i];else rec[lower_bound(rec+1,rec+ans+1,a[i])-rec]=a[i];}printf("%d",ans);return 0;}
T3:
#include<bits/stdc++.h>#define MAXN 14using namespace std;int n;int ans=0;struct t1{int gl,rl,gk,rk,wk;}rec[MAXN];int rest_max=0;int rrr,ggg,www;int max_red;void read(){scanf("%d",&n);for(int i=0;i<n;++i)scanf("%d",&rec[i].rl);for(int i=0;i<n;++i)scanf("%d",&rec[i].gl);for(int i=0;i<n;++i)scanf("%d",&rec[i].rk),max_red+=rec[i].rk;for(int i=0;i<n;++i)scanf("%d",&rec[i].gk);for(int i=0;i<n;++i)scanf("%d",&rec[i].wk);scanf("%d%d%d",&rrr,&ggg,&www),max_red+=rrr;ans=rrr+ggg+www;}int f[1<<MAXN][150];int reach[1<<MAXN][150];int s[1<<MAXN];int main(){freopen("room.in","r",stdin);//freopen("room.out","w",stdout);read();for(int i=0;i<(1<<n);++i){s[i]=ans;for(int j=0;j<n;++j)if((1<<j)&i)s[i]+=rec[j].rk+rec[j].gk+rec[j].wk-rec[j].rl-rec[j].gl;}f[0][rrr]=www;reach[0][rrr]=1;for(int i=0;i<(1<<n);++i){for(int j=0;j<=max_red;++j){if(!reach[i][j])continue;ans=max(ans,s[i]);int nr=j,ng=s[i]-f[i][j]-j,nw=f[i][j];for(int k=0;k<n;++k){if(!(i&(1<<k))){int ss=i^(1<<k);int r_=nr,g_=ng,w_=nw;if(r_>=rec[k].rl)r_-=rec[k].rl;else{if(r_+w_<rec[k].rl)continue;else{r_=0;w_-=rec[k].rl-r_;}}if(g_>=rec[k].gl)g_-=rec[k].gl;else{if(g_+w_<rec[k].gl)continue;else{g_=0;w_-=rec[k].gl-g_;}}r_+=rec[k].rk, g_+=rec[k].gk, w_+=rec[k].wk;reach[ss][r_]=1;f[ss][r_]=w_;}}}}//for(int i=0;i<(1<<n);++i)printf("%d\n",s[i]);printf("%d",ans);return 0;}
0 0
- 20160930的考试,noip模拟】SPFA,LIS,状压dp
- 【Noip模拟】【dp】【LIS】【矩阵快速幂】
- 11-1 noip模拟 第二题 SPFA+状压dp
- 20161024的考试】noip模拟,dp,区间中位数,值域分块
- NOIP模拟题 [SPFA][DP][栈结构]
- NOIP模拟题 2016.10.4 [Hash] [dp] [复杂状态spfa]
- [NOIP模拟][状压DP]乘积
- 【NOIP模拟题】【DP】【LIS】【中缀表达式】2016.11.15 第一题 小L的二叉树 题解
- [NOIP 模拟]P老师的旅行 Spfa+树状数组
- NOIP模拟题 2016.11.15 [LIS] [spfa] [同余最短路] [矩阵快速幂] [容斥原理] [数学]
- [NOIP模拟题][LIS][同余最短路][DP][矩阵快速幂][容斥原理]
- 【NOIP模拟题】[状压dp][线段树]
- #NOIP模拟赛#Cool子集(Dp + 状压)
- NOIP模拟:乘积(状压DP)
- [NOIP 模拟]潜水员 DP
- 【NOIp模拟】【dp】俄罗斯方块
- hzwer2015.9.13 NOIP模拟题 explo seq earth[DP][数论][二分][SPFA]
- NOIP模拟题[贪心][离散化][LIS]
- Oracle 11g Pivot函数实现行转列
- 模型和视图分离原则
- 圯桥三进履
- 仿知乎专题页
- ionic 项目文件下载总结
- 20160930的考试,noip模拟】SPFA,LIS,状压dp
- React Native 开发环境配置---ubuntu14 linux
- freemarker的使用
- 两个html之间进行传值
- 树转换为二叉树(转载自 成杰,大话数据结构)
- C/C++读入多行字符串string
- codeIgniter中发送邮件的调用方法
- 如何通过js读取xml文件的数据?
- org.apache.catalina.connector.RequestFacade cannot be cast to org.springframework.web.multipart.Mult