Start Time : 2021-07-20 12:10:00 End Time : 2021-07-20 17:10:00

1001-Mod, Or and Everything

真正的签到题

题意: 给定一个整数 n。计算 (n mod 1) | (n mod 2) | ... | (n mod (n - 1)) | (n mod n)。(|为"或运算")

由于是或运算,找到最大的数(在n/2和n/2+1中找),得到二进制中最多位数m,结果就是用1填满这些位数,即2^m-1(m为最大数二进制的位数)

#include <iostream>
#include <algorithm>
#include <map>
#include <string>
#include <cstring>
#include <vector>
#include <cmath> #define ri int using namespace std;
typedef int lll;
typedef long long ll; const ll mod=1e9+7;
inline ll gcd(ll a,ll b) {
return (!b)?a:gcd(b,a%b);
}
const ll inf=999999999; ll t;
ll n; ll finds(ll x)
{
ll f=1;
while(f<=x)
{
f=f*2;
}
return f-1;
} int main() {
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0); cin >> t;
while(t--)
{
cin >> n;
if(n==1||n==2) cout << 0 << '\n';
else if(n==3) cout << 1 << '\n';
else
{
ll n1=n/2,n2=n1+1;
n1=n%n1,n2=n%n2;
ll ans=n1 > n2 ? n1 : n2;
cout << finds(ans) << '\n';
}
}
return 0;
}

1005-Minimum spanning tree

题意: 给定 n-1 个点,编号从 2 到 n,两点 a 和 b 之间的边权重为 lcm(a, b)。 请找出它们形成的最小生成树。

简单画成哈斯图就知道规律了,是质数就插在2上,其他插在自己因子上,故质数*2+合数,数据大用线性筛找质数

#include <iostream>
#include <algorithm>
#include <map>
#include <string>
#include <cstring>
#include <vector>
#include <cmath> #define ri int using namespace std;
typedef int lll;
typedef long long ll; const ll mod=1e9+7;
inline ll gcd(ll a,ll b) {
return (!b)?a:gcd(b,a%b);
}
const ll inf=999999999;
const ll N = 10000000+10;
vector<ll> vis(N);
vector<ll> prime(N); ll k=0; void isprime()
{
for(ri i=2;i<N;i++)
{
if(!vis[i]) prime[++k]=i;
for(ri j=1;j<=k&&(i*prime[j]<N);j++)
{
vis[i*prime[j]]=1;
if(!i%prime[j]) break;
}
}
}
ll t;
ll n; int main() {
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0); isprime();
vector<ll> dp(N);
dp[2]=0,dp[3]=6;
ll now=3;
for(ri i=4;i<=N-5;i++)
{
if(prime[now]==i)
{
dp[i]=dp[i-1]+(2*i);
now++;
}
else dp[i]=dp[i-1]+i;
}
cin >> t;
while(t--)
{
cin >> n;
cout << dp[n] << '\n';
}
return 0;
}

1006-Xor sum

题意:

给定一个长度为 n 的整数序列,找出最短的连续子序列,其异或和不小于 k。

如果有多个相同长度的连续子序列,则打印左端点最小的连续子序列。

如果没有连续的子序列,异或和不小于k,就打印“-1”。

第一次做这种XOR序列的题目,记录一下。主要用到 XOR前缀01trie树 两种重要的优化手段

XOR(a[l..r]) = XOR(a[1..r]) xor XOR(a[1..l-1]) ,并且 a=a^b ^ b ,b= a^b ^ a

区间异或和可以转化为区间端点之间的xor ,即找ai,aj(i<j),使ai ^ aj >=k,且min(j-i+1)。

其中01trie树可以在logn复杂度在 某些数 中找到能与 某个数 取最大异或结果那个数

故从右R开始,把1...R-1看成 某些数 ,R看成 某个数 ,找最大的xor结果,如果结果>=k,检查区间长度并更新即可(R从1开始增长就好)

#include<bits/stdc++.h>
#define ri int
using namespace std;
typedef long long lll;
typedef int ll; const ll N=1e5+50;
ll t[N*31+10][2];
ll val[N],a[N];
ll cnt,n,k,T; void _init() //多组输入注意清空树
{
for(ri i=0;i<=cnt;i++)
{
t[i][0]=t[i][1]=val[i]=0;
}
cnt=0;
} void add(ll x,ll pos) //把x插入trie树中,val记录下标
{
ll now=0,y=0;
for(ri i=31;i>=0;i--)
{
y=(x >> i) & 1;
if(!t[now][y]) t[now][y]=++cnt;
now=t[now][y];
}
val[now]=pos;
} ll ask(ll x) //查找最大符合的数
{
ll now=0,y=0;
for(ri i=31;i>=0;i--)
{
y=(x >> i) & 1;
if(t[now][y ^ 1]) now=t[now][y ^ 1];
else now=t[now][y];
}
return val[now]; //同样返回下标
} int main()
{
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0); cin >> T;
while(T--)
{
_init();
cin >> n >> k;
for(ri i=1;i<=n;i++)
{
cin >> a[i];
a[i]^=a[i-1]; //前缀XOR和
}
ll l=-1,r=n+1,len=n+1; for(ri i=1;i<=n;i++) //R从1开始增长即可
{
ll R=i,L=ask(a[i]);
if((a[R]^a[L])>=k) //如果>=k
{
if(R-L<len) len=R-L,r=R,l=L+1; //判断是否需要更新
}
add(a[i],i);
} l==-1 ? cout << l << '\n' : cout << l << ' ' << r << '\n'; //一次都没有更新则不存在
} return 0;
}

