CC NOV17
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的更多相关文章
- Atitti.dw cc 2015 绿色版本安装总结
Atitti.dw cc 2015 绿色版本安装总结 1.1. 安装程序无法初始化.请下载adobe Support Advisor检测该问题.1 1.1.1. Adobe Application M ...
- 【Hello CC.NET】CC.NET 实现自动化集成
一.背景 公司的某一金融项目包含 12 个子系统,新需求一般按分支来开发,测完后合并到主干发布.开发团队需要同时维护开发环境.测试环境.模拟环境(主干).目前面临最大的两个问题: 1.子系统太多,每次 ...
- 浅谈iptables防SYN Flood攻击和CC攻击
------------------------本文为自己实践所总结,概念性的东西不全,这里粗劣提下而已,网上很多,本文主要说下目前较流行的syn洪水攻击和cc攻击------------------ ...
- checking for fcc ....no checking for cc .. no
源码编译,提示缺少gcc cc cl.exe 解决方案: yum install -y gcc glibc
- 编译器 cc、gcc、g++、CC 的区别
gcc 是GNU Compiler Collection,原名为Gun C语言编译器,因为它原本只能处理C语言,但gcc很快地扩展,包含很多编译器(C.C++.Objective-C.Ada.Fort ...
- [CC]区域生长算法——点云分割
基于CC写的插件,利用PCL中算法实现: void qLxPluginPCL::doRegionGrowing() { assert(m_app); if (!m_app) return; const ...
- [CC]点云密度计算
包括两种计算方法:精确计算和近似计算(思考:local density=单位面积的点数 vs local density =1/单个点所占的面积) 每种方法可以实现三种模式的点云密度计算,CC里面的 ...
- 【日常小记】统计后缀名为.cc、.c、.h的文件数【转】
转自:http://www.cnblogs.com/skynet/archive/2011/03/29/1998970.html 在项目开发时,有时候想知道源码文件中有多少后缀名为.cc..c..h的 ...
- error: command 'cc' failed with exit status 1
报错: Complete output from command /usr/bin/python -u -c "import setuptools, tokenize;__file__='/ ...
随机推荐
- Java 输入一组数字,用穷举的方法列出
import java.util.Scanner; public class TestScanner { public static void main(String[] args) { Scanne ...
- AI-CBV写法
AI-CBV写法 CBV固定样式 #url.py from django.conf.urls import url from django.contrib import admin from app0 ...
- java数据
因为曾经干了啥事儿,才印象特别深刻. 将byte存入String的后果 String res = ""; res += (char) 0xc3; byte[] bytes = re ...
- 滴水穿石-01JAVA和C#的区别
排名不分先后,想到哪写到哪 1:数组的定义格式不同 java定义: 方式1: ] ; 方式2: ] ; C#中只有方式1 java有两种,C#只有一种 2:继承的实现关键字不同,同时java中实现接口 ...
- JS脚本计算从某日凌晨开始,经过了多长时间
var a = new Date();//获取现在的时间 var d = Date.parse("Mar 25, 2019");//设定网站建立的时间 var t = a.getT ...
- js中匿名函数和回调函数
匿名函数: 通过这种方式定义的函数:(没有名字的函数) 作用:当它不被赋值给变量单独使用的时候 1.将匿名函数作为参数传递给其他函数 2.定义某个匿名函数来执行某些一次性任务 var f = func ...
- postgresql 10 ssl 双向认证
https://blog.csdn.net/dna911/article/details/82819637
- Java中的IO流总结
Java中的IO流总结 1. 流的继承关系,以及字节流和字符流. 2. 节点流FileOutputStream和FileInputStream和处理流BufferedInputStream和Buffe ...
- Spring MVC基础知识整理➣View与Controller数据交互
概述 Spring MVC是由View—Controller—Model组成,其中View和Controller的数据交互,成为了关注的核心点.MVC中,我们将View中的数据传递到Controlle ...
- mysql 5.6.25编译安装详细步骤
简略步骤: mysql5.6.25编译安装步骤: 下载mysql准备用户和组yum安装依赖解压mysqlcmake编译mysqlmake && make install ----时间约 ...