cf D. Xenia and Hamming】的更多相关文章

http://codeforces.com/contest/357/problem/D 题意:给你两个数n和m,表示两个字符串的循环次数,然后给出两个字符串,求出其相同位置字符不同的个数. 先求出两个字符串长度的最大公约数和最小公倍数,然后求出在最小公倍数范围内的不同字符的个数,后面的和前面的一样,最终的个数也就求出了. #include <cstdio> #include <cstring> #include <algorithm> #define LL __int6…
题目链接: B. Xenia and Hamming 题意: 要求找到复制后的两个字符串中不同样的字符 思路: 子问题: 在两串长度是最大公倍数的情况下, 求出一个串在还有一个串中反复字符的个数 CODE: #include <iostream> #include<stdio.h> #include<string> #include<string.h> using namespace std; #define M 1000006 int com[M][26]…
先上题目: D. Xenia and Hamming time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Xenia is an amateur programmer. Today on the IT lesson she learned about the Hamming distance. The Hamming distanc…
这题目一看很牛逼,其实非常easy.求求最小公倍数,最大公约数,均摊复杂度其实就是O(n). /* 356B */ #include <iostream> #include <string> #include <map> #include <queue> #include <set> #include <stack> #include <vector> #include <deque> #include <…
Xenia and Colorful Gems 题意 给出三个数组,在每个数组中选择一个数字x,y,z,,使得\((x-y)^2+(y-z)^2+(x-z)^2\)最小. 思路 我们假设x<=y<=z 枚举所有的数作为y时,可以取得的最小值. 具体实现:使用vectorvec[4]存三个数组里的数字. 定义一个数组arr[]={1,2,3},对它进行全排列,每次枚举vec[arr[2]]里的元素作为y,vec[arr[1]]里的元素作为x,vec[arr[3]]里的元素作为z. x取第一个&l…
题目大意: n(为三的倍数)个数的一个序列(每个数均不大于7),找出a,b,c a能被b整除,b能被c整除,序列中的每个数都被用到. 1 2 3 4 5 6 7 只有 1 2 4 1 2 6 1 3 6 才能满足. 设他们分别有 x,y,z个 #include<stdio.h> #include<string.h> #include<algorithm> #include<map> using namespace std; ]; map<int ,in…
http://codeforces.com/contest/339/problem/C #include <cstdio> #include <cstring> #include <algorithm> using namespace std; ][][]; ]; ]; int m; void dfs(int i,int j,int k) { ) return ; dfs(i-,k-j,dp[i][j][k]); printf("%d ",k); }…
比赛的时候不知道怎么写... 太弱了. 看了别人的代码,觉得这个是个经典的知识点吧. gcd的巧妙运用 自己想的时候苦苦思考怎么用dp求解. 无奈字符串太长而想不出好的算法. 其实在把a和b字符串都分成以gcd(a,b)长度为单位的字符串时. 设为la=a/gcd(a,b) ,lb=b/gcd(a,b) . 明显可以知道的是gcd(la,lb)==1, 所以la与lb长度的字符串要分别拼接lb和la次才能拼成两个相等的串. 这样就有了解法. for(int i=0;i<lena;i++) dpa…
https://www.codechef.com/DEC17/problems/CHEFHAM #include<cstdio> #include<cstring> #include<iostream> using namespace std; #define N 100001 int a[N],b[N]; ]; int num1[N],num2[N]; void read(int &x) { x=; char c=getchar(); while(!isdig…
LINK:Xenia and Colorful Gems 考试的时候没想到一个很好的做法. 赛后也有一个想法. 可以考虑答案的样子 x,y,z 可以发现 一共有 x<=y<=z,z<=y<=z,y<=x<=z... 6种情况 考虑 y<=x<=z 观察这个形式 枚举x 发现y在<=x中显然取较大的那个更优 证明的话 x不变 在z不变的情况 y在符合条件的情况下自然 越小越不优 再讨论z越大的问题 再讨论y z一个变小一个变大的情况 综上可以发现 y z…