1008-Maximal submatrix

题意: 给出一个N * M矩阵,求出最大的列上升子矩阵.

将矩阵化成0-1矩阵,压缩成一维求一维柱状体最大面积,由于怕全为0卡数据,转化后将所有0的变为1即可

#include<bits/stdc++.h>
#define ri int
using namespace std;
typedef long long lll;
typedef int ll; ll n,m; ll a[2005][2005];
ll mp[2005][2005]; int main()
{
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
int t;
cin>>t;
while(t--)
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>a[i][j];
mp[i][j]=(mp[i-1][j]+1)*(a[i][j]>=a[i-1][j]);
if(!mp[i][j]) mp[i][j]=1;
}
} ll stk[3000],tt=0;
ll maxx=0;
for(ri i=1;i<=n;i++)
{
mp[i][m+1]=-1,tt=0;
for(ri j=1;j<=m+1;j++)
{
if(!tt||mp[i][j]>=mp[i][stk[tt]]) stk[++tt]=j;
else
{
ll now=0,top=0;
while(tt&&mp[i][j]<mp[i][stk[tt]])
{
top=stk[tt--];
now=(j-top)*mp[i][top];
maxx=max(now,maxx);
}
stk[++tt]=top;
mp[i][top]=mp[i][j];
}
}
}
cout << maxx << '\n';
} return 0;
}

1009-KD-Graph

签到题是图论还没做出,大大滴有问题(主要是题目都没看)

题目大意:是要我们找到一个集合内所有边的权值小于等于某个数D,剩下的集合权值都大于某个数D,并且整体集合数为K.

思路 :先按照边的权值排序,从小往大合并集合,当集合数达到K个数时,更新D的值,并判断下一个边的权值大小和此时D的大小关系即可。

输入:n(顶点个数),m(边数),k(要求集合个数)

m组:起点x,终点y,权值z

输出:题目中要求的某个数D,若找不到输出“-1”

代码如下:

#include <bits/stdc++.h>
#define ri int typedef int lll;
typedef long long ll;
using namespace std; const ll mod=80112002;
const ll inf=999999999; const ll N=5e5+5; ll n,m,k;
struct dd{
ll x,y,z;
}a[N]; ll t;
bool cmp(dd a,dd b)
{
return a.z<b.z;
} ll p[N];
ll getp(ll x) //集合合并当然是并查集
{
return p[x]==x ? x : p[x]=getp(p[x]);
} int main()
{
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0); cin >> t;
while(t--)
{
cin >> n >> m >> k;
for(ri i=1;i<=n;i++) p[i]=i;
for(ri i=1;i<=m;i++) cin >> a[i].x >> a[i].y >> a[i].z;
if(n==k) //特判
{
cout << 0 << '\n';
continue;
}
sort(a+1,a+1+m,cmp); ll nums=n; //当前集合个数number_set
ll ans=-1;
ll px,py;
for(ri i=1;i<=m;i++)
{
px=getp(a[i].x),py=getp(a[i].y);
if(px==py) continue; //如果本身是同一个集合则不用考虑 if(nums-1==k) //集合数为k时更新
{
ans=a[i].z;
}
else if(nums-1<k) //为k后判断下一条边
{
if(ans>=a[i].z) ans=-1; //找不到D
break;
}
p[px]=py;nums--;
}
if(ans==-1) cout << "-1\n";
else cout << ans << '\n';
}
return 0;
}

