摘要:
思路对了,但是不会写。 等差数列长度不是1就是2,所以不是一个字母就是俩字母,一开始写的时候直接枚举两个字母,然后让次数相乘。这样是不对的,比如abaabb,字母ab的个数应该是3+2+2,因该是每一个a后边b的个数然后相加。 正解:维护一个二位数组dp[i][j],表示位置后边,字符j的个数,然后 阅读全文
摘要:
思路对了,但是不会写。 等差数列长度不是1就是2,所以不是一个字母就是俩字母,一开始写的时候直接枚举两个字母,然后让次数相乘。这样是不对的,比如abaabb,字母ab的个数应该是3+2+2,因该是每一个a后边b的个数然后相加。 正解:维护一个二位数组dp[i][j],表示位置后边,字符j的个数,然后 阅读全文
摘要:
题解:注意这里的数组a中的元素,全部都是2的整数幂。然后有二进制可以拼成任意数。只要一堆2的整数幂的和大于x,x也是2的整数幂,那么那一堆2的整数幂一定可以组成x。 思路:位运算,对每一位,如果该位置i是1的话,先考虑从0到该位置的,数组a的和,如果比(1<<i)的话,那么可以拼接,否则的话,需要从 阅读全文
摘要:
记录一次打的最差的一次比赛。(出题人要被一部分的锅,故事背景太没技术含量了) A 水 #include<bits/stdc++.h> using namespace std; int main() { int n,m; cin>>n>>m; string s1; string s2; cin>>s1 阅读全文
摘要:
浮点二分与整数二分有几分不同,首先是while循环上,浮点二分的while循环,循环条件时while(r-l>=esp)。 其中esp是精度,mid=(r+l)/2。。。 r 和 l 移动的方式也不一样,l=mid,使mid增大,r=mid,使mid减小。 即code: while(r-l>=esp 阅读全文
摘要:
A 两种方法,递归和递推 记忆化搜索跑一边就行了 #include<bits/stdc++.h> using namespace std; typedef long long ll; const ll mod=1e9+7; const ll N=100; ll dp[N][N]; char arr[ 阅读全文
摘要:
A题 签到 B题 统计1的个数与6的个数,当6的个数-1的个数>=1时,1的个数就是答案 #include<bits/stdc++.h> using namespace std; int main() { int n; cin>>n; string s; cin>>s; int a1=0,a6=0; 阅读全文
摘要:
恢复内容开始 A honoka和格点三角形 题解:计算几何加容斥。 先固定一个底边长度为1,那么高度一定为2,固定长度为2,高度一定为1,这样计算出来的好三角形的个数为 (m-1)*m*(n-2)*2+(m-2)*m*(n-1)*2+(n-1)*n*(m-2)*2+(n-2)*n*(m-1)*2。 阅读全文
摘要:
菜到家了,题意都读不懂。 题目大意: 总共有n个人和n个数字 n个人拍成一队,n个数字也是有顺序的 你排在第m个位置 按照顺序的每个人可以拿走这个序列中的第一个数字或者最后一个数字 你可以在所有人操作开始前说服最多k个人 让他们固定拿这个序列的第一个或者是最后一个数字 问你在所有可能的情况中可以拿到 阅读全文
摘要:
1 G - Greg and Array CodeForces - 296C 差分+线段树 2 欧拉函数与中国剩余定理 3 Obtain The String CodeForces - 1295C binary_search+思维 4 V - Infinite Prefixes CodeForces 阅读全文
摘要:
题目大意:输入n,m,k。n个数,m个区间更新标记为1~m。n次操作,每次操作有两个数x,y表示执行第x~y个区间更新。 题解:通过差分来表示某个区间更新操作执行的次数。然后用线段树来更新区间。 #include<bits/stdc++.h> using namespace std; const i 阅读全文
|