【比赛】百度之星2017 复赛
第一题
模拟送分。
#include<cstdio> #include<cstring> #include<cctype> #include<cmath> #include<algorithm> #define ll long long using namespace std; int read() {char c;int s=0,t=1;while(!isdigit(c=getchar()))if(c=='-')t=-1;do{s=s*10+c-'0';}while(isdigit(c=getchar()));return s*t; } /*------------------------------------------------------------*/ const int inf=0x3f3f3f3f,maxn=101000,MOD=1000000007;int n; char s[maxn],ans[maxn],nows[maxn]; int main() {int T;scanf("%d",&T);while(T--){scanf("%s",s+1);int n=strlen(s+1);int nowstep=0,len=0,tot=0;for(int i=1;i<=n;i++)if(isdigit(s[i])){if(nowstep==1){nows[++len]=s[i];}else if(nowstep==2){for(int j=1;j<=s[i]-'0';j++){for(int k=1;k<=len;k++){ans[++tot]=nows[k];}}len=0;nowstep=0;}elseif(nowstep==0)ans[++tot]=s[i];}else{if(nowstep==0&&s[i]=='(')nowstep=1;elseif(nowstep==1&&s[i]==')')nowstep=2;}long long ansnum=0;for(int i=1;i<=tot;i++)ansnum=(ansnum*10+ans[i]-'0')%MOD;printf("%lld\n",ansnum);}return 0; }
View Code
第二题
数学相关,弃坑。
第三题
题意:一个2*n的网格,再保证步数最少的情况下,求从任意格出发遍历完所有格的方案数,格子八连通。n<=10000,T<=100。
算法:数学+递推DP
题解:【HDU】6146 Pokémon GO
第四题
计算几何相关,弃坑。
第五题
题意:定义V-number为从左到看单位数字未出现先递增后递减现象的数字,求0~N中满足条件的数字个数。T<=200,lenth(n)<=100
算法:数位DP
题解:【HDU】6148 Valley Numer
第六题
题意:一个无向图,k个给定点为高点,其余为低点,要求拼成若干个高-低-高的三元组(“-”表示有边直连),三元组之间点不重复,求至多拼成多少个三元组。
n<=30,k<=15,T<=20
算法:状压DP
题解:看数据范围猜算法!
f[x][i]表示加入第x个低点后,高点占领状态为i的最大三元组个数,初始f[0][0]=0,显然x可以滚动。
每次加入一个低点,枚举状态,然后在状态中找到两个高点配起来,或不配状态直传。
配的过程用dfs枚举,复杂度(n-k)*2^k*C(2,k),极限15*2^15*14*15≈10^8,果然要相信自己啊!
#include<cstdio> #include<cstring> #include<cctype> #include<cmath> #include<algorithm> #define ll long long using namespace std; int read() {char c;int s=0,t=1;while(!isdigit(c=getchar()))if(c=='-')t=-1;do{s=s*10+c-'0';}while(isdigit(c=getchar()));return s*t; } /*------------------------------------------------------------*/ const int inf=0x3f3f3f3f,maxn=40,maxk=80010;int n,f[2][maxk],c,k,m,hi[maxn]; bool map[maxn][maxn],high[maxn]; void dfs(int dep,int now,int pre,int cyc,int x){if(dep==3){f[now][c]=max(f[now][c],f[pre][cyc]+1);}else{for(int i=0;i<=k-1;i++)if(map[x][hi[i+1]]&&!(c&(1<<i))){c|=(1<<i);dfs(dep+1,now,pre,cyc,x);c^=(1<<i);}} } int main() {int T;scanf("%d",&T);while(T--){n=read();m=read();k=read();int u,v;memset(map,0,sizeof(map));for(int i=1;i<=m;i++){u=read();v=read();map[u][v]=map[v][u]=1;}memset(high,0,sizeof(high));for(int i=1;i<=k;i++){u=read();high[u]=1;}int nowk=0;for(int i=1;i<=n;i++)if(high[i])hi[++nowk]=i;k=nowk;memset(f,0,sizeof(f));int x=1;for(int i=1;i<=n;i++)if(!high[i]){x=1-x;memset(f[x],0,sizeof(f[x]));for(int j=0;j<(1<<k);j++){f[x][j]=max(f[x][j],f[1-x][j]);c=j;dfs(1,x,1-x,j,i);}}int ans=0;for(int i=0;i<(1<<k);i++)ans=max(ans,f[x][i]);printf("%d\n",ans);}return 0; }
View Code
战果:rank 100,naive successful!开心>w<!
转载于:https://www.cnblogs.com/onioncyc/p/7403631.html
【比赛】百度之星2017 复赛相关推荐
- 【百度之星2017】资格赛-题3-度度熊与邪恶大魔王
题目 Problem Description 度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来. 邪恶大魔王的麾下有n个怪兽,每个怪兽有a[i]的生命值,以及b[i]的防御力. 度度熊一共拥有m种攻 ...
- 百度之星 2017初赛第一场 1005 今夕何夕
今夕何夕 Accepts: 1345 Submissions: 5533 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32 ...
- 百度之星2017 HDU 6114 Chess 组合数学
Chess 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6114 Description 車是中国象棋中的一种棋子,它能攻击同一行或同一列中没有其他棋 ...
- 百度之星2017资格赛1003 度度熊与邪恶大魔王
Problem Description 度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来. 邪恶大魔王的麾下有n个怪兽,每个怪兽有a[i]的生命值,以及b[i]的防御力. 度度熊一共拥有m种攻击方式 ...
- 【原创】【百度之星2017资格赛1003】度度熊与邪恶大魔王
度度熊与邪恶大魔王 Accepts: 3107 Submissions: 19305 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 3276 ...
- 百度之星2017资格赛 1003 度度熊与邪恶大魔王 完全背包
定义状态dp[i][j][t]代表前i种攻击,当前怪物生命值为j,防御力为t,所需要的最小代价. 利用完全背包的方法很容易得到 (p[i] = 第i种方法的攻击值减去防御值t) dp[i][j][t] ...
- 百度之星2017资格赛T3 度度熊与邪恶大魔王 背包
Problem Description 度度熊为了拯救可爱的公主,于是与邪恶大魔王战斗起来. 邪恶大魔王的麾下有n个怪兽,每个怪兽有a[i]的生命值,以及b[i]的防御力. 度度熊一共拥有m种攻击方式 ...
- 2017百度之星程序设计大赛 - 复赛 01,03,05
Arithmetic of Bomb Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- 2017百度之星 复赛
作为一只菜鸡,这可能是我OI生涯中最后一次打百度之星了,希望明年这个时候能不退役(虽然不大可能) 开始贴题解吧.会持续更新. 1001 Arithmetic of Bomb 煞笔模拟题,1A #inc ...
最新文章
- AndroidFFmpeg
- bzoj1257 数学整理二分查询
- vuex语法精简(方便开发查阅)
- MVC +EF+linq 多表联查
- 一个面试题关于变量的生命周期
- Linux常用命令的缩写含义
- 《Web漏洞防护》读书笔记——第6章,XXE防护
- Java线程 生产者--消费者模式总结(一)
- PowerDesigner生成Oracle数据库时,表名会带引号问题
- 启动虚拟机异常(超完整版)Win10
- 使用python画出简易的滑稽表情
- 玩转华为ENSP模拟器系列 | 接入用户采用Windows7客户端通过IKEv2方式接入总部VdPdNd(采用证书认证方式)
- Spring session redis ERR unknown command 'CONFIG'
- 小游戏正在毁灭微信群聊(文中有福利)
- 多模态情感分析的研究现状
- PyTorch载入预训练权重方法和冻结权重方法
- 移动端iOS中input输入框搜索框软键盘出现换行而不是搜索
- 希腊字母含义及快捷键输入
- docker Starting MySQL database server mysqld fail解决办法
- IE10及以上CSS滤镜失效(偶然发现)
热门文章
- vmware 多外网ip
- 神泣单机服务器维护,神泣9.0网游单机版网单一键服务端 魔王归来
- oracle语法_PG数据库sql语法总结,与Oracle有什么不同?
- ip68能达到什么程度防水_电子主控电路板使用什么样的胶水可以达到防水效果?...
- signature=2d36ad490c0d9e19a6dc808d43a34033,Matemàtica discreta : problemes resolts
- 深圳职业技术学院计算机专业组代码,深圳职业技术学院代码是多少 有哪些优势专业...
- mysql 去重 根据id_点赞功能,用MySQL还是Redis
- 自制计算机语言,3个步骤实现简单语言解释器(自制简易编程语言)
- Javascript堆排序
- vscode怎么连接mysql_如何在VSCode连接使用MySQL数据库?