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__='/ ...
随机推荐
- 小学生都看得懂的C语言入门(2): 判别 循环的一些应用实例
1.bool 类型 定义bool类型之前需要导入#include <stdbool.h> #include <stdio.h> #include <stdbool.h&g ...
- bzoj 1495
这是一道...卡了我一个月的树形dp... 我真是太弱了... 其实仔细想想,这题的核心思路并不是特别复杂,但是的确存在不小的难度 作为一个看过全网基本所有题解+标程才弄明白这题到底怎么回事的蒟蒻,我 ...
- 2017-2018-2 20165314实验二《Java面向对象程序设计》实验报告
实验报告封面 实验一 实验要求 参考 http://www.cnblogs.com/rocedu/p/6371315.html#SECUNITTEST 完成单元测试的学习提交最后三个JUnit测试用例 ...
- C++ StrCat()
关于StrCat function,参考:https://msdn.microsoft.com/en-us/library/windows/desktop/bb759925(v=vs.85).aspx ...
- MySQL查看库表的大小
MySQL数据库空间使用情况查询 如果想知道MySQL数据库中每个表占用的空间.表记录的行数的话,可以打开MySQL的 information_schema 数据库.在该库中有一个 TABLES 表, ...
- 【回顾】html链接、头部
1.HTML 链接 HTML 使用超级链接与网络上的另一个文档相连.几乎可以在所有的网页中找到链接.点击链接可以从一张页面跳转到另一张页面. HTML 超链接(链接) HTML使用标签 <a&g ...
- 使用impala操作kudu之创建kudu表(内部表和外部表)
依次启动HDFS.mysql.hive.kudu.impala 登录impala的shell控制端: Impala-shell 1:使用该impala-shell命令启动Impala Shell .默 ...
- Docker技术底层架构剖析
[Docker 底层技术] docker底层的 2 个核心技术分别是 Namespaces 和 Control groups 在操作系统中,网络配置,进程,用户,IPC(进程之间的调用)等信息之间的 ...
- selenium_webdriver(python)控制浏览器滚动条
调过JS脚本控制 #coding=utf-8 from selenium import webdriver import time #访问百度 driver=webdriver.Firefox() d ...
- siege压力测试工具安装和介绍
Siege是linux下的一个web系统的压力测试工具,支持多链接,支持get和post请求,可以对web系统进行多并发下持续请求的压力测试. 安装 Siege #wget http://www.jo ...