【Codeforces #130 Div2】Solutions

【208A  Dubstep】

  http://codeforces.ru/problemset/problem/208/A

  题目大意:一个句子被添加了若干“WUB”,问原句。

  将WUB去掉就行了,在句首或句尾直接删除,在句中替换成空格,注意多个“WUB”相连时特判。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
using namespace std;char s[3000];
int len;
bool exist;int main(){scanf("%s",&s);len=strlen(s);int i=0;while(true){if(s[i]=='W' && s[i+1]=='U' && s[i+2]=='B') i+=3;else break;}while(true){if(s[len-1]=='B' && s[len-2]=='U' && s[len-3]=='W') len-=3;else break;}while(i<len){if(s[i]=='W' && s[i+1]=='U' && s[i+2]=='B'){i+=3;if(!exist) printf(" ");exist=true;}else{cout<<s[i];i++;exist=false;}}cout<<endl;return 0;
}

 

【208B Solitaire】 

  http://codeforces.ru/problemset/problem/208/B

  题目大意:桌面上n堆牌,牌有数值和花色两个属性。一堆可以放到另一堆上当且仅当两堆牌最上面一张的牌面或花色相同。每次可以将最后一堆第x堆放到第x-1堆或x-3堆(如果存在),问是否存在策略使得所有牌合成一堆。

  由于n很小,容易想到搜索。但是O(2^n)显然难以令人接受。所以考虑对搜索过程记忆化。f[i][a][b][c]表示:当前处理第i堆,最后一堆是第a堆,倒数第二堆是第b堆,倒数第三堆是第c堆时,是否可以合成一堆,每次搜索后记录结果,避免重复搜索。

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;char card[52][2];
int n,f[53][53][53][53];bool check(char a[2], char b[2]){return a[0]==b[0] || a[1]==b[1];
}bool dfs(int cur,int a,int b,int c){bool res=false;if(cur==1) return true;if(f[cur][a][b][c]) return false;if(check(card[a],card[b]))res|=dfs(cur-1,a,c,cur-3);if(!res && cur-3 && check(card[a],card[cur-3]))res|=dfs(cur-1,b,c,a);return !(f[cur][a][b][c]=!res);
}int main(){scanf("%d",&n);memset(f,false,sizeof(f));for(int i=1;i<=n;i++)scanf("%s",&card[i]);if(dfs(n,n,n-1,n-2))printf("YES\n");else printf("NO\n");return 0;
}

  

【208C Police Station】

  http://codeforces.ru/problemset/problem/208/c

  题目大意:给定N个节点M条边的无向图,边权相同。在图中选一个点,使得从1到N的最短路上,含有被点覆盖的边的数量的平均值最大。(很别扭,还是看原题吧……)

  当时这个题很少有做的,可能是因为不好想。

  首先他要求最短路,其次还要求出最短路的数量,然后还要知道每个点分别在多少条最短路径上。

  最短路可以用Floyd来求,记为sp;数量可以用DP,f[i][j]表示从1出发走j步到达i的方案数,f[i][j]=Σf[u][j-1],u→i;最后求经过每个点有多少条最短路,可能让人感觉比较麻烦,其实也很简单的。用g[i][j]再统计一下从n出发的方案数,方程跟f[i][j]的一样,那么对于一点x,经过他的最短路条数num就是f[i][j]*g[i][sp-dist[i][j]]。此外还有一个问题就是,如果这个点选在2~N上,每个点将覆盖最短路上的两条边;而如果选在1或N上,只能覆盖最短路上的一条边。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <queue>
using namespace std;
template<class T>inline void gmax(T &a,T b){if(a<b)a=b;}int n,m,x,y,sp,dist[200],f[200][200],g[200][200],map[200][200],ans;
bool vis[200];
double res;struct EDGE{int pnt;EDGE *pre;EDGE(){}EDGE(int _pnt,EDGE *_pre):pnt(_pnt),pre(_pre){}
}Edge[20000],*SP=Edge,*edge[200];inline void addedge(int a,int b){edge[a]=new(++SP)EDGE(b,edge[a]);edge[b]=new(++SP)EDGE(a,edge[b]);
}		int main(){scanf("%d%d",&n,&m);for(int i=1;i<=m;i++){scanf("%d%d",&x,&y);addedge(x,y);map[x][y]=map[y][x]=1;}for(int k=1;k<=n;k++)for(int i=1;i<=n;i++)if(map[i][k])for(int j=1;j<=n;j++)if(map[k][j])if(!map[i][j] || map[i][j]>map[i][k]+map[k][j])map[i][j]=map[i][k]+map[k][j];sp=map[1][n];f[1][0]=1;for(int i=0;i<sp;i++)for(int j=1;j<=n;j++)for(EDGE *k=edge[j];k;k=k->pre)f[k->pnt][i+1]+=f[j][i];g[n][0]=1;for(int i=0;i<sp;i++)for(int j=1;j<=n;j++)for(EDGE *k=edge[j];k;k=k->pre)g[k->pnt][i+1]+=g[j][i];for(int i=2;i<n;i++)if(map[1][i]+map[i][n]==sp) gmax(ans,f[i][map[1][i]]*g[i][map[i][n]]);ans<<=1;gmax(ans,f[n][sp]);res=(double)ans/(double)f[n][sp];printf("%.12lf\n",res);return 0;
}

  

