[帝皇杯day 1] [NOIP2018模拟赛]小P的loI(暴力+素筛),【NOIP模拟赛】创世纪(贪心),无聊的数对(线段树)

文章目录

  • T1:小P的lol
    • title
    • solution
    • code
  • T2:创世纪
    • title
    • solution
    • code
  • T3:无聊的数对
    • title
    • solution
    • code

T1:小P的lol

title

在这里插入图片描述
在这里插入图片描述

solution

此题非常水…
先用素数筛,筛出[1,n][1,n][1,n]中的质数
质数越小,倍数的分布就越密集
所以质数一定是从小开始往大的取
然后就是暴力跑,考试的时候我以为暴力会TTT,一直在思考打容斥,幸好最后交的是暴力,嘻嘻~
在这里插入图片描述

code

#include <cstdio>
#define MAXN 10000005
int n, k, cnt, ans;
int prime[MAXN];
bool vis[MAXN], flag[MAXN];void init() {for( int i = 2;i <= n;i ++ ) {if( ! vis[i] ) {vis[i] = 1;prime[++ cnt] = i;}for( int j = 1;j <= cnt && i * prime[j] <= n;j ++ ) {vis[i * prime[j]] = 1;if( i % prime[j] == 0 ) break;}}
}int main() {scanf( "%d %d", &n, &k );init();if( k == n - 1 ) return ! printf( "%d", cnt );for( int i = 1;i <= cnt;i ++ ) {for( int j = prime[i];j <= n;j += prime[i] ) {if( flag[j] == 0 ) {flag[j] = 1;ans ++;if( ans >= k ) return ! printf( "%d", i );}}}return 0;
}

T2:创世纪

title

applepi手里有一本书《创世纪》,里面记录了这样一个故事……

上帝手中有着N 种被称作“世界元素”的东西,现在他要把它们中的一部分投放到一个新的空间中去以建造世界。每种世界元素都可以限制另外一种世界元素,所以说上帝希望所有被投放的世界元素都有至少一个没有被投放的世界元素能够限制它,这样上帝就可以保持对世界的控制。
由于那个著名的有关于上帝能不能制造一块连自己都不能举起的大石头的二律背反命题,我们知道上帝不是万能的,而且不但不是万能的,他甚至有事情需要找你帮忙——上帝希望知道他最多可以投放多少种世界元素,但是他只会O(2^N) 级别的算法。虽然上帝拥有无限多的时间,但是他也是个急性子。你需要帮助上帝解决这个问题。

输入格式
第一行是一个整数N,表示世界元素的数目。
第二行有 N 个整数A1, A2, …, AN。Ai 表示第i 个世界元素能够限制的世界元素的编号。

输出格式
一个整数,表示最多可以投放的世界元素的数目。

样例
样例输入
6
2 3 1 3 6 5
样例输出
3

数据范围与提示
样例说明
选择2、3、5 三个世界元素即可。分别有1、4、6 来限制它们。

数据范围与约定
对于30% 的数据,N≤10。
对于60% 的数据, N≤10^5。
对于 100% 的数据,N≤10^6,1≤Ai≤N,Ai≠i。

solution

贪心
考场上通过找规律我发现了
环的点大小为奇数,产生的贡献是cnt>>1cnt>>1cnt>>1
环的点大小为偶数,产生的贡献还是cnt>>1cnt>>1cnt>>1
在这里插入图片描述
通过输入的要求,可以知道最后图一定是以链+环的形式
先处理链的形式,每两个绑一起产生1的贡献,可以类似拓扑去跑
但是链与环的交接处那个点是在环的时候去产生贡献,不要在链的时候搞
最后跑出环的大小,计算贡献
在这里插入图片描述

code

