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,所以 ...
随机推荐
- DevExpress GridControl 部分用法
1.GridControl赋值:this.GridControl1.DataSouce=dt; 2.GridContro总合计及分组合计: 常规总合计直接RunDesigner-Group Summa ...
- C# 判断是否为闰年的条件各是
//try 没增加异常数据处理 Console.WriteLine("根据输入的信息计算当年某个月份的天数,以及当年是否是闰年或平年,\n并判断2月份特殊月份的天数."); Con ...
- 基于.NET的WebService的实现和WCF的实现
1.新建一个MVC web项目. 2.点击项目,[右键]→[添加]→[新建项] 3.点击[Web]→[Web服务] 4.恭喜,Web Service已经新建成功,里面的方法就可以参考着根据自己的需要进 ...
- Java 第四天 Mysql
下载地址 http://dev.mysql.com/downloads/ 社区版是免费的 配置将zip 解压copy到本地,如:C:\mysql-5.6.15-winx64,复制配置文件my-def ...
- python基础学习笔记第二天 内建方法(s t r)
python的字符串内建函数 str.casefold()将字符串转换成小写,Unicode编码中凡是有对应的小写形式的,都会转换str.center()返回一个原字符串居中,并使用空格填充至长度 w ...
- 通过java反射实现简单的关于MongoDB的对象关系映射(ORM).
通过阅读MongoDB 3.2.1的官方文档中关于java 编程发现最新的文档并没有实现对对象到Document的映射,所以自己有了利用反射实现简单的关系映射. 1.定义抽象类:AbstractMo ...
- [JAVA][RCP] Eclipse4/RCP/Lifecycle
E4AP provides two levels of lifecycles, for contributions and for the application. Contents [hide] ...
- iOS进阶学习-数据库
一.数据库管理系统 1.SQL语言概述:SQL是Structured Query Language(结构化查询语言)的缩写.SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言. 2.常见 ...
- nodejs for centos配置
mongodb http://www.cnblogs.com/zhoulf/archive/2013/01/31/2887439.html nodejs http://zhaohe162.blog.1 ...
- (转)eclipse安装ADT插件重启后不显示Android SDK Manager和Android Virtual Device Manager图标的一种解决办法
文章来源:http://blog.csdn.net/zcyhappy1314/article/details/8307534 下面说的这种情况是在正确安装ADT插件的前提下,重启eclipse后,工具 ...