博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Contest1900 - 2019年6月多校联训a层测试1
阅读量:5166 次
发布时间:2019-06-13

本文共 2565 字,大约阅读时间需要 8 分钟。

 密码:waxadyt

十年OI一场空,不输endl见祖宗

T1

打表找规律

从n>=5开始,就有相邻两个数的差是一个公差为28的等差数列

直接给代码吧

#include
using namespace std;int main(){ int t; scanf("%d",&t); while(t--) { unsigned long long n; scanf("%llu",&n); if(n==0){printf("1\n");continue;} if(n==1){printf("9\n");continue;} if(n==2){printf("41\n");continue;} if(n==3){printf("109\n");continue;} if(n==4){printf("205\n");continue;} if(n==5){printf("325\n");continue;} printf("%llu\n",325+(148+(n-6)*14)*(n-5)); }}
T1

 

T2

dfs裸题

加一个vis

代码

#include
using namespace std;int vis[(1<<11)+1];int a[1001001],n,p;void dfs(int pos){ if(p)return; if(pos==(1<
T2

T3

m<=15

15棵线段树解决问题233

代码

#include
using namespace std;#define ls k<<1#define rs k<<1|1struct tree{ int le,ri,sum,lz,sumc[2];}t[16][50010<<2];int a[1001001][16],n,m,q,c[1001001][16];inline void pushdown(int p,int k){ if(t[p][k].lz==-1)return; t[p][ls].sum=t[p][ls].sumc[t[p][k].lz]; t[p][rs].sum=t[p][rs].sumc[t[p][k].lz]; t[p][ls].lz=t[p][rs].lz=t[p][k].lz; t[p][k].lz=-1;}inline void pushup(int p,int k){ t[p][k].sum=t[p][ls].sum+t[p][rs].sum; t[p][k].sumc[0]=t[p][ls].sumc[0]+t[p][rs].sumc[0]; t[p][k].sumc[1]=t[p][ls].sumc[1]+t[p][rs].sumc[1];}void build(int p,int k,int l,int r){ t[p][k].le=l; t[p][k].ri=r; t[p][k].lz=-1; if(l==r) { t[p][k].sum=c[l][p]==0; t[p][k].sumc[0]=c[l][p]==0; t[p][k].sumc[1]=c[l][p]==1; return; } int mid=l+r>>1; build(p,ls,l,mid); build(p,rs,mid+1,r); pushup(p,k);}void modify(int p,int k,int l,int r,int v){ int le=t[p][k].le; int ri=t[p][k].ri; if(l==le&&r==ri) { t[p][k].sum=t[p][k].sumc[v]; t[p][k].lz=v; return; } pushdown(p,k); int mid=le+ri>>1; if(l>mid)modify(p,rs,l,r,v); else if(mid+1>r)modify(p,ls,l,r,v); else modify(p,ls,l,mid,v),modify(p,rs,mid+1,r,v); pushup(p,k);}inline int get(){ char c=getchar(); while(c!='0'&&c!='1')c=getchar(); return (c-'0');}int main(){ scanf("%d%d%d",&n,&m,&q); for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { c[i][j]=get(); } } for(int i=1;i<=m;i++)build(i,1,1,n); for(int i=1;i<=q;i++) { int x,y,xx,yy,p; scanf("%d%d%d%d%d",&x,&xx,&y,&yy,&p); for(int i=y;i<=yy;i++)modify(i,1,x,xx,p); int ans=0; for(int i=1;i<=m;i++)ans+=t[i][1].sum; printf("%d\n",ans); }}
T3

 

转载于:https://www.cnblogs.com/yanghaokun/p/10987764.html

你可能感兴趣的文章
《Linux内核分析》课程第八周学习总结
查看>>
PHP实现一个简陋的注册登录页面
查看>>
用两个栈实现队列
查看>>
2015最新--浏览器分布图
查看>>
bloom特效
查看>>
R_数据视觉化处理_中阶_05
查看>>
JavaScript的类型自动转换样例集合处
查看>>
最大公约数和最小公倍数问题
查看>>
A. 定义常量以及检测常量
查看>>
[python]socket.listen(backlog)中的backlog含义
查看>>
【《Effective C#》提炼总结】提高Unity中C#代码质量的22条准则
查看>>
详解java类的生命周期
查看>>
centos普通用户添加sudo权限
查看>>
快速搭建微信小程序开发环境
查看>>
[全文下载/试读]补充,上集Ch. 3 -- Panel控件与常用属性,范例:问卷系统,动态产生「子问题」(使用障眼法)...
查看>>
Guava学习笔记:Guava新增集合类型-Multiset
查看>>
根据入栈判断出栈是否合法
查看>>
[Algorithm]查找
查看>>
OC语法6——内存管理之引用计数器(retain,release)
查看>>
.Net学习笔记----2015-07-10(基础复习和练习09)
查看>>