#include <cstdio>
#define MAXN 1000005
int n, l = 1, r, ans;
int v[MAXN], d[MAXN], st[MAXN];
bool vis[MAXN];int main() {scanf( "%d", &n );for( int i = 1;i <= n;i ++ ) {scanf( "%d", &v[i] );d[v[i]] ++;}for( int i = 1;i <= n;i ++ )if( ! d[i] ) st[++ r] = i;while( l <= r ) {if( ! vis[st[l]] && ! vis[v[st[l]]] ) {ans ++;vis[v[st[l]]] ++;if( -- d[v[v[st[l]]]] == 0 )st[++ r] = v[v[st[l]]];}vis[st[l ++]] = 1;}for( int i = 1;i <= n;i ++ )if( ! vis[i] ) {int cnt = 0, j = i;while( v[j] != i )vis[j] = 1, j = v[j], cnt ++;vis[j] = 1;ans += ( cnt + 1 ) >> 1;}printf( "%d", ans );return 0;
}

T3:无聊的数对

title

在这里插入图片描述
在这里插入图片描述

solution

要求i⊗j=ki\otimes j=kij=kkkk的二进制中1的个数为奇数
此时i,ji,ji,j的要求是一奇一偶
在这里插入图片描述
证明如下:

先温习一下二进制的异或法则
1⊗1=01\otimes1=011=0
0⊗0=00\otimes0=000=0
1⊗0=11\otimes0=110=1


如果i,ji,ji,j二进制的第ppp位不相等,有一个为111,异或后还是111
111的个数奇偶性不改变

如果相等
1)两个都为000,异或为000,也不会对111的奇偶性造成改变
2)两个都为111,那么异或后变成000,个数减掉222,奇偶性没改变
综上,i,ji,ji,j111的奇偶性是永远不会改变的
奇数+奇数=偶数,偶数+偶数=偶数,奇数+偶数=奇数
所以必须要一奇一偶,证明完毕!
在这里插入图片描述
再观l,rl,rl,r十分庞大,已经超出intintint边界
但是不要怕,静态区间求个数之类的题,最喜欢丢线段树上面了
我们就维护一棵线段树,把区间操作丢上去
然后分别统计二进制111为奇数的个数和二进制111为偶数的个数
进行乘法操作,直接用根的信息即可
注意: 被完全覆盖的区间记得打懒标记,因为这个区间被完全包含了,是不会产生新贡献的

这道题其实也就这样吧…
在这里插入图片描述

code

#include <cstdio>
#define ll long long
#define MAXN 100005
int n, cnt, root;
ll l, r;
//odd表示区间[l,r]内二进制中1为奇数的个数
//even表示区间[l,r]内二进制中1为偶数的个数 
ll find( ll x ) {if( x & 1 ) return ( x + 1 ) >> 1;return ( x >> 1 ) + __builtin_parityll( x );
}bool flag[MAXN];
int lson[MAXN << 2], rson[MAXN << 2];
ll odd[MAXN], even[MAXN];void modify( int &t, ll l, ll r, ll L, ll R ) {if( flag[t] ) return;if( ! t ) t = ++ cnt;if( L <= l && r <= R ) {flag[t] = 1;odd[t] = find( r ) - find( l - 1 );even[t] = r - l + 1 - odd[t];return;}ll mid = ( l + r ) >> 1ll;if( L <= mid ) modify( lson[t], l, mid, L, R );if( mid < R ) modify( rson[t], mid + 1, r, L, R );odd[t] = odd[lson[t]] + odd[rson[t]];even[t] = even[lson[t]] + even[rson[t]];
}int main() {scanf( "%d", &n );for( int i = 1;i <= n;i ++ ) {ll l, r;scanf( "%lld %lld", &l, &r );modify( root, 1, ( 1ll << 32 ) - 1, l, r );printf( "%lld\n", odd[1] * even[1] );}return 0;
}

终于时隔多年,我补完了完整的一场狂欢赛!!!
在这里插入图片描述

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

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

相关文章

[2-sat专练]poj 3683,hdu 1814,hdu 1824,hdu 3622,hdu 4115,hdu 4421

文章目录Priest Johns Busiest DaycodePeaceful CommissioncodeLets go homecodeBomb GamecodeEliminate the ConflictcodeBit MagiccodePriest John’s Busiest Day 题目 司仪必须在婚礼开始或结束时出现&#xff0c;考虑把第iii场婚礼拆成两个点 iii&#xff1a;表示司仪在婚…

.NET Core中的一个接口多种实现的依赖注入与动态选择