2021“MINIEYE杯”(1)的更多相关文章

  1. 2021“MINIEYE杯”中国大学生算法设计超级联赛(8)(1002,1004,1006,1009)

    前言 依旧是白嫖账号,只打了一些题/kk 正题 1002 Buying Snacks 题目大意 \(n\)个物品,每个可以买一次也可以不买,如果买需要选择\(1/2\)块钱的,然后也可以相邻两个一起买 ...

  2. 2021“MINIEYE杯”中国大学生算法设计超级联赛(7)部分题解

    前言 找大佬嫖到个号来划水打比赛了,有的题没写或者不是我写的就不放了. 目前只有:1004,1005,1007,1008,1011 正题 题目链接:https://acm.hdu.edu.cn/con ...

  3. Minieye杯第十五届华中科技大学程序设计邀请赛现场同步赛 I Matrix Again

    Minieye杯第十五届华中科技大学程序设计邀请赛现场同步赛 I Matrix Again https://ac.nowcoder.com/acm/contest/700/I 时间限制:C/C++ 1 ...

  4. 2021羊城杯比赛复现(Crypto)

    bigrsa 题目: from Crypto.Util.number import * from flag import * n1 = 10383529640908175186077053551474 ...

  5. 2021蓝桥杯省赛B组(C/C++)E.路径【最短路DP】

    2021蓝桥杯省赛B组题目(C/C++)E.路径 最短路径, 因为变化情况比较多, 所以开始想的是深搜, 但是太慢了, 跑不出来, 后来就想着优化一下, 有的地方到另一个地方可能会考虑很多遍, 于是考 ...

  6. 2021蓝桥杯省赛C++A组试题E 回路计数 状态压缩DP详细版

    2021蓝桥杯省赛C++A组试题E 回路计数 状态压缩DP 题目描述 蓝桥学院由21栋教学楼组成,教学楼编号1到21.对于两栋教学楼a和b,当a和b互质时,a和b之间有一条走廊直接相连,两个方向皆可通 ...

  7. 2021 羊城杯WriteUP

    比赛感受 题目质量挺不错的,不知道题目会不会上buu有机会复现一下,躺了个三等奖,发下队伍的wp Team BinX from GZHU web Checkin_Go 源码下载下来发现是go语言写的 ...

  8. Minieye杯第十五届华中科技大学程序设计邀请赛网络赛D Grid(简单构造)

    链接:https://ac.nowcoder.com/acm/contest/560/D来源:牛客网 题目描述 Give you a rectangular gird which is h cells ...

  9. H-Modify Minieye杯第十五届华中科技大学程序设计邀请赛现场赛

    题面见 https://ac.nowcoder.com/acm/contest/700#question 题目大意是有n个单词,有k条替换规则(单向替换),每个单词会有一个元音度(单词里元音的个数)和 ...

  10. Minieye杯第十五届华中科技大学程序设计邀请赛网络赛 部分题目

    链接:https://pan.baidu.com/s/12gSzPHEgSNbT5Dl2QqDNpA 提取码:fw39 复制这段内容后打开百度网盘手机App,操作更方便哦 D    Grid #inc ...

随机推荐

  1. 让你的C程序,可以自动更新版本信息

    一.软件管理 稍微上点规模的软件开发往往周期都非常长, 中间会产生很多临时版本, 这些临时版本往往会有各种各样的bug, 由于项目参与的人员众多.水平参差不齐, 软件分支众多.功能复杂, 经常会有各种 ...

  2. 圣诞节快乐,教你用shell脚本实现一颗圣诞树。【小酷炫】

    前言 圣诞节到了! 一口君在这祝各位粉丝朋友圣诞节快乐! 祝各位考研的同学金榜题名! 祝找工作的朋友offer接到爆! 祝各位老板新年大发财源! 在此一口君特地用shell脚本画了一个圣诞树! 先来看 ...

  3. 折腾 Quickwit,Rust 编写的分布式搜索引擎(专为从对象存储中实现亚秒级搜索而设计)

    什么是 Quickwit? Quickwit 是首个能在云端存储上直接执行复杂的搜索与分析查询的引擎,并且具有亚秒级延迟.它借助 Rust 语言和分离计算与存储的架构设计,旨在实现资源高效利用.易于操 ...

  4. WinForm UI 库

    WinForm UI库 HZH_Controls HZHControls是基于.Net Framework4.0原生控件开发完全开源的一套控件,你不需要担心有其他控件或版权问题.提供完整的示例代码,方 ...

  5. 出海浪头之上,共探CDN进化新支力

    CDN技术自问世以来已超过20个年头,在云计算与AI深度融合的大趋势下,各行业实际业务需求已发生巨变,下一代CDN技术又将走向何方?8月16日,"抓住泛娱热趋,打通增长脉络--大浪淘沙之后的 ...

  6. Word在不同电脑排版异常

    Word在不同电脑排版异常 问题描述 今天又有同学向我抱怨用 word 写的论文明明在自己的电脑格式调的好好的,怎么在导师那格式又乱了,害的挨批. 笔者也遇到过该问题,正好趁这次机会简单整理一下. 注 ...

  7. SpringBoot 引入第三方 jar

    SpringBoot 引入第三方 jar 项目结构 -BCJS |--lib |--hsm-talos-1.0.1.jar |--src |--pom.xml step1 : 配置第三方 jar 为依 ...

  8. 一组.NET MAUI绘制的开源控件 - AlohaKit

    前言 今天大姚给大家分享一组.NET MAUI绘制的开源.免费(MIT License)UI控件库:AlohaKit. MAUI介绍 .NET MAUI是一个开源.免费(MIT License)的跨平 ...

  9. 暑假集训CSP提高模拟8

    一看见题目列表就吓晕了,还好我是体育生,后面忘了 唉这场比赛没啥好写的,要不就是太难要不就是太简单要不就是拉出去写在专题里了 A. 基础的生成函数练习题 考虑到只有奇偶性相同才能尝试加二,因此先用加一 ...

  10. Devfreq Bus Dcvs

    一.引言 计算机的世界里,CPU任务分为CPU bound和IO bound.而实际场景下往往是两者混合型任务.针对性能的优化,普遍关注点都在CPU上(不论是CPU的频点和CPU的选核), 往往忽略对 ...