B.Cuckoo for Hashing

模拟题。

代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
#define N 50007 int a[],b[]; int main()
{
int n1,n2,m,i;
int x,fx,tx;
int tmp,tmp2;
int cs = ;
while(scanf("%d%d%d",&n1,&n2,&m)!=EOF && (n1||n2||m))
{
memset(a,-,sizeof(a));
memset(b,-,sizeof(b));
while(m--)
{
scanf("%d",&x);
fx = x%n1;
tx = ;
if(a[fx] == -)
{
a[fx] = x;
continue;
}
tmp2 = x;
while(a[fx] != -)
{
tmp = a[fx];
a[fx] = tmp2;
tx = tmp%n2;
if(b[tx] != -)
{
tmp2 = b[tx];
b[tx] = tmp;
fx = tmp2%n1;
}
else
{
b[tx] = tmp;
break;
}
}
if(a[fx] == -)
a[fx] = tmp2;
}
printf("Case %d:\n",cs++);
int flag = ;
//printf("Table 1\n");
for(i=;i<n1;i++)
{
if(a[i] != -)
{
flag = ;
break;
}
}
if(flag)
{
printf("Table 1\n");
for(i=;i<n1;i++)
{
if(a[i] != -)
printf("%d:%d\n",i,a[i]);
}
}
flag = ;
for(i=;i<n2;i++)
{
if(b[i] != -)
{
flag = ;
break;
}
}
if(flag)
{
printf("Table 2\n");
for(i=;i<n2;i++)
{
if(b[i] != -)
printf("%d:%d\n",i,b[i]);
}
}
}
return ;
}

C.Playing Fair with Cryptography

模拟题,注意细节就好。遇到J的情况要及时跳走。

代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <string>
using namespace std;
#define N 50007 char mp[][];
char key[],text[];
int vis[]; string RUN(string ss)
{
int i,j;
int a,b;
int c,d;
string ans = "";
for(i=;i<;i++)
{
for(j=;j<;j++)
{
if(mp[i][j] == ss[])
a = i,b = j;
if(mp[i][j] == ss[])
c = i,d = j;
}
}
if(a == c)
{
int newb = (b+)%;
ans += mp[a][newb];
int newd = (d+)%;
ans += mp[a][newd];
return ans;
}
else if(b == d)
{
int newa = (a+)%;
ans += mp[newa][b];
int newc = (c+)%;
ans += mp[newc][b];
return ans;
}
else
{
int newb = d;
int newd = b;
ans += mp[a][newb];
ans += mp[c][newd];
return ans;
}
} int main()
{
int t,i,cs = ,j,k;
int x,y;
scanf("%d",&t);
getchar();
while(t--)
{
gets(key);
gets(text);
int len1 = strlen(text);
int len2 = strlen(key);
memset(vis,,sizeof(vis));
k = ;
for(i=;i<len2;i++)
{
char ch = key[i];
if((ch >= 'A' && ch <= 'Z'))
{
if(vis[ch-'A'])
continue;
vis[ch-'A'] = ;
mp[k/][k%] = ch;
k++;
}
else if(ch >= 'a' && ch <= 'z')
{
ch -= ;
if(vis[ch-'A'])
continue;
vis[ch-'A'] = ;
mp[k/][k%] = ch;
k++;
}
}
for(char chh = 'A';chh<='Z';chh++)
{
if(chh == 'J')
continue;
if(!vis[chh-'A'])
{
mp[k/][k%] = chh;
k++;
}
}
//alpha table established
char ss[];
k = ;
for(i=;i<len1;i++)
{
if(text[i] >= 'A' && text[i] <='Z')
ss[k++] = text[i];
else if(text[i] >= 'a' && text[i] <= 'z')
ss[k++] = text[i]-;
}
ss[k] = '\0';
printf("Case %d: ",cs++);
int nowch = ;
char nowchar;
string cy = "";
for(i=;i<k-;i+=)
{
if(nowch == )
nowch++,nowch%=;
if(ss[i] == ss[i+])
{
if(ss[i] == (nowch%) + 'A')
{
nowchar = (++nowch)% + 'A';
if(nowchar == 'J')
nowch++,nowchar = 'K';
}
nowchar = (nowch%) + 'A';
if(nowchar == 'J')
nowch++,nowchar = 'K';
cy = "";
cy += ss[i];
cy += nowchar;
cout<<RUN(cy);
nowch = (nowch+)%;
i -= ;
}
else
{
cy = "";
cy += ss[i];
cy += ss[i+];
cout<<RUN(cy);
}
}
if(i == k-)
{
nowchar = nowch% + 'A';
if(ss[i] == nowchar)
{
nowchar = (++nowch)% + 'A';
}
if(nowchar == 'J')
nowch++,nowchar = 'K';
cy = "";
cy += ss[i];
cy += nowchar;
cout<<RUN(cy);
}
cout<<endl;
}
return ;
}

