Codeforces Beta Round #96 (Div. 2) (A-E)
写份DIV2的完整题解
A
判断下HQ9有没有出现过
#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stdlib.h>
#include<vector>
#include<cmath>
#include<queue>
#include<set>
using namespace std;
#define N 112
#define LL long long
#define INF 0xfffffff
const double eps = 1e-;
const double pi = acos(-1.0);
const double inf = ~0u>>;
char s[N];
int main()
{
int i,j,k;
cin>>s;
k = strlen(s);
for(i = ; i < k ;i++)
if(s[i]=='H'||s[i]==''||s[i]=='Q')
break;
if(i==k)
puts("NO");
else
puts("YES");
return ;
}
B
模拟下就OK
#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stdlib.h>
#include<vector>
#include<cmath>
#include<queue>
#include<set>
using namespace std;
#define N 112
#define LL long long
#define INF 0xfffffff
#define mod 1000003
const double eps = 1e-;
const double pi = acos(-1.0);
const double inf = ~0u>>;
char s[N];
int a[];
int main()
{
int i,j,k;
a['>'] = ;
a['<'] = ;
a['+'] = ;
a['-'] = ;
a['.'] = ;
a[','] = ;
a['['] = ;
a[']'] = ;
cin>>s;
k = strlen(s);
int ans = ;
for(i = ;i < k ; i++)
{
// cout<<a[s[i]]<<endl;
ans = (ans*+a[s[i]])%mod;
}
cout<<ans<<endl;
return ;
}
C
题意有点费解 给定操作 使其数字变为字符 先给你字符 问原先数字为多少 模拟。。
#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stdlib.h>
#include<vector>
#include<cmath>
#include<queue>
#include<set>
using namespace std;
#define N 112
#define LL long long
#define INF 0xfffffff
#define mod 256
const double eps = 1e-;
const double pi = acos(-1.0);
const double inf = ~0u>>;
char s[N];
int a[];
int main()
{
int i,j,k;
gets(s);
k = strlen(s);
int ans = ;
int kt = ;
for(i = ;i < k ; i++)
{
int x = s[i];
int y = kt;
int g = ;kt=;
memset(a,,sizeof(a));
while(y)
{
a[g++] = y%;
y/=;
}
for(j = ; j < ;j++)
kt+=pow(,-j-)*a[j];
memset(a,,sizeof(a));
g = ;
while(x)
{
a[g++] = x%;
x/=;
}
int ans = ;
for(j = ; j < ;j++)
ans+=pow(,-j-)*a[j];
kt = (kt-ans+mod)%mod;
cout<<kt<<endl;
kt = s[i];
}
return ;
}
D
题意更是费解 大意:你当前在某一个颜色块中 你有两个指向标 一个是向另一块前进的方向 另一个是在本块的前进方向 0块和边外不能走 问m次后你在哪个块中
模拟。。
#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stdlib.h>
#include<vector>
#include<cmath>
#include<queue>
#include<set>
using namespace std;
#define N 112
#define LL long long
#define INF 0xfffffff
#define mod 256
const double eps = 1e-;
const double pi = acos(-1.0);
const double inf = ~0u>>;
char s[][];
int a[][][],n,k;
int judge(int x,int y)
{
if(x<||x>=n||y<||y>=k)
return ;
if(s[x][y]=='') return ;
return ;
}
int main()
{
int i,j,m,g;
cin>>n>>m;
for(i = ; i < n ;i++)
cin>>s[i];
k = strlen(s[]);
for(i = ;i < n ;i++)
{
for(j = ; j < k ;j++)
{
for(g = j ; g >= ; g--)
if(s[i][g]!=s[i][j]) break;
a[i][j][] = g+;
for(g = i ; g >= ; g--)
if(s[g][j]!=s[i][j]) break;
a[i][j][] = g+;
for(g = j ; g < k; g++)
if(s[i][g]!=s[i][j]) break;
a[i][j][] = g-;
for(g = i ; g < n ;g++)
if(s[g][j]!=s[i][j]) break;
a[i][j][] = g-;
}
}
int d1 = ,d2 = ,x = ,y = ;
char c = s[][];
int k1 = ;
while(k1<=m)
{
if(d1==||d1==)
x = a[x][y][d1];
else y = a[x][y][d1];
if(d2==||d2==)
x = a[x][y][d2];
else y = a[x][y][d2];
int tx,ty;
if(d1==)
{
tx = x-;ty = y;
}
else if(d1==)
{
tx = x;ty = y+;
}
else if(d1==)
{
tx = x+;ty = y;
}
else
{
tx = x;ty = y-;
}
if(!judge(tx,ty))
{
//cout<<",";
if((d2+)%==d1)
d2 = (d1+)%;
else
{ d1 = (d1+)%;d2 = (d1-+)%;
}
}
else
{
c = s[tx][ty];
x = tx,y = ty;
}
k1++;
//x = tx
//cout<<c<<" "<<d1<<" "<<d2<<" "<<k1<<" "<<x<<" "<<y<<endl;
}
cout<<c<<endl;
return ;
}
E
当时的思路貌似不太对 按照zp说的思路又重写了一遍
dp[i][j][0] 表示在i位置已经改变了j次方向为正的最大移动距离 dp[i][j][1]类似表反方向。
#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stdlib.h>
#include<vector>
#include<cmath>
#include<queue>
#include<set>
using namespace std;
#define N 112
#define LL long long
#define INF 0xfffffff
#define mod 256
const double eps = 1e-;
const double pi = acos(-1.0);
const double inf = ~0u>>;
int dp[N][][];
char s[N];
int main()
{
int i,j,k;
cin>>s;
cin>>k;
int kk = strlen(s);
for(i = ; i < kk ; i++)
for(j = ; j <= k ; j++)
dp[i][j][] = dp[i][j][] = -INF;
if(s[]=='T')
{
for(i = ; i <= k ; i++)
{
if(i%!=)
dp[][i][] = -;
else
dp[][i][] = ;
}
}
else
{
for(i = ; i <= k ; i++)
if(i%==)
dp[][i][] = ;
else
dp[][i][] = ;
}
for(i = ; i < kk ;i++)
{
if(s[i]=='T')
{
dp[i][][] = dp[i-][][];
dp[i][][] = dp[i-][][];
}
else
{
dp[i][][] = dp[i-][][]+;
dp[i][][] = dp[i-][][]-;
}
for(j = ; j <= k ; j++)
{
if(s[i]=='T')
{
dp[i][j][] = max(dp[i-][j][],dp[i-][j-][]+);
dp[i][j][] = max(dp[i-][j][],dp[i-][j-][]-);
}
else
{
dp[i][j][] = max(dp[i-][j][]+,dp[i-][j-][]);
dp[i][j][] = max(dp[i-][j][]-,dp[i-][j-][]);
}
}
}
int ans1 = max(dp[kk-][k][],dp[kk-][k][]);
for(i = ; i < kk ; i++)
for(j = ; j <= k ; j++)
dp[i][j][] = dp[i][j][] = -INF;
if(s[]=='T')
{
for(i = ; i <= k ; i++)
{
if(i%!=)
dp[][i][] = ;
else
dp[][i][] = ;
}
}
else
{
for(i = ; i <= k ; i++)
if(i%==)
dp[][i][] = -;
else
dp[][i][] = ;
}
for(i = ; i < kk ;i++)
{
if(s[i]=='T')
{
dp[i][][] = dp[i-][][];
dp[i][][] = dp[i-][][];
}
else
{
dp[i][][] = dp[i-][][]+;
dp[i][][] = dp[i-][][]-;
}
for(j = ; j <= k ; j++)
{
if(s[i]=='T')
{
dp[i][j][] = max(dp[i-][j][],dp[i-][j-][]+);
dp[i][j][] = max(dp[i-][j][],dp[i-][j-][]-);
}
else
{
dp[i][j][] = max(dp[i-][j][]+,dp[i-][j-][]);
dp[i][j][] = max(dp[i-][j][]-,dp[i-][j-][]);
}
}
}
int ans2 = max(dp[kk-][k][],dp[kk-][k][]);
//cout<<ans1<<" "<<ans2<<endl;
int ans = max(ans1,ans2);
cout<<ans<<endl;
return ;
}
Codeforces Beta Round #96 (Div. 2) (A-E)的更多相关文章
- Codeforces Beta Round #96 (Div. 1) C. Logo Turtle —— DP
题目链接:http://codeforces.com/contest/132/problem/C C. Logo Turtle time limit per test 2 seconds memory ...
- Codeforces Beta Round #96 (Div. 2) E. Logo Turtle dp
http://codeforces.com/contest/133/problem/E 题目就是给定一段序列,要求那个乌龟要走完整段序列,其中T就是掉头,F就是向前一步,然后开始在原点,起始方向随意, ...
- Codeforces Beta Round #96 (Div. 1) D. Constants in the language of Shakespeare 贪心
D. Constants in the language of Shakespeare Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codef ...
- Codeforces Beta Round #96 (Div. 1) C. Logo Turtle DP
C. Logo Turtle A lot of people associate Logo programming language with turtle graphics. In this c ...
- 『NYIST』第九届河南省ACM竞赛队伍选拔赛[正式赛二]- Nearly Lucky Number(Codeforces Beta Round #84 (Div. 2 Only)A. Nearly)
A. Nearly Lucky Number time limit per test 2 seconds memory limit per test 256 megabytes input stand ...
- Codeforces Beta Round #77 (Div. 2 Only)
Codeforces Beta Round #77 (Div. 2 Only) http://codeforces.com/contest/96 A #include<bits/stdc++.h ...
- Codeforces Beta Round #73 (Div. 2 Only)
Codeforces Beta Round #73 (Div. 2 Only) http://codeforces.com/contest/88 A 模拟 #include<bits/stdc+ ...
- Codeforces Beta Round #69 (Div. 2 Only)
Codeforces Beta Round #69 (Div. 2 Only) http://codeforces.com/contest/80 A #include<bits/stdc++.h ...
- Codeforces Beta Round #40 (Div. 2)
Codeforces Beta Round #40 (Div. 2) http://codeforces.com/contest/41 A #include<bits/stdc++.h> ...
随机推荐
- payload和formData有什么不同?
最近做项目的时候,在通过post请求向服务端发送数据的时候,请求失败了.错误信息如下: 返回的400(bad request)错误,说明客户端这边发送的请求是有问题的. 和通过jquery中的ajax ...
- libevent多线程使用事项
转 http://www.cnblogs.com/Seapeak/archive/2010/04/08/1707807.html 在linux平台上使用c开发网络程序的同志们一般情况下都对鼎鼎大名的l ...
- ZOJ 2706 Thermal Death of the Universe (线段树)
题目链接:ZOJ 2706 Thermal Death of the Universe (线段树) 题意:n个数.m个操作. 每一个操作(a,b)表示(a,b)全部值更新为这个区间的平均数:1.当前的 ...
- 在XX公司工作第二天,维护已有代码
根据<C++ More Exception>所述的规则: Rule #1: Never write using-directives in header files. Rule #2: N ...
- 算法导论—无向图的遍历(BFS+DFS,MATLAB)
华电北风吹 天津大学认知计算与应用重点实验室 最后改动日期:2015/8/22 无向图的存储方式有邻接矩阵,邻接链表,稀疏矩阵等. 无向图主要包括双方面内容,图的遍历和寻找联通分量. 一.无向图的遍历 ...
- 暴力破解zip文件
#coding=utf-8 """ 用户输入-z参数指定要破解的zip文件,输入-d参数输入字典文件,即可暴力破解加密的zip文件 """ ...
- HTML5开发实战——Sencha Touch篇(1)
学习了很多主要的Sencha Touch内容,已经了解了Sencha Touch的开发模式.接下来一段时间我们将利用Sencha Touch来进行自己的web应用构建. 先要解决的是前端的问题.从最简 ...
- druid 参考配置
mysql <!-- 配置druid连接池 --> <context:property-placeholder location="classpath:jdbc.prope ...
- 【bzoj4401】块的计数
首先,块的大小确定的话,可以发现方案最多只有1种 然后就可以O(nsqrt(n))搞,不过会TLE 接着我们又发现,一个节点可以作一个块的根,当且仅当该节点的size能被块的大小整除 然后就可以O(n ...
- C 编程中fseek、ftell的用法总结
fseek 函数功能是将文件指针移动到指定的地方,因此可以通过fseek重置文件指针的位置.函数原型: int fseek(FILE *stream, long offset, int origi ...