Codeforces Round #207 (Div. 2) D. Xenia and Hamming
来源:互联网 发布:json.parse出错 编辑:程序博客网 时间:2024/05/18 00:48
这道题拖得也蛮久的。现在过了,有点感动。
这种题如果你智商180,当场可以YY出结论,如果你做题经验较丰富
猜出结论也不是什么太难的事。
分析下几组数据,看下面3类数列吧
第一类
123123123123123
123451234512345
第二类
1212
1234
第三类
123456123456123456
123456789123456789
发现了什么呢?
很多时候,我们固定一个点,然后就会发现
设上面数列不重复个数为a
下面为b
上面每个点对应了下面的b/gcd(a,b)个点
大悟?这不就是a*b/gcd(a,b)=lcm吗?
然后就是编码,首先容易想到一个O(a*b)
很明显题目要求一个O(n)的。。。具体见代码
/* author:ray007great version:1.0*/#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>#include<cstdlib>#include<cmath>#include<vector>#include<set>#include<map>#include<string>#include<time.h>#include<queue>using namespace std;typedef long long ll;//c++#pragma comment(linker, "/STACK:102400000,102400000")// g++//int size = 256 << 20; // 256MB//char *p = (char*)malloc(size) + size;//__asm__("movl %0, %esp\n" :: "r"(p) );#define sf(a) scanf("%d",&a)#define sfs(a) scanf("%s",a)#define sfI(a) scanf("%I64d",&a)#define pf(a) printf("%d\n",a)#define pfI(a) printf("%I64d\n",a)#define rep(i,a,b) for(int i=(a);i<=(b);i++)#define repd(i,a,b) for(int i=(a);i>=(b);i--)#define rep1(i,a,b) for(int i=(a);i<(b);i++)#define clr(a) memset(a,0,sizeof(a))#define clr1(a) memset(a,-1,sizeof(a))#define pfk printf("fuck\n")/* define *//* clock *///clock_t start, finish;//start = clock();//finish = clock();//double duration = (double)(finish - start)/CLOCKS_PER_SEC;//printf( "%.10f seconds\n", duration );/* clock *//* data *//* data */int gcd(int a,int b){ return b==0?a:gcd(b,a%b);}string str1,str2;//int d1[2000000][30];int d2[1000010][30];int main(){ ll n,m; cin>>n>>m; cin>>str1; cin>>str2; int len1=str1.length(); int len2=str2.length(); int g=gcd(len1,len2); ll lcm=(ll)len1/g*len2; //for(int i=0;str1[i];i++){ // d1[i%g][str1[i]-'a']++; //} for(int i=0;str2[i];i++){ d2[i%g][str2[i]-'a']++; } ll ans=0; for(int i=0;str1[i];i++){ int id=str1[i]-'a'; for(int j=0;j<26;j++){ if(j==id) continue; ans+=d2[i%g][j]; } } ans*=n*len1/lcm; cout<<ans<<endl; return 0;}
- Codeforces Round #207 (Div. 2) D. Xenia and Hamming
- Codeforces Round #207 (Div. 2) Xenia and Hamming(字符串匹配)
- Codeforces Round #197 (Div. 2) D. Xenia and Bit Operations
- Codeforces Round #197 (Div. 2) D. Xenia and Bit Operations
- Codeforces Round #207 (Div. 1) B. Xenia and Hamming(gcd的运用)
- Codeforces Round #197 (Div. 2) D. Xenia and Bit Operations - 线段树
- Codeforces Round #197 (Div. 2) D. Xenia and Bit Operations(容器做法)
- Codeforces Round #197 (Div. 2) -- D. Xenia and Bit Operations(线段树)
- Codeforces Round #197 (Div. 2) D. Xenia and Bit Operations(线段树)
- Codeforces Round #197 (Div. 2) C. Xenia and Weights - 搜索
- Codeforces Round #197 (Div. 2) B. Xenia and Ringroad
- Codeforces Round #197 (Div. 2)B. Xenia and Ringroad
- Codeforces Round #197 (Div. 2) c. Xenia and Weights
- Codeforces Round #199 (Div. 2) A. Xenia and Divisors
- Codeforces Round #199 (Div. 2) B. Xenia and Spies
- Codeforces Round #199(Div. 2) B. Xenia and Spies
- [DP] Codeforces Round #197 (Div. 2) C. Xenia and Weights
- Codeforces Round #199 (Div. 2) E. Xenia and Tree
- (10)MATLAB 模式识别
- 不安装oracle客户端,通过plsql远程链接数据库
- archlinux比gentoo的优点
- hdu 3491 Thieves(最小割拆点)
- pongo(英雄会)题解之理想随机数发生器
- Codeforces Round #207 (Div. 2) D. Xenia and Hamming
- Struts逐步学习(3)-struts-config.xml文件解析
- 时间子系统14_全局时间维护
- maven djunit 配置
- Android学习路径图
- 托管代码与非托管代码的区别
- storyboard设置IBOutlet和IBAction
- 调试在64位Debian上编译好的Linux 0.11(一)
- textBox换行问题