day3上午
来源:互联网 发布:奥尼尔各赛季数据 编辑:程序博客网 时间:2024/05/01 21:54
t1
点点星空是一张N*M的棋盘,左下角有颗星星。尤和千每次可以将星星向
右边、右上、上边移动一格。尤和千轮流移动,尤先手,问尤是否必胜?
模拟一下n&1&&m&1
#include<cstdio>int n,m,t;int main (){ scanf("%d",&t); while(t--){ scanf("%d%d",&n,&m); if(n&1&&m&1) printf("Chito\n"); else printf("Yuri\n"); }}
t2
战场上有N个数,两两异或可以得到N×N−1/2
个数,求这些数中前K大的数的和
暴力60
#include<cstdio>#include<cmath>#include<ctime>#include<cstring>#include<queue>#include<algorithm>using namespace std;int n,k;long long a[199999],tot,cnt[1024],f,ans;long long s[1999990];bool cmp(long long a,long long b){ return a>b;}int main(){ //freopen("war.in","r",stdin); //freopen("war.out","w",stdout); scanf("%d%d",&n,&k); for(int i=1;i<=n;i++) {scanf("%lld",&a[i]); if(a[i]>1023) f=1; else cnt[a[i]]++; } if(!f){ for(int i=0;i<=1023;i++) for(int j=i+1;j<=1023;j++) s[i^j]+=cnt[i]*cnt[j]; for(int i=1023;i>=1;i--){ if(s[i]&&s[i]<k) ans+=i*s[i],k-=s[i]; else if(s[i]) ans=(ans+1ll*i*k)%1000000007,k=0; } printf("%lld",ans%1000000007); return 0; } for(int i=1;i<=n;i++) for(int j=1;j<i;j++) s[++tot]=1ll*a[i]^a[j]; sort(s+1,s+tot+1,cmp); for(int i=1;i<=k;i++) ans=(1ll*ans+s[i])%1000000007; printf("%lld",ans%1000000007);}
t3
N个数,M次操作,每次询问区间第K大,或者给区间加上一个数
线段树维护前十大值,简单的模板。。。
#include<cstdio>#include<cmath>#include<ctime>#include<cstring>#include<queue>#include<algorithm>using namespace std;struct st{ int z[11],add; st operator +(const st &b){ st ans;int tot=1,tot2=1; for(int i=1;i<=10;i++) if(z[tot]>b.z[tot2]) ans.z[i]=z[tot++]; else ans.z[i]=b.z[tot2++]; ans.add=0; return ans; }}t[410999];void built(int o,int l,int r){ if(l==r) {scanf("%d",&t[o].z[1]); return ; } int mid=(l+r)>>1; built(o<<1,l,mid); built(o<<1|1,mid+1,r); t[o]=t[o<<1]+t[o<<1|1];}void pushdown(int o){ if(t[o].add){ t[o<<1].add+=t[o].add; t[o<<1|1].add+=t[o].add; for(int i=1;i<=10;i++) if(t[o<<1].z[i]) t[o<<1].z[i]+=t[o].add; for(int i=1;i<=10;i++) if(t[o<<1|1].z[i]) t[o<<1|1].z[i]+=t[o].add; t[o].add=0; }}st query(int o,int l,int r,int ql,int qr){ if(l>qr||r<ql) { st tmp; tmp.add=0; for(int i=1;i<=10;i++) tmp.z[i]=0; return tmp; } if(l>=ql&&r<=qr) { return t[o]; } pushdown(o); int mid=(l+r)>>1; return query(o<<1,l,mid,ql,qr)+query(o<<1|1,mid+1,r,ql,qr);}void add(int o,int l,int r,int ql,int qr,int ins){ if(l>qr||r<ql) return ; if(l>=ql&&r<=qr) { for(int i=1;i<=10;i++) if(t[o].z[i]) t[o].z[i]+=ins; t[o].add+=ins; return ; } pushdown(o); int mid=(l+r)>>1; add(o<<1,l,mid,ql,qr,ins);add(o<<1|1,mid+1,r,ql,qr,ins); t[o]=t[o<<1]+t[o<<1|1];}int n,m;int main(){ freopen("noname.in","r",stdin); freopen("noname.out","w",stdout); scanf("%d%d",&n,&m); built(1,1,n); while(m--){ int opt,l,r,x; scanf("%d%d%d%d",&opt,&l,&r,&x); if(opt==1) add(1,1,n,l,r,x); else { if(r-l+1<x) printf("-1\n"); else printf("%d\n",query(1,1,n,l,r).z[x]); } } }
阅读全文
1 0
- day3上午
- day3上午模拟赛
- 国庆清北刷题冲刺班 Day3 上午
- day3
- DAY3
- DAY3
- day3
- day3
- day3
- day3
- Day3
- day3
- day3
- Day3
- DAY3
- Day3
- DAY3
- day3
- 线性代数之二:行列式
- activiti工作流框架初次发布就遇到乱码问题
- Java基础-多线程-①线程的创建和启动
- JQ处理删除弹出模态框
- 机器学习系列笔记(五)
- day3上午
- Swift
- 二值图像连通域标记
- 背包问题的代码
- iPhone上关于相机拍照的图片反转90度的问题
- WordPress版微信小程序开发系列(二):安装使用问答
- Linux下查看软、硬raid信息的方法
- 最长上升子序列(模板)
- RASPBERRY PI 3 MODEL B 安装使用