T1 我傻了

前20个数暴力开桶记录,后面的每次暴力统计。

  1. #include<bits/stdc++.h>
  2. #define R register int
  3. using namespace std;
  4. namespace Luitaryi {
  5. int n,ans;
  6. int vis[40010];
  7. int c[30];
  8. inline void main() {
  9. cin>>n;
  10. while(n--) {
  11. R op,x; cin>>op>>x;
  12. if(op==1) {
  13. for(R i=1;i<=20;++i) if(x%i==0) ++c[i];
  14. ++vis[x];
  15. } else {
  16. if(x<=20) ans^=c[x];
  17. else { R sum=0;
  18. for(R i=x;i<=40000;i+=x) sum+=vis[i];
  19. cerr<<sum<<endl;
  20. ans^=sum;
  21. }
  22. }
  23. } cout<<ans<<endl;
  24. }
  25. } signed main() {Luitaryi::main(); return 0;}

md 后来发现直接 \(\sqrt n\)

T2 我又傻了

一眼淀粉质搞他。。。然后搞了一会。。

  1. #include<bits/stdc++.h>
  2. #define ll long long
  3. #define R register int
  4. using namespace std;
  5. namespace Luitaryi {
  6. inline int g() { R x=0,f=1;
  7. register char ch; while(!isdigit(ch=getchar())) f=ch=='-'?-1:f;
  8. do x=x*10+(ch^48); while(isdigit(ch=getchar())); return x*f;
  9. }
  10. const int N=300010,Inf=1e+9;
  11. int n,m,cnt,sum,rt,tot; bool vis[N];
  12. int vr[N<<1],nxt[N<<1],fir[N],w[N<<1],d[N],mx[N],sz[N],buf[N],c[N];
  13. ll cursum,cursz,totsz,totsum,ans;
  14. unordered_map<int,ll> mmp,mem;
  15. inline void add(int u,int v,int ww) {
  16. vr[++cnt]=v,nxt[cnt]=fir[u],w[cnt]=ww,fir[u]=cnt;
  17. vr[++cnt]=u,nxt[cnt]=fir[v],w[cnt]=ww,fir[v]=cnt;
  18. }
  19. inline void getsz(int u,int fa) {
  20. sz[u]=1,mx[u]=0; for(R i=fir[u];i;i=nxt[i]) { R v=vr[i];
  21. if(vis[v]||v==fa) continue;
  22. getsz(v,u); sz[u]+=sz[v];
  23. mx[u]=max(mx[u],sz[v]);
  24. } mx[u]=max(mx[u],sum-sz[u]);
  25. if(mx[u]<mx[rt]) rt=u;
  26. }
  27. inline void getdis(int u,int fa,int C) { cursum+=d[u],++cursz;// cout<<"de"<<' '<<u<<' '<<d[u]<<endl;
  28. for(R i=fir[u];i;i=nxt[i]) { R v=vr[i];
  29. if(vis[v]||v==fa||w[i]==C) continue;
  30. d[v]=d[u]+c[v]; getdis(v,u,w[i]);
  31. }
  32. }
  33. inline void solve(int u,int fa) { tot=0; //cout<<"begin"<<' '<<u<<endl;
  34. vis[u]=true; totsz=1,totsum=c[u];
  35. for(R i=fir[u];i;i=nxt[i]) { R v=vr[i];
  36. if(vis[v]||v==fa) continue;
  37. d[v]=c[v]; getdis(v,u,w[i]);
  38. //cout<<v<<' '<<cursum<<' '<<cursz<<' '<<totsum<<' '<<totsz<<endl;
  39. ans+=cursum*(totsz-mem[w[i]])+(totsum-mmp[w[i]])*cursz,
  40. totsum+=cursum+cursz*c[u],totsz+=cursz,mem[w[i]]+=cursz,mmp[w[i]]+=cursum+cursz*c[u];
  41. //cout<<ans<<' '<<v<<' '<<cursum<<' '<<cursz<<' '<<totsum<<' '<<totsz<<' '<<mmp[w[i]]<<' '<<mem[w[i]]<<endl;
  42. buf[++tot]=w[i]; cursum=0,cursz=0;
  43. } while(tot) mem[buf[tot]]=0,mmp[buf[tot]]=0,--tot;
  44. totsz=0,totsum=0;
  45. for(R i=fir[u];i;i=nxt[i]) { R v=vr[i];
  46. if(vis[v]||v==fa) continue;
  47. sum=sz[v]; rt=0,mx[rt]=Inf;
  48. getsz(v,u),getsz(rt,-1); solve(rt,u);
  49. }
  50. }
  51. inline void main() {
  52. n=g(); for(R i=1;i<=n;++i) c[i]=g();
  53. for(R i=1,u,v,w;i<n;++i) u=g(),v=g(),w=g(),add(u,v,w);
  54. sum=n,rt=0,mx[rt]=Inf;
  55. getsz(1,-1),getsz(rt,-1); solve(rt,-1);
  56. printf("%lld\n",ans);
  57. }
  58. } signed main() {Luitaryi::main(); return 0;}

