codechef 两题
前面做了这场比赛,感觉题目不错,放上来。
A题目:对于数组A[],求A[U]&A[V]的最大值,因为数据弱,很多人直接排序再俩俩比较就过了。
其实这道题类似百度之星资格赛第三题XOR SUM,不过他求得是XOR最大值,原理类似。。
B:KMP居然写搓了,后来一直改,题目放个链接好了:http://www.codechef.com/LTIME14/problems/TASHIFT。
我么可以对B字符串复制一下,然后再对A字符串求出NEXT数组,再匹配的过程中求出匹配最大长度时的位置,
刚开始我没想到这种做法,然后是先求出NEXT数组,然后二分,具体看代码。CODECHEF好像不能赛后交,代码的正确性。。
T#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stdlib.h>
#include<vector>
#include<cmath>
#include<queue>
#include<set>
#include<list>
#define inf 0x3f3f3f
typedef long long ll;
using namespace std;
char s[];
char ss[];
int next[];
int n; void kmp()
{
int k=-,i=;
memset(next,,sizeof(next));
next[]=-;
while (i<n)
{
if (k==-||s[k]==s[i])
next[++i]=++k;
else k=next[k];
}
} int getkmp(int x)
{
int k=,i=;
while (i<(*n-)&&k<x)
{
if (k==-||ss[i]==s[k])
{
k++;i++;
}
else k=next[k];
}
if (k==x) return i-x;
return -;
} int main()
{
scanf("%d",&n);
scanf("%s%s",s,ss);
kmp();
int ans=;
for (int i=n;i<n+n-;i++) ss[i]=ss[i-n];
ss[n+n-]='\n';
int h=,t=n; for (int o=;o<;o++)
{
int mid=(h+t)/;
if (getkmp(mid)!=-) {h=mid;ans=getkmp(mid);}
else t=mid;
}
printf("%d\n",ans);
return ;
}
另外附百度之星XOR SUM的01字典树代码:
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<math.h>
#include<string>
using namespace std;
#define N 3333333
int next[N][],end[N];
int pos;
void add(int cur,int k) {
next[pos][]=next[pos][]=;
end[pos]=;
next[cur][k]=pos++;
} int cal(int x)
{
int cur=;
for (int i=;i>=;i--){
int k=((<<i)&x)?:;
if (next[cur][k]) cur=next[cur][k];
else cur=next[cur][-k];
}
return end[cur];
} int main()
{
int T;
scanf("%d",&T);
for (int o=;o<=T;o++)
{
int n,m;
scanf("%d%d",&n,&m);
pos=;
memset(next[],,sizeof(next[]));
for (int i=;i<n;i++) {
int x;
scanf("%d",&x);
int cur=;
for (int j=;j>=;j--)
{
int k=;
if ((<<j)&x) k=;
if (next[cur][k]==) add(cur,k);
cur=next[cur][k];
}
end[cur]=x;
}
printf("Case #%d:\n",o);
for (int i=;i<m;i++){
int x;
scanf("%d",&x);
int ans=cal(x);
printf("%d\n",ans);
}
}
return ;
}
codechef 两题的更多相关文章
- MT【249】离心率两题
椭圆$\dfrac{x^2}{a^2}+\dfrac{y^2}{b^2}=1,(a>b>0)$的一个焦点为$F$,过$F$的直线交椭圆于$A,B$两点,$M$是点$A$关于原点的对称点.若 ...
- 最近切的两题SCC的tarjan POJ1236 POJ2186
两题都是水题,1236第一问求缩点后入度为0的点数,第二问即至少添加多少条边使全图强连通,属于经典做法,具体可以看白书 POJ2186即求缩点后出度为0的那个唯一的点所包含的点数(即SCC里有多少点) ...
- 清橙A1206.小Z的袜子 && CF 86D(莫队两题)
清橙A1206.小Z的袜子 && CF 86D(莫队两题) 在网上看了一些别人写的关于莫队算法的介绍,我认为,莫队与其说是一种算法,不如说是一种思想,他通过先分块再排序来优化离线查询问 ...
- 2-SAT两题
看了大白书,学习了一下two-sat,很有意思的算法.题目就是大白书上的两题. 仅仅放一下代码作为以后的模板参考. #include <stdio.h> #include <algo ...
- codechef营养题 第二弹
第二弾が始まる! codechef problems 第二弹 一.Backup Functions 题面 One unavoidable problem with running a restaura ...
- 类似区间计数的种类并查集两题--HDU 3038 & POJ 1733
1.POJ 1733 Parity game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5744 Accepted: ...
- Codeforces Round #197 (Div. 2) C,D两题
开了个小号做,C题一开始看错范围,D题看了半小时才看懂,居然也升到了div1,囧. C - Xenia and Weights 给出一串字符串,第i位如果是1的话,表示有重量为i的砝码,如果有该种砝码 ...
- Codeforces/TopCoder/ProjectEuler/CodeChef 散题笔记 (持续更新)
最近做到了一些有趣的散题,于是开个Blog记录一下吧… (如果有人想做这些题的话还是不要看题解吧…) 2017-03-16 PE 202 Laserbeam 题意:有一个正三角形的镜子屋,光线从$C$ ...
- Educational Codeforces Round 58 (Rated for Div. 2) (前两题题解)
感慨 这次比较昏迷最近算法有点飘,都在玩pygame...做出第一题让人hack了,第二题还昏迷想错了 A Minimum Integer(数学) 水题,上来就能做出来但是让人hack成了tle,所以 ...
随机推荐
- MVC MVVM Knockout viewmodel 提交 完整过程,包含序列化 JSON 和 字典模型绑定
//JSON 通用操作------------------------------------------------------------------------------using Syste ...
- 编译android程序时DEX过程出现错误
今天编译高级设置时出现了错误,这好坑爹啊~ 于是我开始检查代码,发现代码没有错误啊,然后观察MAKE的步骤才发现是DEX时出现了问题!! 下面是错误的LOG: Information:Using ja ...
- openSUSE13.1安装时要注意的问题(未完待续)
1.最好用官方给的imageWriter来写镜像,不要用UltraISO来写镜像,会导致安装Kaffein包错误(:)可能也会有别的错误),后来我用imageWriter写了之后就没有在安装时报错了
- Excle快速输入√与×
如何在EXCLE中快速输入√与×呢 很简单的一个小技巧,只需要在EXCLE单元格中输入P(O) 然后将其字体设置为Wingdings 2,接着就出现符号了 不信你可以试试的哦.
- oracle 11g 分区表
查看所有用户分区表及分区策略(1.2级分区表均包括): SELECT p.table_name AS 表名, decode(p.partitioning_key_count, 1, '主分区') AS ...
- 管理员必备的20个Linux系统监控工具
需要监控Linux服务器系统性能吗?尝试下面这些系统内置或附件的工具吧.大多数Linux发行版本都装备了大量的监控工具.这些工具提供了能用作取得相关信息和系统活动的量度指标.你能使用这些工具发现造成性 ...
- squid基础配置
1 2 3 4 5 6 7 8 9 10 vim /etc/squid/squid.conf http_port 192.168.1.12:3128 (可写多个) cache_mem 64MB ...
- iOS 初级数据持久化
数据持久化 什么是数据持久化? 数据的永久存储 为什么要做数据持久化::存储在内存中的数据,程序关闭,内存释放,数据丢失,这种数据是临时的 数据持久化的本质:数据保存成文件,存储到程序的沙盒中 一.沙 ...
- ios开发--常用宏定义(部分转)
1.release时,屏蔽log #if defined (DEBUG) && DEBUG == 1 #else #define NSLog(...) {}; #endif #if d ...
- TcpClient 错误"不能做任何连接,因为目标机器积极地拒绝它" 的解决
TcpClient 错误"不能做任何连接,因为目标机器积极地拒绝它" 的解决 //以下是tcpclient服务器端的监听程序,假设服务器端和客户端在同一台机器上,//为了使客户端可 ...