比赛记录:Codeforces Round 940 (Div. 2) and CodeCraft-23 A~E

传送门:CF

[前题提要]:感觉这场题目其实都很经典.遗憾的是赛时C题答案统计看成了不同的下棋的方案数,然后以为刚开始不能放不是一种答案(直接特判输出了0),卡了一场比赛.幸好最后15min险过CD,不然掉大分了


A. Stickogon

难点在于读懂题意.
读懂题意之后不难发现每根木棒都形成三角形是最优的.所以最终答案就是所有数字除3的贡献总和.

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define root 1,n,1
#define ls (rt<<1)
#define rs (rt<<1|1)
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
inline ll read() {ll x=0,w=1;char ch=getchar();for(;ch>'9'||ch<'0';ch=getchar()) if(ch=='-') w=-1;for(;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0';return x*w;
}
inline void print(__int128 x){if(x<0) {putchar('-');x=-x;}if(x>9) print(x/10);putchar(x%10+'0');
}
#define maxn 1000000
const double eps=1e-8;
#define	int_INF 0x3f3f3f3f
#define ll_INF 0x3f3f3f3f3f3f3f3f
int a[maxn];
int main() {int T=read();while(T--) {int n=read();for(int i=1;i<=n;i++) {int num=read();a[num]++;}int ans=0;for(int i=1;i<=100;i++) {ans+=a[i]/3;}cout<<ans<<endl;for(int i=1;i<=100;i++) {a[i]=0;}}return 0;
}

B. A BIT of a Construction

构造题.
刚开始我的想法是给每一个数都先分配一个1(不同位置),然后将剩下来的数字再分配一下.但是想了想这中想法似乎不是很好实现.想到B题一般都是小清新题.所以开始手玩找规律.
考虑这样构造,找到 k k k二进制位中第一个 1 1 1,位置是 i i i,然后第一个数字就是 2 i − 1 2^i-1 2i1,第二个数字就是 k − ( 2 i − 1 ) k-(2^i-1) k(2i1),剩余数字都为0.下面来证明一下这种构造方法的正确性.

我们会发现如果 k k k的所有二进制位都是1,此时我们的总贡献是就是 k k k的二进制位数.并且我们会发现, k k k的最大贡献也只能是它的二进制位数,不可能比它还大(不然总和就大于k了).
如果 k k k的所有二进制位有0,此时我们的构造贡献是 k k k的二进制位数-1.此时我们会发现, k k k的最大贡献不可能是它的二进制位数(不然此时总和就比 k k k大了),所以此时我们的贡献依旧是最优的.

证毕.

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define root 1,n,1
#define ls (rt<<1)
#define rs (rt<<1|1)
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
inline ll read() {ll x=0,w=1;char ch=getchar();for(;ch>'9'||ch<'0';ch=getchar()) if(ch=='-') w=-1;for(;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0';return x*w;
}
inline void print(__int128 x){if(x<0) {putchar('-');x=-x;}if(x>9) print(x/10);putchar(x%10+'0');
}
#define maxn 1000000
const double eps=1e-8;
#define	int_INF 0x3f3f3f3f
#define ll_INF 0x3f3f3f3f3f3f3f3f
int a[maxn];
int main() {int T=read();while(T--) {int n=read();int k=read();if(n==1) {cout<<k<<endl;continue;}int pos=-1;for(int i=30;i>=0;i--) {if(k&(1<<i)) {pos=(1<<i);break;}}cout<<pos-1<<" "<<k-(pos-1)<<" ";for(int i=3;i<=n;i++) {cout<<0<<" ";}cout<<endl;}return 0;
}

C. How Does the Rook Move?

经典递推.
一看到取模.不难想到计数dp.所以考虑如何从一个大问题转化为一个小问题.手玩一下后会发现当我们随便选取一些点之后,我们的大正方形被切割了,但是此时我们的贡献依旧是我们将切割的部分合并起来的正方形的贡献.也就是如何分割并不会影响我们的剩余贡献.并且我们会发现我们选取一个正对角线上的点,我们剩余正方形大小-1;选取一个不在正对角线上的点,我们剩余正方形大小-2.
考虑设 d p [ i ] dp[i] dp[i]表示边长为 i i i的正方形在没有任意初始选点的情况下的最终不同情况数.那么设初始选在正对角线上的点的个数为cnt1,其他选点为cnt2.那么根据上述推论,我们最终的答案就是 d p [ n − c n t 1 − 2 ∗ c n t 2 ] dp[n-cnt1-2*cnt2] dp[ncnt12cnt2].显然的,现在我们的问题就变成了如何预处理dp数组.
在这里插入图片描述
以4为例,我们只需要枚举上述几个打钩的点作为我们刚开始的起点即可.为什么呢,因为你发现假设你刚开始选其他点作为起点,最后的所有情况其实和上述是重复的.为什么会出现这种情况呢,其实细想一下就会发现因为对于其他点来说,那些点和我们上述打钩的点中一定存在一个点是互不干扰的,也就是此时我们选取这个点,和先选取打钩的其中的一个点对最终情况的贡献是相等的(如果感觉讲的不是很清晰,可以自己手画一下).
所以我们就不难得出最终的递推公式了.

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define root 1,n,1
#define ls (rt<<1)
#define rs (rt<<1|1)
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
inline ll read() {ll x=0,w=1;char ch=getchar();for(;ch>'9'||ch<'0';ch=getchar()) if(ch=='-') w=-1;for(;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0';return x*w;
}
inline void print(__int128 x){if(x<0) {putchar('-');x=-x;}if(x>9) print(x/10);putchar(x%10+'0');
}
#define maxn 1000000
#define int long long
const int mod=1e9+7;
const double eps=1e-8;
#define	int_INF 0x3f3f3f3f
#define ll_INF 0x3f3f3f3f3f3f3f3f
struct Node{int r,c;
}node[maxn];
int dp[maxn];
signed main() {int T=read();while(T--) {int n=read();int k=read();int cnt=0;for(int i=1;i<=k;i++) {node[i].r=read();node[i].c=read();	if(node[i].r==node[i].c) {cnt++;}}dp[0]=1;dp[1]=1;for(int i=2;i<=n;i++) {dp[i]=(dp[i-1]+(i-1)*2%mod*dp[i-2]%mod)%mod;dp[i]%=mod;}if(n-cnt-2*(k-cnt)==0) {//可以不特判,我就是这个位置特判为0,然后卡了一整场cout<<1<<endl;}else {cout<<dp[n-cnt-2*(k-cnt)]<<endl;		}}return 0;
}

D. A BIT of an Inequality

我最喜欢位运算啦
考虑化简一下题目给的优美式子,即 f ( x , z ) f(x,z) f(x,z)^ y > f ( x , z ) y>f(x,z) y>f(x,z)的点对个数.那么显然区间异或和,我们可以使用前缀异或和快速求出.并且这种点对问题,经典的 t r i c k trick trick就是枚举中间数.所以我们考虑枚举 y y y.

考虑对于 y y y,它的贡献是什么.什么时候我们的 x x x,异或一下 y y y自己会变大.考虑拆位考虑,我们会发现 y y y当前位如果是0,对于x来说并不会产生影响.而如果 y y y当前为位1,是会产生影响的.那么我们考虑从高位往低位进行考虑,设 i i i y y y二进制位高位第一个 1 1 1的位置.那么我们此时的贡献就是当前位为 0 0 0的区间异或和的个数(这个我们之后再处理).此时会出现一个错误想法:我们会想到y后面还有假设还有一个位置j为1,我们考虑继续计算它的贡献,但是此时我们又会发现i和j的贡献可能会发生重复(我当时就被这个错误想法给卡了好久,当时感觉要容斥了).但是事实上上述的想法是不需要考虑的,因为假设我们会枚举到后续的j位置,因为我们还是从高位往低位枚举的,所以需要我们的前缀不小才行.但是我们的i位置已经是1了,此时区间异或和如果是1,那么此时从1->0,已经是前缀小了,就不需要继续考虑后续位置了.而如果区间异或和当前位是0,我们此时已经是前缀大了,也不需要考虑后续位置.所以我们只要考虑第一个1即可.

那么我们现在来考虑如何解决区间异或和贡献问题.可以考虑使用前缀和/后缀和解决.可以使用 l c n t [ i ] [ j ] lcnt[i][j] lcnt[i][j]来记录前缀j位为1的数的个数.使用 r c n t [ i ] [ j ] rcnt[i][j] rcnt[i][j]来记录后缀j位为1的个数.那么对于y来说,贡献就是前缀1的个数乘上后缀1的个数加上前缀0的个数乘上后缀0的个数.唯一需要注意的是因为是区间异或和,我们要包括住y这个位置,所以lcnt需要是y-1的前缀和,而rcnt是y之后的后缀和,并且还需要考虑0的位置

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define root 1,n,1
#define ls (rt<<1)
#define rs (rt<<1|1)
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
inline ll read() {ll x=0,w=1;char ch=getchar();for(;ch>'9'||ch<'0';ch=getchar()) if(ch=='-') w=-1;for(;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0';return x*w;
}
inline void print(__int128 x){if(x<0) {putchar('-');x=-x;}if(x>9) print(x/10);putchar(x%10+'0');
}
#define maxn 100010
#define int long long
const double eps=1e-8;
#define	int_INF 0x3f3f3f3f
#define ll_INF 0x3f3f3f3f3f3f3f3f
int a[maxn];int sum[maxn];int lcnt[maxn][31];
int rcnt[maxn][31];
signed main() {int T=read();while(T--) {int n=read();for(int i=1;i<=n;i++) {a[i]=read();sum[i]=sum[i-1]^a[i];}for(int i=0;i<=n;i++) {int temp=sum[i];int state=0;for(int j=0;j<=30;j++) {if(i-1>=0) {lcnt[i][j]=lcnt[i-1][j];}if(temp&(1<<j)) {lcnt[i][j]+=1;}}}for(int i=n;i>=0;i--) {int temp=sum[i];int state=0;for(int j=0;j<=30;j++) {rcnt[i][j]=rcnt[i+1][j];if(temp&(1<<j)) {rcnt[i][j]+=1;}}}int ans=0;for(int i=1;i<=n;i++) {for(int j=30;j>=0;j--) {if(a[i]&(1<<j)) {ans+=lcnt[i-1][j]*rcnt[i][j];ans+=(i-lcnt[i-1][j])*(n-i+1-rcnt[i][j]);break;}}}cout<<ans<<endl;//clearfor(int i=0;i<=n+1;i++) {for(int j=0;j<=30;j++) {lcnt[i][j]=rcnt[i][j]=0;}}}return 0;
}

E. Carousel of Combinations

数数题.是 w i l s o n wilson wilson定理的应用.
对于 w i l s o n wilson wilson定理,请看这里,本人觉得讲的挺好,证明也很清晰严谨.
这道题,我刚开始没看到模数是会变的…然后自己搞出了 ( ∑ ∑ c ( i , j ) ) m o d ( 1 e 9 + 7 ) (\sum\sum c(i,j))mod(1e9+7) (∑∑c(i,j))mod(1e9+7)的解法(可以在 n l o g n nlogn nlogn时间内求出一个 n n n的答案).然后开敲.然后就发现有T个n,然后发现解决不了,然后就自闭了,然后就发现模数是 j j j.当然有兴趣的也可以想想这个"错题",我感觉也挺有意思(感觉比原题更加的数数题).

因为模数为 j j j,所以基本上我们是没办法枚举顺序了,留给我们的似乎只有化简原本的式子.先考虑计算一下 c ( i , j ) c(i,j) c(i,j),为了不和组合数冲突,我们将其换成 f ( i , j ) f(i,j) f(i,j),下文的C为组合数,运用一点点的组合数知识,我们不难发现 f ( i , j ) = C ( i , j ) ∗ j ! j f(i,j)=\frac{C(i,j)*j!}{j} f(i,j)=jC(i,j)j!.

简单解释一下为什么是这个式子,这是一个循环排列的问题.考虑 P ( i ) P(i) P(i)为直线排列的个数, Q ( i ) Q(i) Q(i)为圆排列的个数,那么对于每一个圆排列,我们会发现他都对应着 i i i个直线排列(考虑把每一个数字作为开头).所以 P ( i ) = Q ( i ) ∗ i P(i)=Q(i)*i P(i)=Q(i)i.所以 Q ( i ) = P ( i ) i Q(i)=\frac{P(i)}{i} Q(i)=iP(i).(上述证明其实不是很严谨,还需要证明不同的圆排列生成的直线排列都各不相同,但是这个过于显然且不易叙述,所以此处就不在赘述了,留给读者(可以考虑一个数字的相邻数不同从而来证明)).

所以此时我们的问题变成了 ∑ ∑ C ( i , j ) ∗ ( j − 1 ) ! \sum \sum C(i,j)*(j-1)! ∑∑C(i,j)(j1)!,稍微化简一下, ∑ ∑ i ! j ∗ ( i − j ) ! m o d j \sum \sum \frac{i!}{j*(i-j)!}mod\;j ∑∑j(ij)!i!modj.此时我们需要亿点点的观察能力.我们会发现其实是一个 i i i j j j次下降次幂的形式除上一个 j j j.我们需要发现 i i i j j j次下降次幂其实是恰好包含了0~j-1所有mod j的余数的数字.也就是说其中一定存在一个数是 j j j的倍数,设其为 k k k,那么显然的,我们就可以将我们的 j j j除掉,剩下来 k j \frac{k}{j} jk,剩余的数字显然模 j j j之后的贡献为 ( j − 1 ) ! (j-1)! (j1)!.我们现在考虑 k j \frac{k}{j} jk等于多少,我们会发现他就等于 ⌊ i j ⌋ \lfloor \frac{i}{j} \rfloor ji(这个可以通过分类 i i i是否是j的剩余系的开头来证明(也就是分类 i i i j j j之后的余数是否是0),鉴于篇幅原因,此处就不在赘述了).那么此时我们的贡献就变成了: ∑ ∑ ⌊ i j ⌋ ( j − 1 ) ! m o d j \sum \sum \lfloor \frac{i}{j} \rfloor(j-1)!\;mod\;j ∑∑ji(j1)!modj.此时还不够,因为模数的原因,阶乘没办法预处理.但是此时我们就可以祭出我们的 w i l s o n wilson wilson定理了. w i l s o n wilson wilson定理告诉我们对于任意的质数 p p p,都满足 ( p − 1 ) ! ≡ p − 1 m o d p (p-1)!\equiv p-1\;mod\;p (p1)!p1modp,对于非质数,除4以外,都是0,特别的,4的时候答案是2.所以我们可以得出 ∑ ∑ ⌊ i j ⌋ ( j − 1 ) m o d j [ j ∈ p r i m e ] \sum \sum \lfloor \frac{i}{j} \rfloor (j-1)\;mod\;j[j\in prime] ∑∑ji(j1)modj[jprime] ∑ ⌊ i 4 ⌋ ∗ 2 m o d 4 \sum \lfloor \frac{i}{4} \rfloor *2\;mod\;4 4i2mod4

这是一个经典的 t r i c k trick trick.我们设 a [ i ] a[i] a[i] ∑ j = 1 i f ( i , j ) \sum_{j=1}^i f(i,j) j=1if(i,j)的总贡献.考虑先求出 a [ i ] a[i] a[i],我们可以枚举 g = ⌊ i j ⌋ g=\lfloor \frac{i}{j} \rfloor g=ji,考虑高斯函数的经典展开式 g ≤ i j < g + 1 g\leq\frac{i}{j}< g+1 gji<g+1,我们可以得到 g ∗ j ≤ i < ( g + 1 ) ∗ j g*j\leq i <(g+1)*j gji<(g+1)j,并且我们会发现此时的贡献就是 g ∗ ( j − 1 ) g*(j-1) g(j1),我们再枚举 j j j,这样我们的贡献就求出来了.使用差分数组维护一下区间修改即可.但是别忘了 4 4 4的情况,我们需要单独将其补上.还有就是此时我们只是求出了 a [ i ] a[i] a[i],题目要求我们的是前缀和,所以我们再进行一次前缀和即可解决.

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define root 1,n,1
#define ls (rt<<1)
#define rs (rt<<1|1)
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
inline ll read() {ll x=0,w=1;char ch=getchar();for(;ch>'9'||ch<'0';ch=getchar()) if(ch=='-') w=-1;for(;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0';return x*w;
}
inline void print(__int128 x){if(x<0) {putchar('-');x=-x;}if(x>9) print(x/10);putchar(x%10+'0');
}
#define maxn 1000010
#define int long long
const int mod=1e9+7;
const double eps=1e-8;
#define	int_INF 0x3f3f3f3f
#define ll_INF 0x3f3f3f3f3f3f3f3f
int vis[maxn],prime[maxn],cnt=0,mp[maxn];
void init(int limit=1e6) {for(int i=2;i<=limit;i++) {if(!vis[i]) prime[++cnt]=i,mp[i]=1;for(int j=1;j<=cnt;j++) {if(i*prime[j]>limit) break;vis[i*prime[j]]=1;if(i%prime[j]==0) break;}}
}
int sum[maxn];
signed main() {init();for(int j=2;j<=1e6;j++) {if(mp[j]==0) continue;for(int k=1;k*j<=1e6;k++) {int l=k*j,r=min((int)1e6,(k+1)*j-1);sum[l]+=(j-1)*k%j;sum[r+1]-=(j-1)*k%j;}}for(int i=1;i<=1e6;i++) {sum[i]+=sum[i-1];sum[i]%=mod;}for(int i=1;i<=1e6;i++) {sum[i]+=2*(i/4)%4;sum[i]%=mod;}for(int i=1;i<=1e6;i++) {sum[i]+=sum[i-1];sum[i]%=mod;}int T=read();while(T--) {int n=read();cout<<sum[n]<<endl;}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/2789.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Git--原理与使用

目录 一、课程目标二、初始Git三、安装Git3.1 Linux-centos 四、Git的基本操作4.1 创建Git本地仓库 五、配置Git六、认识工作区、暂存区、版本库七、添加文件八、查看.git九、修改文件十、版本回退十一、撤销修改11.1 情况一&#xff1a;对于工作区的代码&#xff0c;还有add11…

阿斯达年代记三强争霸加速器用什么好 超好用的免费加速器

阿斯达年代记&#xff1a;三强争霸的核心玩法围绕着阿斯达大陆上的权力斗争&#xff0c;玩家将投身于三大势力——阿斯达联邦、亚高同盟及边缘叛军之间错综复杂的竞争之中。每个阵营都有其独特的背景故事、目标和战略&#xff0c;玩家的选择不仅影响个人的游戏进程&#xff0c;…

【IC设计】奇数分频与偶数分频 电路设计(含讲解、RTL代码、Testbench代码)

文章目录 原理分析实现和仿真偶数分频的电路RTL代码偶数分频的电路Testbench代码偶数分频的电路仿真波形占空比为50%的三分频电路RTL代码占空比为50%的三分频电路Testbench代码占空比为50%的三分频电路仿真波形 参考资料 原理分析 分频电路是将给定clk时钟信号频率降低为div_c…

【STM32+HAL+Proteus】系列学习教程---串口USART(DMA 方式)定长,不定长收发。

实现目标 1、利用UART实现上位机PC与下位机开发板之间的数据通信 2、学会STM32CubeMX软件关于UART的DMA模式配置 3、具体目标&#xff1a;1、实现串口定长收发数据通信&#xff1b;2、串口不定长收发数据通信。 一、DMA简介 1、什么是DMA? DMA&#xff08;Direct Memory …

多级嵌套对象数组:根据最里层id找出它所属的每层父级,适用于树形数据格式

文章目录 需求分析 需求 已知一个树形格式数据如下&#xff1a; // 示例数据 const data [{"id": "1","parentId": null,"children": [{"id": "1.1","parentId": "1","children"…

2024土木工程、城市规划与交通运输国际会议(ICCEUPT2024)

2024土木工程、城市规划与交通运输国际会议(ICCEUPT2024) 会议简介 我们诚挚邀请您参加2024年国际土木工程、城市规划和交通会议&#xff08;ICCEUPT2024&#xff09;。本次大会将在北京隆重举行&#xff0c;旨在搭建交流合作平台&#xff0c;汇聚行业精英&#xff0c;共同…

uniapp开发微信小程序图片太大处理

一、图片太大 压缩图片如果使用的蓝湖可以使用压缩&#xff08;看你小程序使用的图片是否有清晰度要求&#xff09; 没有使用蓝湖的可以使用压缩图片&#xff1a;在线缩小图片大小&#xff08;免费&#xff09;该链接压缩压缩后如果还是大的话查看图片的尺寸是否太大&am…

社科大与美国杜兰大学金融管理硕士——成为自己的光,独立又明亮

随着全球化的发展&#xff0c;金融管理成为了全球范围内备受瞩目的领域。无论是企业还是国家&#xff0c;都需要专业的金融管理人才来推动经济发展。在这样的背景下&#xff0c;社科大与美国杜兰大学联合推出的金融管理硕士项目备受关注。你想知道金融管理硕士项目的意义和价值…

求臻医学MRD产品斩获2023年度肿瘤标志物年度十大创新技术产品奖

2024年4月20日&#xff0c;中国肿瘤标志物学术大会开幕式暨名家讲坛在南京隆重召开! 会议期间&#xff0c;中国抗癌协会肿瘤标志专业委员会联合中国抗癌协会肿瘤临床检验与伴随诊断专业委员会、中国抗癌协会肿瘤基因诊断专业委员等共同发布“2023 年度肿瘤标志物创新技术产品”…

gps路径压缩算法

公司的gps点位特别多,导致数据存储以及查询都会造成一定的压力. 所以我们需要使用gps路径压缩算法 我调研了两种: k-means 和 Douglas-Peucker k-means 压缩的底层原理是: 自定义簇的数量,假设是100个,那么就会计算所有gps点,把最相近的点,放在一个簇里,以此类推,计算出100个…

适合普通人的黄金投资品种有哪些?

黄金一直以来都是投资者眼中的避险资产&#xff0c;无论是经济波动还是通货膨胀&#xff0c;它总能保持其独特的价值。对于普通人而言&#xff0c;投资黄金似乎是一件遥不可及的事情&#xff0c;但其实只要选对品种&#xff0c;普通投资者也可以轻松参与其中。在当前市场上&…

初学python记录:力扣2385. 感染二叉树需要的总时间

题目&#xff1a; 给你一棵二叉树的根节点 root &#xff0c;二叉树中节点的值 互不相同 。另给你一个整数 start 。在第 0 分钟&#xff0c;感染 将会从值为 start 的节点开始爆发。 每分钟&#xff0c;如果节点满足以下全部条件&#xff0c;就会被感染&#xff1a; 节点此…

[GXYCTF2019]BabyUpload-BUUTF

题&#xff1a; 步骤&#xff08;先上传木马&#xff0c;在上传.htaccess&#xff09; 准备工作 他过滤了<? ,ph等 准备&#xff1a;一句话木马&#xff0c;.htaccess文件 .htaccess SetHandler application/x-httpd-php //解析为php文件 muma1.jpg<script languag…

【文件IO】 文件系统的操作 | 文件类型 | File的构造和方法 | 字节流 | 字符流 | InputStream | OutStream

文章目录 [toc] 文件IO一、文件的概念文件系统文件路径&#xff1a;文件类型 二、文件操作1.文件系统的操作&#xff1a;File的构造和方法创建文件删除文件等线程结束后删除文件列出目录内容创建目录重命名 2.文件内容的操作&#xff1a;1.字节流&#xff1a;对应二进制文件Inp…

数睿通2.0版本升级:探索数据血缘的奥秘

引言 数睿通 2.0 迎来了 4 月份的更新&#xff0c;该版本更新了许多用户期望的数据血缘模块&#xff0c;把原来外链跳转 neo4j 页面改为自研页面&#xff0c;方便后期的二次开发完善&#xff0c;此外&#xff0c;新版本摒弃了 neo4j 的血缘数据存储方案&#xff0c;一来是因为…

哪些软件可以监控电脑屏幕?值得推荐的六款电脑屏幕监控软件

在当今科技日新月异的时代&#xff0c;电脑屏幕监控软件逐渐成为了企业和个人用户必备的工具。 这些软件可以帮助我们实时监控电脑屏幕&#xff0c;保护数据安全&#xff0c;提高工作效率。 以下是一些值得推荐的电脑屏幕监控软件及其功能和优点&#xff1a; 1&#xff0c;域智…

开源贡献代码之​探索一下Cython

探索一下Cython 本篇文章将会围绕最近给Apache提的一个feature为背景&#xff0c;展开讲讲Cython遇到的问题&#xff0c;以及尝试自己从0写一个库出来&#xff0c;代码也已经放星球了&#xff0c;感兴趣的同学可以去下载学习。 0.背景 最近在给apache arrow提的一个feature因为…

以生命健康为中心的物联网旅居养老运营平台

随着科技的飞速发展和人口老龄化的日益加剧&#xff0c;养老问题逐渐成为社会关注的焦点。传统的养老模式已经难以满足现代老年人的多元化需求&#xff0c;因此&#xff0c;构建一个以生命健康为中心的物联网旅居养老运营平台显得尤为重要。 以生命健康为中心的物联网旅居养老运…

线上旧衣回收小程序,隐藏的蓝海回收市场

随着生活水平的提高&#xff0c;人们对衣服的要求逐渐增加&#xff0c;衣服的更新也越来越快&#xff0c;成为了一个消耗品&#xff0c;这时旧衣服便成为了一个新的商业发展模式。旧衣回收门槛低、投入少&#xff0c;适合普通人进行创业&#xff0c;因此&#xff0c;旧衣回收行…

推荐收藏的五款上网行为管理软件

在选择上网行为监控软件的时候需要考虑这几个因素&#xff1a;市场占有率、价格、是否试用、服务商实力等&#xff0c;以下介绍的这几个软件就是从这几个方面出发&#xff0c;为大家总结的优秀软件。 安企神&#xff1a; 国内企业级信息安全解决方案提供商&#xff0c;其上网行…