然后就被 L队 的记搜锤了。

T3 唯一没有掉智的题

设有效的行操作 (即两个相同的操作是无效的) 为 \(i\) , 有效的列操作为 \(j\) ;

有 \(i*m+j*n-2*i*j=s\) ,即 \(j=\frac{s-i*m}{n-2*i}\)

剩余次数为 \(r-i\) 和 \(c-j\) ,即我们可以把 \(\frac{r-i}{2}\) 和 \(\frac{c-j}{2}\) 对操作任意分配到每个行或列上。

所以是 \(C(n,i)*C(m,j)*C(n+(r-i)/2-1,(r-i)/2)*C(m+(c-j)/2-1,(c-j)/2)\)

欣喜的以为自己A了

结果一输样例,RE。。。出现了%0的算术错误(雾)

。。。

aaaa

\(n==2*i???\)

那那 \(s==i*m???\)

...

那那列操作系数是0???

???

枚举列???

awsl

  1. #include<bits/stdc++.h>
  2. #define ll long long
  3. #define R register int
  4. using namespace std;
  5. namespace Luitaryi {
  6. inline ll g() { register ll x=0,f=1;
  7. register char ch; while(!isdigit(ch=getchar())) f=ch=='-'?-1:f;
  8. do x=x*10+(ch^48); while(isdigit(ch=getchar())); return x*f;
  9. } const int N=200000,M=1000000007;
  10. int n,m,r,c,ans; ll s;
  11. int Inv[N+10],fac[N+10],rfac[N+10];
  12. inline int C(int n,int m) {
  13. return 1ll*fac[n]*rfac[m]%M*rfac[n-m]%M;
  14. }
  15. inline void main() {
  16. n=g(),m=g(),r=g(),c=g(),s=g(); Inv[1]=1;
  17. for(R i=2;i<=N;++i) Inv[i]=M-1ll*M/i*Inv[M%i]%M;
  18. fac[0]=fac[1]=1; for(R i=2,lim=max(n*2,m*2);i<=lim;++i) fac[i]=1ll*fac[i-1]*i%M;
  19. rfac[0]=rfac[1]=1; for(R i=2,lim=max(n*2,m*2);i<=lim;++i) rfac[i]=1ll*rfac[i-1]*Inv[i]%M;
  20. for(R i=r&1,lim=(ll)min(r,n);i<=lim;i+=2) if(n!=2*i) {
  21. if((s-1ll*i*m)%(n-2*i)) continue;
  22. R j=(s-1ll*i*m)/(n-2*i);
  23. if(j>c||(c-j)&1||j<0) continue;
  24. ans=(ans+1ll*C(n,i)*C(m,j)%M*C(n+(r-i)/2-1,(r-i)/2)%M*C(m+(c-j)/2-1,(c-j)/2)%M)%M;
  25. } else {
  26. if(1ll*i*m!=s) continue; register ll tot=0;
  27. for(R j=c&1,lim=min(r,c);j<=lim;j+=2) tot=(tot+1ll*C(m,j)*C(m+(c-j)/2-1,(c-j)/2)%M)%M;
  28. ans=(ans+1ll*C(n,i)*C(n+(r-i)/2-1,(r-i)/2)%M*tot%M)%M;
  29. } printf("%d\n",ans);
  30. }
  31. } signed main() {Luitaryi::main(); return 0;}

T4 我又双叒叕傻了

交互题少读了一行结果T爆

考后怒压行。。

  1. #include<bits/stdc++.h>
  2. #define R register int
  3. using namespace std;
  4. inline void g(int& x){x=0;char ch;while(!isdigit(ch=getchar()));do x=x*10+ch-48;while(isdigit(ch=getchar()));}
  5. int main() {R x;while(1) puts("move_left"),fflush(stdout),g(x),puts("reach_dest"),fflush(stdout),g(x);}

海星,该拿的(除了T4)都拿了。。。还是要稳