H.The Urge to Merge

DP。借鉴标程代码。

代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <string>
#define Mod 1000000007
using namespace std;
#define N 50007 int mp[][];
ll dp[][]; ll Max(ll a,ll b,ll c,ll d)
{
return max(max(max(a,b),c),d);
} int main()
{
int cs = ,n;
int i,j,k;
while(scanf("%d",&n)!=EOF && n)
{
for(i=;i<;i++)
for(j=;j<=n;j++)
scanf("%d",&mp[i][j]);
//memset(dp,0,sizeof(dp));
for(i=;i<;i++)
dp[i][] = dp[i][] = ;
dp[][] = mp[][]*mp[][];
dp[][] = mp[][]*mp[][];
ll k1 = Max(dp[][],dp[][],,);
ll k2 = ;
ll s1,s2,s3,s4,s5; for(j=;j<=n;j++)
{
s1 = mp[][j-]*mp[][j];
s2 = mp[][j-]*mp[][j];
s3 = mp[][j-]*mp[][j];
s4 = mp[][j]*mp[][j];
s5 = mp[][j]*mp[][j]; dp[][j] = Max(k2,dp[][j-],dp[][j-],dp[][j-])+s1; //第一种组合
dp[][j] = Max(k2,dp[][j-],dp[][j-],dp[][j-])+s2; //第二种组合
dp[][j] = Max(k2,dp[][j-],dp[][j-],dp[][j-])+s3; //第三种组合 dp[][j] = Max(k2+s1+s2,dp[][j-]+s1+s2,k1+s4,);
dp[][j] = Max(k2,dp[][j-],,)+s1+s3;
dp[][j] = Max(k2+s2+s3,dp[][j-]+s2+s3,k1+s5,);
dp[][j] = Max(k2+s1+s2+s3,dp[][j]+s5,dp[][j]+s4,);
k2 = k1;
for(i=;i<;i++)
k1 = max(k1,dp[i][j]);
}
ll ans = -Mod;
for(i=;i<;i++)
ans = max(ans,dp[i][n]);
printf("Case %d: %d\n",cs++,ans);
}
return ;
}

(没做出来的以后持续更新)

