HR# 5题解
T1 我傻了
前20个数暴力开桶记录,后面的每次暴力统计。
#include<bits/stdc++.h>
#define R register int
using namespace std;
namespace Luitaryi {
int n,ans;
int vis[40010];
int c[30];
inline void main() {
cin>>n;
while(n--) {
R op,x; cin>>op>>x;
if(op==1) {
for(R i=1;i<=20;++i) if(x%i==0) ++c[i];
++vis[x];
} else {
if(x<=20) ans^=c[x];
else { R sum=0;
for(R i=x;i<=40000;i+=x) sum+=vis[i];
cerr<<sum<<endl;
ans^=sum;
}
}
} cout<<ans<<endl;
}
} signed main() {Luitaryi::main(); return 0;}
md 后来发现直接 \(\sqrt n\)
T2 我又傻了
一眼淀粉质搞他。。。然后搞了一会。。
#include<bits/stdc++.h>
#define ll long long
#define R register int
using namespace std;
namespace Luitaryi {
inline int g() { R x=0,f=1;
register char ch; while(!isdigit(ch=getchar())) f=ch=='-'?-1:f;
do x=x*10+(ch^48); while(isdigit(ch=getchar())); return x*f;
}
const int N=300010,Inf=1e+9;
int n,m,cnt,sum,rt,tot; bool vis[N];
int vr[N<<1],nxt[N<<1],fir[N],w[N<<1],d[N],mx[N],sz[N],buf[N],c[N];
ll cursum,cursz,totsz,totsum,ans;
unordered_map<int,ll> mmp,mem;
inline void add(int u,int v,int ww) {
vr[++cnt]=v,nxt[cnt]=fir[u],w[cnt]=ww,fir[u]=cnt;
vr[++cnt]=u,nxt[cnt]=fir[v],w[cnt]=ww,fir[v]=cnt;
}
inline void getsz(int u,int fa) {
sz[u]=1,mx[u]=0; for(R i=fir[u];i;i=nxt[i]) { R v=vr[i];
if(vis[v]||v==fa) continue;
getsz(v,u); sz[u]+=sz[v];
mx[u]=max(mx[u],sz[v]);
} mx[u]=max(mx[u],sum-sz[u]);
if(mx[u]<mx[rt]) rt=u;
}
inline void getdis(int u,int fa,int C) { cursum+=d[u],++cursz;// cout<<"de"<<' '<<u<<' '<<d[u]<<endl;
for(R i=fir[u];i;i=nxt[i]) { R v=vr[i];
if(vis[v]||v==fa||w[i]==C) continue;
d[v]=d[u]+c[v]; getdis(v,u,w[i]);
}
}
inline void solve(int u,int fa) { tot=0; //cout<<"begin"<<' '<<u<<endl;
vis[u]=true; totsz=1,totsum=c[u];
for(R i=fir[u];i;i=nxt[i]) { R v=vr[i];
if(vis[v]||v==fa) continue;
d[v]=c[v]; getdis(v,u,w[i]);
//cout<<v<<' '<<cursum<<' '<<cursz<<' '<<totsum<<' '<<totsz<<endl;
ans+=cursum*(totsz-mem[w[i]])+(totsum-mmp[w[i]])*cursz,
totsum+=cursum+cursz*c[u],totsz+=cursz,mem[w[i]]+=cursz,mmp[w[i]]+=cursum+cursz*c[u];
//cout<<ans<<' '<<v<<' '<<cursum<<' '<<cursz<<' '<<totsum<<' '<<totsz<<' '<<mmp[w[i]]<<' '<<mem[w[i]]<<endl;
buf[++tot]=w[i]; cursum=0,cursz=0;
} while(tot) mem[buf[tot]]=0,mmp[buf[tot]]=0,--tot;
totsz=0,totsum=0;
for(R i=fir[u];i;i=nxt[i]) { R v=vr[i];
if(vis[v]||v==fa) continue;
sum=sz[v]; rt=0,mx[rt]=Inf;
getsz(v,u),getsz(rt,-1); solve(rt,u);
}
}
inline void main() {
n=g(); for(R i=1;i<=n;++i) c[i]=g();
for(R i=1,u,v,w;i<n;++i) u=g(),v=g(),w=g(),add(u,v,w);
sum=n,rt=0,mx[rt]=Inf;
getsz(1,-1),getsz(rt,-1); solve(rt,-1);
printf("%lld\n",ans);
}
} 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
#include<bits/stdc++.h>
#define ll long long
#define R register int
using namespace std;
namespace Luitaryi {
inline ll g() { register ll x=0,f=1;
register char ch; while(!isdigit(ch=getchar())) f=ch=='-'?-1:f;
do x=x*10+(ch^48); while(isdigit(ch=getchar())); return x*f;
} const int N=200000,M=1000000007;
int n,m,r,c,ans; ll s;
int Inv[N+10],fac[N+10],rfac[N+10];
inline int C(int n,int m) {
return 1ll*fac[n]*rfac[m]%M*rfac[n-m]%M;
}
inline void main() {
n=g(),m=g(),r=g(),c=g(),s=g(); Inv[1]=1;
for(R i=2;i<=N;++i) Inv[i]=M-1ll*M/i*Inv[M%i]%M;
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;
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;
for(R i=r&1,lim=(ll)min(r,n);i<=lim;i+=2) if(n!=2*i) {
if((s-1ll*i*m)%(n-2*i)) continue;
R j=(s-1ll*i*m)/(n-2*i);
if(j>c||(c-j)&1||j<0) continue;
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;
} else {
if(1ll*i*m!=s) continue; register ll tot=0;
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;
ans=(ans+1ll*C(n,i)*C(n+(r-i)/2-1,(r-i)/2)%M*tot%M)%M;
} printf("%d\n",ans);
}
} signed main() {Luitaryi::main(); return 0;}
T4 我又双叒叕傻了
交互题少读了一行结果T爆
考后怒压行。。
#include<bits/stdc++.h>
#define R register int
using namespace std;
inline void g(int& x){x=0;char ch;while(!isdigit(ch=getchar()));do x=x*10+ch-48;while(isdigit(ch=getchar()));}
int main() {R x;while(1) puts("move_left"),fflush(stdout),g(x),puts("reach_dest"),fflush(stdout),g(x);}
海星,该拿的(除了T4)都拿了。。。还是要稳
HR# 5题解的更多相关文章
- HR#7 题解
T1 签到题 #include<bits/stdc++.h> #define R register int using namespace std; inline int g() { R ...
- HR#4 题解
既然考这么差就来写题啦OTZ T1 猜结论?猜nm! 一直到考试结束都没猜出来=.=我就好奇别人如何猜出来的 我们来说DP(from ZBK) 设\(dp[i][j]\)表示胜or负 那我们来看一下代 ...
- JSOI Round 2题解
强行一波题解骗一个访问量好了... http://blog.csdn.net/yanqval/article/details/51457302 http://absi2011.is-programme ...
- 【AtCoder】AGC023 A-F题解
可以说是第一场AGC了,做了三道题之后还有30min,杠了一下D题发现杠不出来,三题滚粗了 rating起步1300+,感觉还是很菜... 只有三题水平显然以后还会疯狂--啊(CF的惨痛经历) 改题的 ...
- CODEVS——T 3736 【HR】万花丛中2
http://codevs.cn/problem/3736/ 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description ...
- 3736 【HR】万花丛中2
3736 [HR]万花丛中2 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description HR神犇在成功攻略ZX后,花心 ...
- [NOIP补坑计划]NOIP2017 题解&做题心得
终于做完了…… 场上预计得分:?(省一分数线:295) 由于看过部分题解所以没有预计得分qwq 题解: D1T1 小凯的疑惑 题面 震惊!一道小学奥数题竟难倒无数高中考生! 欢迎大家以各种姿势*和谐* ...
- 题解 P3693 【琪露诺的冰雪小屋】
知识点: 模拟 , 信仰 原题面 大 型 车 万 众 自 裁 现 场 分析题意: 操作: ICE_BARRAGE R C D S R:行 , C:列, D:方向 , S:强度 在(R,C) 向 D 射 ...
- Vulnhub靶场题解
Vulnhub简介 Vulnhub是一个提供各种漏洞环境的靶场平台,供安全爱好者学习渗透使用,大部分环境是做好的虚拟机镜像文件,镜像预先设计了多种漏洞,需要使用VMware或者VirtualBox运行 ...
随机推荐
- SAS学习笔记37 宏程序中parmbuff选项
该选项用于指定宏可以接受可变参数列表,而且参数值保存在SYSPBUFF宏变量中.parmbuff的参数价值,其实就是每次执行宏程序时,可以指定不同数量的参数值,这些宏参数被保存在&syspbu ...
- java——多态例题
class A { public String show(D obj) { return ("A and D"); } public String show(A obj) { re ...
- hdu 4857 反向拓扑问题
尤其要注意拓扑的分层问题 不难理解 就是不怎么好想到 拓扑的思路这里就不累述了 #include <iostream> #include <cstdio> #include & ...
- (九)SpringBoot之错误处理
一.错误处理方法 1.Spring Boot 将所有的错误默认映射到/error, 实现ErrorController 2.添加自定义的错误页面 二.Spring Boot 将所有的错误默认映射到 ...
- Node在Sublime Text3下环境搭建(node02)
一.下载sublime Text的nodejs插件 https://github.com/tanepiper/SublimeText-Nodejs 二.下载后解压 直接改名为nodejs 放到 Pre ...
- asp.net类似于js中的setTimeOut()的函数作用?
asp.net类似于js中的setTimeOut()的函数作用? 插入这行即可,定时2秒,再运行下一步: System.Threading.Thread.Sleep(); 加个随机数 Random r ...
- centos系统基本操作命令
系统相关命令 查看系统版本: cat /etc/centos-release 系统更新: yum update 用户相关命令 增加用户: useradd [用户名] 设置密码:password ...
- JS/js是什么?
JavaScript 是一种专为与网页交互而设计的脚本语言,由下列三个不同的部分组成: ECMAScript,由 ECMA-262 定义,提供核心语言功能; 文档对象模型(DOM),提供访问和操作网页 ...
- 与app交互因异步造成的坑记录
一.问题产生背景: 在app内跳转到H5页面,初始页面获取用户等各种信息,前端除了可以获取链接上的参数去请求接口,接着进行数据的缓存等,也可以去获取app写入window的数据,然后进行其他的操作.公 ...
- Redis二进制安全概念
二进制安全是指,在传输数据时,保证二进制数据的信息安全,也就是不被篡改.破译等,如果被攻击,能够及时检测出来. 二进制安全包含了密码学的一些东西,比如加解密.签名等. 举个例子,你把数据1111000 ...