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,所以 ...
随机推荐
- Google -We’re Sorry....
Author:KillerLegend From:http://www.cnblogs.com/killerlegend/p/3734840.html Date:2014.5.18 一大清早 一大早起 ...
- C语言警告:warning C4018: “<”: 有符号/无符号不匹配
问题如下: 代码出问题之处: 原因分析: strlen返回一个无符号整型,也就是unsigned型,比较时应该两边的数据类型相同,故严格上来说,应该将m定义为unsigned型. 修改 ...
- Git - Tutorial [Lars Vogel]
From: http://www.vogella.com/tutorials/Git/article.html Git - Tutorial Lars Vogel Version 5.6 Copyri ...
- python中列表和元组的使用方法和区别
一.二者区别 列表: 1.可以增加列表内容 append 2.可以统计某个列表段在整个列表中出现的次数 count 3.可以插入一个字符串,并把整个字符串的每个字母拆分当作一个列表段追加到列表 ...
- wpf 在引用外部的资源字典
启动的APP.xaml
- oracle11g 重新配置em
OS: ORACLE-LINUX 5.7 DB: 11.2.0.3 [oracle@b28-122 ~]$ emctl status dbconsoleOracle Enterprise Manage ...
- 苹果HomeKit如何牵动全国智能硬件格局
苹果HomeKit如何牵动全国智能硬件格局 2014-06-23 15:48 发表 系统分类:消费电子 自定义分类:默认 标签:智能家居 苹果在6月的WWDC开发者大会上发布了包括 ...
- iOS学习之C语言函数指针
通过函数名调用函数: int max = maxValue(4, 5); printf("max = %d\n", max); 函数类型:int (int, int) 1. ...
- Android Jni变量对照表
字符 Java类型 C类型 V void void Z jboolean boolean I jint in ...
- iOS开发HTTPS实现之信任SSL证书和自签名证书
iOS开发HTTPS实现之信任SSL证书和自签名证书 转自:http://www.jianshu.com/p/6b9c8bd5005a/comments/5539345 (收录一下供自己学习用的) 字 ...