PERPALIN 可以考虑最后的状态可以是两个非常长而且相同的前缀和后缀中间再加一小段,然后就是不断缩小区间至出解

CHEFHPAL 发现当字符集大于等于3的时候abc循环一定是没有大于1的回文子串的,现在考虑字符集为2的情况,我是打表发现的,1-8可以暴力做,大于等于9的部分答案都可以做到4,只要abaabb循环就好了

CSUBQ 答案其实就是没有大于R的区间个数-没有大于等于L的区间个数,可以建两个线段树分别维护,询问就是全1的区间个数,就可以做了

SEGPROD 其实这是个小技巧,我在knowledge里有写

我贴贴代码在下面:

PERPALIN:

const int N=1e5+11;
char s[N];
int n;
int solve(int n,int p) {
while(n > 3 && p != 1 && n != p) {
if(n<p) {
if(p%n) return -1;
else n=p;
}
if(n%p) return -1;
int t=(n&1);
n/=2,n%=p,n=2*n+t;
}
if(p<3 || (n&&n<3) || n%p) return -1;
if(p%2) {
rep(i,1,p/2)s[i]='a';
s[p/2+1]='b';
rep(i,p/2+2,p)s[i]='a';
} else {
rep(i,1,p/2) s[i]='a';
s[p/2]=s[p/2+1]='b';
rep(i,p/2+2,p)s[i]='a';
}
s[p+1]=0;
return p;
}
int main(){
int T=rd();
while(T--){
int n=rd(),p=rd();
int t=solve(n,p);
if(t==1 || t==-1) puts("impossible");
else {
rep(i,1,n/t) printf("%s",s+1);
putchar('\n');
}
}
}

CHEFHPAL:

const char s[]="abcdefghijklmnopqrstuvwxyz233333";
const char t[]="abaabb";
const string q[]={"","a","ab","abb","aabb","aaabb","aaabbb","aaababb","aaababbb"};
int main() {
int T=rd();
while(T--) {
int n=rd(),K=rd();
if(K==1) {
printf("%d ",n);
rep(i,1,n)putchar('a');
putchar('\n');
} else if(K>2) {
printf("1 ");
rep(i,1,n)putchar(s[(i-1)%K]);
putchar('\n');
} else {
if(n<=8) {
int a=(n<=4)?(n<=2?1:2):3;
printf("%d ",a);
cout<<q[n]<<endl;
} else {
printf("4 ");
rep(i,1,n) {
putchar(t[(i-1)%6]);
}
putchar('\n');
}
}
}
}

CSUBQ:

const int N=5e5+11;
inline ll calc(int n){return 1LL*n*(n+1)/2;}
struct Info{int l,r;ll tot;};
int n;
struct SegTree{
struct Node{
int l,r,siz;
ll tot;
} t[N<<2];
#define mid (L+R>>1)
#define All 1,1,n
#define lson o<<1,L,mid
#define rson o<<1|1,mid+1,R
void push_up(int o){
t[o].l=t[o<<1].l+(t[o<<1].l==t[o<<1].siz)*t[o<<1|1].l;
t[o].r=t[o<<1|1].r+(t[o<<1|1].r==t[o<<1|1].siz)*t[o<<1].r;
t[o].tot=t[o<<1].tot+t[o<<1|1].tot-calc(t[o<<1].r)-calc(t[o<<1|1].l)+calc(t[o<<1].r+t[o<<1|1].l);
}
void build(int o,int L,int R,int v=1){
Node *x=&t[o];
x->siz=R-L+1;
if(L==R)x->tot=x->l=x->r=v;
else{
build(lson,v),build(rson,v);
push_up(o);
}
}
void modify(int o,int L,int R,int v,int al){
Node *x=&t[o];
if(L==R)x->tot=x->l=x->r=al;
else{
if(v<=mid)modify(lson,v,al);
else modify(rson,v,al);
push_up(o);
}
}
Info query(int o,int L,int R,int l,int r){
if(L==l&&R==r)return (Info){t[o].l,t[o].r,t[o].tot};
else{
if(r<=mid)return query(lson,l,r);
else if(l>mid)return query(rson,l,r);
else{
Info a=query(lson,l,mid),b=query(rson,mid+1,r),c;
c.l=a.l+(a.l==mid-l+1)*b.l,c.r=b.r+(b.r==r-mid)*a.r;
c.tot=a.tot+b.tot-calc(a.r)-calc(b.l)+calc(a.r+b.l);
return c;
}
}
}
inline ll ask(int l,int r){return query(All,l,r).tot;}
inline void upd(int v,int x){modify(All,v,x);}
}s1,s2;
int main(){
#ifdef flukehn
freopen("test.txt","r",stdin);
#endif
n=rd();
int q=rd(),L=rd(),R=rd();
s1.build(All),s2.build(All);
while(q--){
int o=rd(),x=rd(),y=rd();
if(o==1){
s1.upd(x,y<=R),s2.upd(x,y<L);
} else {
// assert(x<=y);
printf("%lld\n",s1.ask(x,y)-s2.ask(x,y));
}
}
}

