传送门 思路简单不知为何调试了很久. 显然要么分成n个(所有字符相同),要么分成1个(原字符串无循环节),要么分成两个(有长度至少为2的循环节). 一开始以为可以直接hash搞定. 后来wa了几次之后发现可以轻松举出反例于是弃了hash. kmp大法好啊,判完循环节之后直接枚举两个子串的断点判是不是前缀与后缀同时满足条件就行了. 代码: #include<bits/stdc++.h> #define N 500005 #define mod 1000000007 using namespace…
传送门 感觉自己搜索能力退化了,这种弱智搜索写了整整5min,这样下去比赛会凉的. 看来得多练练题了. 代码: #include<bits/stdc++.h> #define ll long long using namespace std; ll x,ans=0; int n,num[15]; inline void dfs(int pos,ll sum){ if(pos==n+1){ans+=sum;return;} ll tmp=0; for(int i=pos;i<=n;++i)…
传送门 考虑每次摆石头都会消去最外层的一个连续颜色串. 所以只用统计一下有多少段颜色即可. 代码: #include<bits/stdc++.h> using namespace std; char s[100005]; int n,cnt=0; int main(){ scanf("%s",s+1),n=strlen(s+1); for(int i=2;i<=n;++i)if(s[i]!=s[i-1])++cnt; cout<<cnt; return 0…
传送门 数论好题啊. 首先对于b<=sqrt(n)b<=sqrt(n)b<=sqrt(n)的情况直接枚举b判断一下就行了. 下面谈一谈如何解决b>sqrt(n)b>sqrt(n)b>sqrt(n)的情况. 如果b>sqrt(n)b>sqrt(n)b>sqrt(n) 显然有: nnn modmodmod bbb +++ n/b=sn/b=sn/b=s nnn modmodmod bbb +++ b∗(n/b)=sb*(n/b)=sb∗(n/b)=s 这里…
传送门 昨晚打比赛的时候不是很机智啊. 这道题贪心就能过了. 我们可以发现一个明显的结论,每次选的垃圾的距离从大到小排序之后,每个距离对答案的贡献的系数是5,5,7,9,11-也就是最远的是5,其余都是2*rank+1. 这样就可以根据每次选几个垃圾来贪心. 代码: #include<bits/stdc++.h> #define ll long long #define N 200005 using namespace std; inline int read(){ int ans=0; ch…
传送门 数论基础题. 对于第一种情况用快速幂,第二种用exgcdexgcdexgcd,第三种用bsgsbsgsbsgs 于是自己瞎yyyyyy了一个bsgsbsgsbsgs的板子(不知道是不是数据水了没卡如果有找出错的希望指正谢谢) 下面谈谈我对这个方法的理解. 实际上跟网上说的差不多. 要解ax≡bmod&ThinSpace;&ThinSpace;pa^x\equiv b\mod pax≡bmodp 相当于令p=k∗A+B,0≤B<pp=k*A+B,0\le B<pp=k∗A…
Travel 题目背景 SOURCE:NOIP2015-SHY4 题目描述 小 A 要进行一次旅行.这回他要在序号为 1 到 n 的 n 个城市之间旅行.这 n 个城市之间共有 m 条连接两个城市的单行公路,对于第 i 条公路的风景有一个评分 ai.小 A 有一个要求:挑选旅行路线时经过某条路时看到的风景比上一条经过的公路的风景评分更高.小 A 想看到尽可能多的风景,请你告诉他他能找到的最长的满足他要求旅行路线有多长.(每条公路长度视为1,可以重复经过一个城市) 输入格式 第一行为两个整数数 n…
传送门 题意简述:大家在数轴上生活,公司在 s. 班车送所有人回家,有 n 个住处,第 i 个位置在 xi,居住了 pi 的人. 保证 xi 互不相同. 大家⼀起投票向前还是向后,如果票数相同就固定向数轴负方向,每个⼈是自私的,希望自己尽早回家. (但是注意,虽然是自私的,并不⼀定投自己家的方向) 到家了必须下车(因为自私) 问大家都做最优决策的情况下,最后⼀个回家的人需要多久到家? 车速为 1. this is an easy problem. 事实上,这题我们应该倒着思考,对于最后的两队人:…
1.给你一棵树,让你修任意多条点不相交的铁路(每条铁路都是一根链),定义一个点的代价为它到根节点的路径中不在铁路上的边数,求一种设计方案代价最大的点最小. 铁路点不相交与 每个点连出去的铁路条数 $\le 2$ 等价. $f(i,1/0)$表示点$i$与父亲有无铁路相连时的最小答案. 然后应该是随便做吧…… 2.同上,求代价最大点最小的方案数. 把答案加入dp的一维,让dp改为维护在某点为某种答案时的方案数.…
传送门 如果有n==m的条件就是卡特兰数. 但现在n不一定等于m. 我们可以考虑用求卡特兰数一样的方法来求答案. 我们知道有一种求卡特兰数的方法是转到二维平面求答案. 这道题就可以这样做. 我们将这个序列映射到二维平面上. 相当于从(0,0)(0,0)(0,0)出发,每次只能向右上方或者向右下方走对应着选1/0,最后应该停在(n+m,n−m)(n+m,n-m)(n+m,n−m). 但这样会出现非法状态. 如何排除? 我们发现如果出现非法状态一定会穿过直线y=−1y=-1y=−1,这样我们把图像关…