2014 UESTC 暑前集训队内赛(2) 部分解题报告的更多相关文章

  1. 2014 UESTC 暑前集训队内赛(3) 部分解题报告

    B.Battle for Silver 定理:完全图Kn是平面图当且仅当顶点数n<=4. 枚举所有完全图K1,K2,K3,K4,找出最大总权重. 代码: #include <iostrea ...

  2. 2014 UESTC 暑前集训队内赛(1) 解题报告

    A.Planting Trees 排序+模拟 常识问题,将耗时排一个序,时间长的先种,每次判断更新最后一天的时间. 代码: #include <iostream> #include < ...

  3. 2014 UESTC暑前集训数据结构专题解题报告

    A.Islands 这种联通块的问题一看就知道是并查集的思想. 做法:从高水位到低水位依序进行操作,这样每次都有新的块浮出水面,可以在前面的基础上进行合并集合的操作.给每个位置分配一个数字,方便合并集 ...

  4. 2014 UESTC暑前集训搜索专题解题报告

    A.解救小Q BFS.每次到达一个状态时看是否是在传送阵的一点上,是则传送到另一点即可. 代码: #include <iostream> #include <cstdio> # ...

  5. 2014 UESTC暑前集训动态规划专题解题报告

    A.爱管闲事 http://www.cnblogs.com/whatbeg/p/3762733.html B.轻音乐同好会 C.温泉旅馆 http://www.cnblogs.com/whatbeg/ ...

  6. 2014 UESTC暑前集训图论专题解题报告

    A.方老师和缘分 http://www.cnblogs.com/whatbeg/p/3765621.html B.方老师和农场 http://www.cnblogs.com/whatbeg/p/376 ...

  7. 模拟赛T2 交换 解题报告

    模拟赛T2 交换 解题报告 题目大意: 给定一个序列和若干个区间,每次从区间中选择两个数修改使字典序最小. \(n,m\) 同阶 \(10^6\) 2.1 算法 1 按照题意模拟,枚举交换位置并比较. ...

  8. nowcoder(牛客网)提高组模拟赛第一场 解题报告

    T1 中位数(二分) 这个题是一个二分(听说是上周atcoder beginner contest的D题???) 我们可以开一个数组b存a,sort然后二分b进行check(从后往前直接遍历check ...

  9. UESTC-第五届ACM趣味程序设计竞赛第四场(正式赛)--不完全解题报告

    比赛链接: http://acm.uestc.edu.cn/contest.php?cid=230 A.Police And The Thief ---UESTC 1913 简单博弈,先假设在警察先走 ...

随机推荐

  1. [小北De编程手记] : Selenium For C# 教程目录

    写<Selnium For C#>系列文章的初衷是因为有很多朋友问我应该从哪里开始学习自动化测试,于是就为大家写下了这个系列的文章,希望对你有些帮助吧.而我想表达的是Selenium(同时 ...

  2. How to Use Telnet to Test SMTP Communication

    Topic Last Modified: 2005-05-24 Telnet is an extremely useful tool for troubleshooting issues relate ...

  3. 2015年第8本(英文第7本):the city of ember 微光城市

    书名:the City of Ember(中文名:微光城市) 作者:Jeanne DuPrau 单词数:6.2万 不重复单词数:未知 首万词不重复单词数:未知 蓝思值:未知 阅读时间:2015年4月2 ...

  4. OC知识梳理-NSArray与NSMutableArray相关知识

    知识普及: 1.数组中的元素在系统中都会有其默认对应的下标,下标是一个整形的数字,默认从0开始. 例:NSArray *arr3 = @["345","234" ...

  5. IOS 杂笔-5(NSTimer极浅析)

    1.timer都会对它的target进行retain,我们需要小心对待这个target的生命周期问题,尤其是重复性的timer. 2. timer不是一种实时的机制,会存在延迟,而且延迟的程度跟当前线 ...

  6. git不常用命令

    1.删除远程分支 git remote origin :分支名        [解释:意思是提交一个空分支到远程分支] ===持续更新

  7. 【原创+译文】官方文档中声明的如何创建抽屉导航栏(Navigation Drawer)

    如需转载请注明出处:http://www.cnblogs.com/ghylzwsb/p/5831759.html 创建一个抽屉导航栏 抽屉式导航栏是显示在屏幕的左边缘,它是应用程序的主导航选项面板.它 ...

  8. 2、IOS开发--iPad之仿制QQ空间 (初始化HomeViewController子控件视图)

    1.先初始化侧边的duck,效果图: 实现步骤: 2.然后初始化BottomMenu,效果: 步骤: 其实到这里,会出现一个小bug,那就是: 子控件的位置移高了,主要原因是: 逻辑分析图: 问题解决 ...

  9. Mac上的软件的一些对开发者有用的使用技巧(持续更新)

    内容大纲: Google浏览器设置开发者模式 正文: 1.Google浏览器设置开发者模式

  10. Objective-C之代理设计模式小实例

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...