最近有个需求就是一个抽象仓储层接口方法需要SqlServer以及Oracle两种实现方式&#xff0c;为了灵活我在依赖注入的时候把这两种实现都给注入进了依赖注入容器中&#xff0c;但是在服务调用的时候总是获取到最后注入的那个方法的实现&#xff0c;这时候就在想能不能实现动态的选…

Sightseeing Cows POJ - 3621

题意&#xff1a; L个点&#xff0c;P边的点边带权的有向图&#xff0c;求一个环点权和与边权和比值的最大值。 题解&#xff1a; 01分数规划判负环 详细看这里 还是套用01分数规划模型&#xff0c;点权为value[i],边权为cost[u],一个环为C&#xff0c;问题要求最大化 最…

C# Memory Cache 踩坑记录

背景前些天公司服务器数据库访问量偏高,运维人员收到告警推送,安排我团队小伙伴排查原因.我们发现原来系统定期会跑一个回归测试,该测运行的任务较多,每处理一条任务都会到数据库中取相关数据,高速地回归测试也带来了高频率的数据库读取.解决方案1我们认为每个任务要取的数据大…

[贪心专题]CF549G,CF351E,CF226D,CF1276C,CF1148E,CF798D

文章目录T1&#xff1a;CF1276C Beautiful RectangletitlesolutioncodeT2&#xff1a;CF226D The tabletitlesolutioncodeT3&#xff1a;CF549G Happy LinetitlesolutioncodeT4&#xff1a;CF798D Mike and distributiontitlesolutioncodeT5&#xff1a;CF351E Jeff and Permut…

【数位DP】CF 54C,509C,431D,628D,855E,1245F,95D

这一次有题解了&#xff01;&#xff01;T1&#xff1a;CF54C First Digit LawtitlesolutioncodeT2&#xff1a;CF509C Sums of DigitstitlesolutioncodeT3&#xff1a;CF431D Random TasktitlesolutioncodeT4&#xff1a;CF628D Magic NumberstitlesolutioncodeT5&#xff1a;…

C#如何安全、高效地玩转任何种类的内存之Memory(三)

前言我们都知道&#xff0c;.Net Core是微软推出的一个通用开发平台&#xff0c;它是跨平台和开源的&#xff0c;由一个.NET运行时、一组可重用的框架库、一组SDK工具和语言编译器组成&#xff0c;旨在让.Net developers可以更容易地编写高性能的服务应用程序和基于云的可伸缩服…

.netcore下的微服务、容器、运维、自动化发布

微服务1.1 基本概念1.1.1 什么是微服务&#xff1f;微服务架构是SOA思想某一种具体实现。是一种将单应用程序作为一套小型服务开发的方法&#xff0c;每种应用程序都在其自己的进程中运行&#xff0c;并采用轻量级的通讯机制&#xff08;TCP&#xff09;进行通信。这…

[选拔赛1]花园(矩阵快速幂),JM的月亮神树(最短路),保护出题人(斜率优化)

多年不考试&#xff0c;一夜回到解放前T1&#xff1a;花园titlesolutioncodeT2&#xff1a;月亮神树titlesolutioncodeT3&#xff1a;保护出题人titlesolutioncodeT1&#xff1a;花园 title 小 L 有一座环形花园&#xff0c;沿花园的顺时针方向&#xff0c;他把各个花圃编号为…