【204D Prizes,Prizes,more Prizes】

  http://codeforces.ru/problemset/problem/208/d

  题目大意:好像是吃什么东西,每吃一个就会得到多少积分(就像方便面里面兑换卡一样)。有五种奖品,需要积分abcde,主人公一包一包吃,攒到能兑换奖品就去兑换,并且先兑换价值最大的,问最后能兑到五种奖品各多少,还能剩下多少积分。

  这个题烂大街了,rating和第一题已经差不多了。

  就是把积分累加、累加、累加……低于最小奖品价值的时候就去兑奖,从高往低兑,能兑多少对多少。兑换的时候不能暴力模拟,会TLE。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
using namespace std;long long n,a[100],b[100],s[100],cur;long long exchange(long long x){for(int i=5;i>0;i--)b[i]+=x/a[i],x-=(x/a[i]*a[i]);return x;
}int main(){cin>>n;for(int i=1;i<=n;i++)cin>>s[i];cin>>a[1]>>a[2]>>a[3]>>a[4]>>a[5];cur=0;for(int i=1;i<=n;i++){cur+=s[i];if(cur>=a[1]) cur=exchange(cur);}for(int i=1;i<5;i++) cout<<b[i]<<" ";cout<<b[5]<<endl;cout<<cur<<endl;return 0;
}

  

【208E Blood Cousins】

  http://codeforces.ru/problemset/problem/208/e

  题目大意:给你若干颗树,若干个询问(x,y),回答在含有结点x的树中有多少结点z,使得x和z关于他们LCA的深度为y。

  。。。。。。srO kAc Orz。。。。。。

  kAc教的什么树套树、函数式线段树都不会写……只会写一个二分。

  首先用倍增法求LCA,然后求LCA下面深度为y的结点个数。

  对于统计这一步,可以用dfs序来搞。把时间戳按结点深度压一个vector,每次询问的时候,在与x同深度的时间戳序列里面二分,找到进入LCA子树与离开LCA子树的时间戳之间的节点个数,再减去x自己,就是答案。

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <vector>
#include <algorithm>
#define MN 100010
using namespace std;vector<int> pos[MN],t;
int n,m,x,y,deep[MN],l[MN],r[MN],idx,fa[MN][20];struct EDGE{int pnt;EDGE *pre;EDGE(){}EDGE(int _pnt,EDGE *_pre):pnt(_pnt),pre(_pre){}
}Edge[MN],*SP=Edge,*edge[MN];inline void addedge(int a,int b){edge[a]=new(++SP)EDGE(b,edge[a]);
}void dfs(int x,int dep){deep[x]=dep;pos[dep].push_back(idx);l[x]=idx++;for(EDGE *j=edge[x];j;j=j->pre)dfs(j->pnt,dep+1);r[x]=idx;
}int main(){scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&fa[i][0]);addedge(fa[i][0],i);}dfs(0,0);for(int j=1;j<17;j++)for(int i=1;i<=n;i++)fa[i][j]=fa[fa[i][j-1]][j-1];scanf("%d",&m);while(m--){scanf("%d%d",&x,&y);t=pos[deep[x]];for(int i=0;i<17;i++)if(y>>i&1) x=fa[x][i];printf("%d ",x?lower_bound(t.begin(),t.end(),r[x])-lower_bound(t.begin(),t.end(),l[x])-1:0);}return 0;
}

  

转载于:https://www.cnblogs.com/Delostik/archive/2012/07/24/2606914.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/422297.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务器此时无法接受控制信息,您无法修改域或信任信息,因为无法联系一个主域控制器(PDC)仿真器,请确认当前域的PDC仿真器和网络都联机并正常运行。...

问题补充&#xff1a;PS C:\Users\administrator.TF> netdom query fsmo架构主机 AD-server.tf.com域命名主机 AD-server.tf.comPDC AD-server.tf.comRID 池管理器 AD-server.tf.com结构主机 AD-server.tf.c…

VC++6.0如何创建与调用动态链接库(dll)

VC支持的DLL&#xff1a; DLL的编制与具体的编程语言及编译器无关&#xff0c;动态链接库随处可见&#xff0c;VC支持三种DLL&#xff1a;非MFC动态库、MFC规则DLL和MFC扩展DLL。DLL导出函数&#xff08;或变量、类&#xff09;可供应用程序调用&#xff1b;DLL内部函数只能在D…