HR# 5题解的更多相关文章

  1. HR#7 题解

    T1 签到题 #include<bits/stdc++.h> #define R register int using namespace std; inline int g() { R ...

  2. HR#4 题解

    既然考这么差就来写题啦OTZ T1 猜结论?猜nm! 一直到考试结束都没猜出来=.=我就好奇别人如何猜出来的 我们来说DP(from ZBK) 设\(dp[i][j]\)表示胜or负 那我们来看一下代 ...

  3. JSOI Round 2题解

    强行一波题解骗一个访问量好了... http://blog.csdn.net/yanqval/article/details/51457302 http://absi2011.is-programme ...

  4. 【AtCoder】AGC023 A-F题解

    可以说是第一场AGC了,做了三道题之后还有30min,杠了一下D题发现杠不出来,三题滚粗了 rating起步1300+,感觉还是很菜... 只有三题水平显然以后还会疯狂--啊(CF的惨痛经历) 改题的 ...

  5. CODEVS——T 3736 【HR】万花丛中2

    http://codevs.cn/problem/3736/  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description ...

  6. 3736 【HR】万花丛中2

    3736 [HR]万花丛中2  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description HR神犇在成功攻略ZX后,花心 ...

  7. [NOIP补坑计划]NOIP2017 题解&做题心得

    终于做完了…… 场上预计得分:?(省一分数线:295) 由于看过部分题解所以没有预计得分qwq 题解: D1T1 小凯的疑惑 题面 震惊!一道小学奥数题竟难倒无数高中考生! 欢迎大家以各种姿势*和谐* ...

  8. 题解 P3693 【琪露诺的冰雪小屋】

    知识点: 模拟 , 信仰 原题面 大 型 车 万 众 自 裁 现 场 分析题意: 操作: ICE_BARRAGE R C D S R:行 , C:列, D:方向 , S:强度 在(R,C) 向 D 射 ...

  9. Vulnhub靶场题解

    Vulnhub简介 Vulnhub是一个提供各种漏洞环境的靶场平台,供安全爱好者学习渗透使用,大部分环境是做好的虚拟机镜像文件,镜像预先设计了多种漏洞,需要使用VMware或者VirtualBox运行 ...

随机推荐

  1. [NOIP普及组2001]最大公约数和最小公倍数问题

    目录 链接 博客链接 题目链接 题目内容 题目描述 格式 输入 输出 数据 样例 输入 输出 说明 题目名称:最大公约数和最小公倍数问题 来源:2001年NOIP普及组 链接 博客链接 CSDN 洛谷 ...

  2. mysql 中表与表之间的关系

    如何找出两张表的对应关系 分析步骤: 1.先找出左表的角度去找 ​ 是否左表的多条记录可以对应右表的一条记录,如果是,则证明左表的一个字段foreign key 右表一个字段 (通常是id) 2.再站 ...

  3. 《统计学习方法》极简笔记P4:朴素贝叶斯公式推导

    <统计学习方法>极简笔记P4:朴素贝叶斯公式推导 朴素贝叶斯基本方法 通过训练数据集 T={(x_1,y_1),(x_2,y_2),(x_N,y_N)...,(x_1,y_1)} 学习联合 ...

  4. 跟我一起学编程—《Scratch编程》第21课:打地鼠

    能够熟练创建并使用变量 能够熟练使用“广播”和侦测指令 能够熟练绘制角色和背景造型 能够熟练使用循环.选择等程序指令 任务描述: 绘制有6个地洞的背景:绘制锤子的两个造型:绘制地鼠的造型. 游戏开始后 ...

  5. ftp-server(对象存储)

    1.背景 在腾讯云弄了一个对象存储,想通过ftp上传照片 说明连接: 腾讯云:https://cloud.tencent.com/document/product/436/7214 GitHub:ht ...

  6. (六)发送、接收SOAP消息(1)

    一.为什么要用soap 原本我们使用web服务都是根据wsdl生成客户端(生成一堆java文件)然后再调用,本章节讲解如何用soap消息来替代这种方式. 二.SOAP消息格式 SOAP(简单对象访问协 ...

  7. Senparc.Weixin+nginx配置之坑 ‘10003 redirect_uri域名与后台不一致’

    微信公众号扫一扫功能提示:10003 redirect_uri域名与后台不一致 Senparc.Weixin组件很好用,但一个坑,不知道这和个是否有关.. 先说明下环境,centos+.net cor ...

  8. 表空间 oracle

    --create table create table table_name ( column1 varchar2(20) not null, column2 number(8) not null, ...

  9. 清空windows系统网络配置

    清空windows系统网络配置 来源  https://www.cnblogs.com/lemon-rain/p/9569990.html 具体描述:qq,微信可用网,但其他不能用. 一.win+r ...

  10. POJ2729 Robocode(离散化与模拟-----提醒曾经爱玩游戏的自己没做出这个

    题目链接 :http://poj.org/problem?id=2729 题目很长,有不少也是废话.类似小时候玩的坦克大战.每个坦克速度为10,炮弹速度为20.子弹出界就消失,坦克出不了界限.相向的子 ...