CC NOV17的更多相关文章

  1. Atitti.dw cc 2015 绿色版本安装总结

    Atitti.dw cc 2015 绿色版本安装总结 1.1. 安装程序无法初始化.请下载adobe Support Advisor检测该问题.1 1.1.1. Adobe Application M ...

  2. 【Hello CC.NET】CC.NET 实现自动化集成

    一.背景 公司的某一金融项目包含 12 个子系统,新需求一般按分支来开发,测完后合并到主干发布.开发团队需要同时维护开发环境.测试环境.模拟环境(主干).目前面临最大的两个问题: 1.子系统太多,每次 ...

  3. 浅谈iptables防SYN Flood攻击和CC攻击

    ------------------------本文为自己实践所总结,概念性的东西不全,这里粗劣提下而已,网上很多,本文主要说下目前较流行的syn洪水攻击和cc攻击------------------ ...

  4. checking for fcc ....no checking for cc .. no

         源码编译,提示缺少gcc cc cl.exe 解决方案:       yum install -y gcc glibc

  5. 编译器 cc、gcc、g++、CC 的区别

    gcc 是GNU Compiler Collection,原名为Gun C语言编译器,因为它原本只能处理C语言,但gcc很快地扩展,包含很多编译器(C.C++.Objective-C.Ada.Fort ...

  6. [CC]区域生长算法——点云分割

    基于CC写的插件,利用PCL中算法实现: void qLxPluginPCL::doRegionGrowing() { assert(m_app); if (!m_app) return; const ...

  7. [CC]点云密度计算

    包括两种计算方法:精确计算和近似计算(思考:local density=单位面积的点数 vs  local density =1/单个点所占的面积) 每种方法可以实现三种模式的点云密度计算,CC里面的 ...

  8. 【日常小记】统计后缀名为.cc、.c、.h的文件数【转】

    转自:http://www.cnblogs.com/skynet/archive/2011/03/29/1998970.html 在项目开发时,有时候想知道源码文件中有多少后缀名为.cc..c..h的 ...

  9. error: command 'cc' failed with exit status 1

    报错: Complete output from command /usr/bin/python -u -c "import setuptools, tokenize;__file__='/ ...

随机推荐

  1. poj1094 恶心题,,每次加边进行判断

    /* 给定一组偏序关系,问最少第几步能确定次序 如果出现环,问第几步出现环 因为要求第几步确定次序或者第几步出现环,所以每次读入一个偏序关系就进行一次拓扑排序 */ #include <iost ...

  2. Sublime Text 3 快捷键总结(拿走)

    以下是个人总结不完全的快捷键总汇,祝愿各位顺利解放自己的鼠标. 选择类 Ctrl+D 选中光标所占的文本,继续操作则会选中下一个相同的文本. Alt+F3 选中文本按下快捷键,即可一次性选择全部的相同 ...

  3. Linux进程管理工具

    Linux进程管理工具 Htop yum install htop 参考帮助: http://blog.csdn.net/skh2015java/article/details/53173896 Li ...

  4. java 解析域名得到host

    // 形如https://www.baidu.com 或 www.baidu.com, 判断这两种情况,并解析前者去掉http头,传入domain host // 方案1:正则表达式 + URI解析方 ...

  5. ExceptionLess的webAPI调用

    引用 <package id="bootstrap" version="3.0.0" targetFramework="net461" ...

  6. [转] 梦里Babel知多少(一)

    平时开发中,经常需要用到ES6/ES7的语法.那么就需要用到Babel来对代码进行转码处理. 之前用Vue比较多,所以以Vue-cli作为参考来分析.  第一张图是几个月前的Vue-cli生成的 第二 ...

  7. maven安装和eclipse集成

    maven作为一个项目构建工具,在开发的过程中很受欢迎,可以帮助管理项目中的bao依赖问题,另外它的很多功能都极大的减少了开发的难度,下面来介绍maven的安装及与eclipse的集成. maven的 ...

  8. ArcGIS 10开发迁移策略(待续)

    1.更改 ESRI.ArcGIS.ADF 程序集 ArcGIS 10 中, ADF 程序集中的功能被分散到不同的程序集中,如果将 ArcGIS 9.3 下 开发的自定义组件迁移到 ArcGIS 10 ...

  9. eclipse启动web应用

    在建好web项目的基础上: (1)配置tomcat服务器 点击window---->Preference----->Server---->Runtime Environment--- ...

  10. Codeforces 356D Bacterial Melee dp

    Bacterial Melee 我们发现所有合法串都是原序列的某个子序列(这个子序列相邻元素相等) 的扩展, 比如子序列为abc, 那么aabbbc, abbbcc 等都是合法串. 所以我们只需要dp ...