谁在窥屏_TheShy直播被窥屏搞怕了,为了防止被窥屏,这个做法绝了

前言&#xff1a;英雄联盟LPL赛区已经发展了十年&#xff0c;请你大胆试想下&#xff0c;如果终有一天英雄联盟会被其他游戏所淹没替代&#xff0c;让你选出自己心目中最强的游戏玩家&#xff0c;你的脑海里首先浮现的是谁的身影呢&#xff1f;笔者的脑海里首先是TheShy。TheSh…

前端学习(516):两列布局的第三种解决方案

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>第三种实现方案</title><style>.parent…

如何在Linux下安装nginx

如何在Linux下安装nginx 1.http://nginx.org 下载对应平台的安装初始配置文件 2.yum install nginxposted on 2012-07-25 15:41 ericyuan 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/ericyuan/archive/2012/07/25/2608425.html

qchart 设置线颜色_实战PyQt5: 137-QChart图表之散点图

散点图(scatter chart)将序列显示为一组点。值由点在图表中的位置表示。类别由图表中的不同标记表示。散点图通常用于比较跨类别的聚合数据。在QChart中&#xff0c;使用类QScatterSeries创建散点图。QScatterSeriesQScatterSeries类在散点图中显示数据。散点数据在图表上显示为…

oracle19c xp安装 客户端_windows下安装oracle19c

目录&#xff1a;一. 官网下载oracle19c 以及客户端二.安装oracle19c1.解压安装压缩包在D盘新建文件夹oracle19c(注意&#xff1a;解压后的安装包不能为中文路径&#xff0c;且不要有空格这台特殊的&#xff0c;且数据库安装完成后安装包也不能删除。)。将WINDOWS.X64_193000_d…

调整latex表格_选择LaTeX还是Word的建议

如果对公式细节有很大的要求&#xff0c;比如公式字体、公式特殊格式&#xff08;透明&#xff0c;特殊文字&#xff09;有要求&#xff0c;只能用LaTeX&#xff0c;Word并不支持。还有一些及其专业的地方可能只有LaTeX能完成。有些大型期刊要求使用LaTeX模板那就只能服从要求了…

C#下如何实现服务器 + 客户端的聊天程序

最近也在接触SOCKET编程&#xff0c;在当今这样一个网络时代&#xff0c;很多技术都以网络为中心在诞生&#xff0c;至少我认为是这样的&#xff0c;而SOCKET套接字接口&#xff0c;在实现网络通讯上处于关键地位&#xff0c;所以不会SOCKET是不行的。首先&#xff0c;本文主要…

部署gogs_可以更快地查阅 Gogs 文档了!

# 可以更快地查阅 Gogs 文档了&#xff01;作为程序员&#xff0c;如何高效、准确地查阅文档是日常开发工作中的必备技能。长期以来&#xff0c;优秀开源项目的官方文档都是部署在国外服务器上&#xff0c;从国内访问非常慢&#xff0c;而由于众所周知的限制&#xff0c;部分文…

VC中使用ADO的方法

ADO中打开一个连接&#xff1a; pConnection->ConnectionString "这里的字符串有下面四种写法";      //对连接字符串赋值 pConnection->Open(ConnectionString,"","",adModeUnknown);       //连接数据库 第二三个参数分别为…

c++ mmap写入速度_Linux系统编程_用mmap+数组的方式修改数据文件

正文开始前&#xff0c;先聊点非技术的东西&#xff0c;推荐2本生动有趣的书&#xff1a;《经济学原理 宏观经济学》&#xff0c;曼昆&#xff0c;豆瓣评分9.3&#xff0c;4945人评价《经济学原理 微观经济学》&#xff0c;曼昆&#xff0c;豆瓣评分9.6&#xff0c;1879人评价我…

Java中类型转换

编辑器加载中... int -> String int i12345; String s""; 第一种方法&#xff1a;si""; 第二种方法&#xff1a;sString.valueOf(i); 这两种方法有什么区别呢&#xff1f;作用是不是一样的呢&#xff1f;是不是在任何下都能互换呢&#xff1f; String -…

太极软件qn的代码_多版本QQ内置qn、qx模块

软件名称&#xff1a;QQ版本号&#xff1a;1362、1392、1558版本&#xff1a;8.3.0、8.3.5、8.4.18安装包大小&#xff1a;81.93m、88.64m、100.93m简介&#xff1a;分别是830、835、8418这三个版本的QQ&#xff0c;只内置qn、qx模块&#xff0c;可以实现无需root&#xff0c;无…

asp.net 导入excel显示进度

这几天在做个导入excel的上传页面&#xff0c;由于数据量太大&#xff0c;要显示个进度条&#xff0c;本人不懂jquery&#xff0c;所以百度完再经过调整之后完成了&#xff0c;如果告诉别人只是为了显示个进度条而弄个多线程&#xff0c;还要根据session的机制模拟一个具有sess…