.NET的关于人脸识别引擎分享(C#)

最近在Github上找合适的人脸识别引擎&#xff0c;想要本地化用&#xff0c;不用开放的一些API&#xff08;比如腾讯AI、百度AI&#xff09;,有些场景联不了网&#xff0c;一开始搜索的是时候&#xff08;关键字&#xff1a;face recognition&#xff09;就找到了最出名的face_r…

UOJ#84-[UR #7]水题走四方【dp】

正题 题目链接:https://uoj.ac/problem/84 题目大意 有nnn个点的一棵树&#xff0c;111为根&#xff0c;两个人从根节点往下走&#xff08;只能从深度小的点走到深度大的点&#xff09;。 两个人每一秒都可以一条边&#xff08;也可以不移动&#xff09;&#xff0c;或者不消…

Docker最全教程——数据库容器化(十一)

终于按时完成第二篇。本来准备着手讲一些实践&#xff0c;但是数据库部分没有讲到&#xff0c;部分实践会存在一些问题&#xff0c;于是就有了此篇以及后续——数据库容器化。本篇将从SQL Server容器化实践开始&#xff0c;并逐步讲解其他数据库的容器化实践&#xff0c;中间再…

[选拔赛2 NOIP2018雅礼集训 Day3 u,v,w]玩个三角形(二维差分),玩个球(状压DP+map),玩个树(树上DP)

文章目录T1&#xff1a;玩个三角形titlesolutioncodeT2&#xff1a;玩个球titlesolutioncodeT3&#xff1a;玩个树titlesolutioncodeT1&#xff1a;玩个三角形 title 题目描述 考虑一个 n ∗ n 的矩阵 A&#xff0c;初始所有元素均为 0。 执行 q 次如下形式的操作&#xff…

2019 年起如何开始学习 ABP 框架系列文章-开篇有益

阅读文本大概需要 3.3 分钟。本系列文章推荐阅读地址为&#xff1a;52ABP 开发文档https://www.52abp.com/Wiki/52abp/latest/Welcome-to-52abp本文的目的是为了让刚刚接触 ABP 框架的同学或者准备接触 ABP 框架的同学&#xff0c;能够理解和搞明白 ABP 框架到底是怎么回事&…

【模板】差分约束算法

【模板】差分约束算法 题意&#xff1a; 题解&#xff1a; 模板题 算法讲解 给出一组包含 m 个不等式&#xff0c;有 n 个未知数。求任意一组满足这个不等式组的解&#xff0c;或判定无解。 连边之后跑最短路&#xff0c;保证每个连通块都没有负环即可。 也可以建源点s 0&a…

数论一之定理证明——裴蜀/威尔逊/费马/扩展欧几里得/[扩展]欧拉/[扩展]中国剩余定理,欧拉函数,逆元,剩余系,筛法

打死没想到会在H老师处学懂数论同余&#xff0c;整除模运算埃式筛法欧拉筛法最大公约数和最小公倍数辗转相除法更相减损术裴蜀定理威尔逊定理费马定理同余等价类、剩余系、缩系欧拉函数欧拉定理扩展欧拉定理区间逆元扩展欧几里得中国剩余定理扩展中国剩余定理利用以上所有知识进…

AT4437-[AGC028C]Min Cost Cycle【结论,堆】

正题 题目链接:https://www.luogu.com.cn/problem/AT4437 题目大意 有nnn个点的一张有向完全图&#xff0c;每个点有两个点权a,ba,ba,b。连接x,yx,yx,y两个点的边权为min{ax,by}min\{a_x,b_y\}min{ax​,by​}&#xff0c;求一条权值和最小的哈密顿回路。 1≤n≤105,1≤a,b≤1…

某银行大型管理系统端到端持续集成和交付实践

背景传统的银行IT系统研发流程从需求提出到产品交付往往具有较长的研发周期&#xff0c;纵观银行当下面临的市场环境&#xff0c;个人信贷消费升级&#xff0c;资管需求旺盛&#xff0c;普惠金融成为国家战略&#xff0c;来自银行同业和互联网金融的压力扑面而来&#xff0c;谁…

排列组合十一个性质公式及证明,错排数公式及证明

文章目录排列数组合数求组合数常用公式定义式递推式杨辉三角组合数常用性质及证明性质一性质二性质三性质四(二项式定理)性质五性质六性质七性质八性质九性质十性质十一错排数排列数 从nnn个物品中不放回地依次选mmm个物品&#xff0c;考虑顺序&#xff0c;有多少种方案&#…

引入用于 Azure IoT Edge 的 Visual Studio 工具

物联网开发人员&#xff1a;工具和经验引入用于 Azure IoT Edge 的 Visual Studio 工具今天&#xff0c;我们很高兴地发布用于 Visual Studio 2017 的 Azure IoT Edge 工具的预览版。Azure IoT Edge 是一个全托管服务&#xff0c;通过直接在跨平台物联网设备上部署并运行人工智…