jzoj5123-diyiti【统计,容斥】

正题


题目大意

n个木棒,求用6个木棒组成正方形的方案总数。


解题思路

这个正方形边有的木棒数两种可能3,1,1,13,1,1,13,1,1,12,2,1,12,2,1,12,2,1,1

第一种可以枚举111,然后用fxf_xfx表示两根木棒和为x的方案数,用fxf_xfx加容斥可以计算出这个。

第二种直接暴力枚举111的和考虑2+22+22+2的不同形式,维护两个指针就可以计算了。


codecodecode

#include<cstdio>
#include<algorithm>
#define N 5010
#define A int(1e7)+10
#define ll long long
using namespace std;
ll ab[N],a[N],num[N],k[N],m,n,ans;
ll sum,cnt,l,r,s[A];
int main()
{freopen("yist.in","r",stdin);freopen("yist.out","w",stdout);scanf("%lld",&m);for(ll i=1;i<=m;i++)scanf("%lld",&ab[i]);sort(ab+1,ab+1+m);for(ll i=1;i<=m;i++){if(ab[i]>ab[i-1]) a[++n]=ab[i];num[n]++,k[i]=n;}for(ll i=1;i<=n;i++)//2+2+1+1{if(num[i]>=2)//够两个1{sum=cnt=0;for(l=1,r=i-1;l<=r;l++)//指针{while(l<=r&&a[l]+a[r]>a[i]) r--;if(a[l]+a[r]!=a[i]||l>r) continue;if(l==r){if(num[l]>=4) cnt+=num[l]*(num[l]-1)*(num[l]-2)*(num[l]-3)/24;cnt+=num[l]*(num[l]-1)/2*sum;}else{if(num[l]>=2&&num[r]>=2)cnt+=num[l]*(num[l]-1)/2*num[r]*(num[r]-1)/2;cnt+=num[l]*num[r]*sum;sum+=num[l]*num[r];}}ans+=cnt*num[i]*(num[i]-1)/2;}}for(ll i=1;i<=m;i++)//3+1+1+1{for(ll j=k[i]+1;j<=n;j++)if(num[j]>=3) ans+=num[j]*(num[j]-1)*(num[j]-2)/6*(s[a[j]-ab[i]]);for(ll j=1;j<i;j++)if(ab[i]+ab[j]<=ab[m]) s[ab[i]+ab[j]]++;}printf("%lld",ans);
}

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

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

相关文章

【LSB】图片隐写主体函数

关于图像隐写 图像隐写是一种有效的方式来交换隐藏的消息&#xff0c;而不会引起怀疑。它的工作原理是用lbs算法将消息编码为图像像素的颜色值。 这种功能基于浏览器的最新特性比如File API和Canvas&#xff0c;如果你的浏览器不支持该该功能&#xff0c;请下载最新的浏览器。…

C++描述杭电OJ 2012. 素数判定 ||

C描述杭电OJ 2012. 素数判定 || Problem Description 对于表达式n^2n41&#xff0c;当n在&#xff08;x,y&#xff09;范围内取整数值时&#xff08;包括x,y&#xff09;(-39<x<y<50)&#xff0c;判定该表达式的值是否都为素数。 Input 输入数据有多组&#xff0c;…

欢乐纪中某B组赛【2018.12.8】

前言 题目有毒系列。反正我觉得第1题最难&#xff0c;3,4题简单些。 跟jz大佬做题 成绩 RankRankRank是有算别人的 RankRankRankPersonPersonPersonScoreScoreScoreAAABBBCCCDDD111meselfmeselfmeself280280280000808080100100100100100100121212xjqxjqxjq1001001000000001001…

【Ajax】创建并封装

创建 <!DOCTYPE html> <html> <head><title></title><style>#button1{background:skyblue;border-radius:20px;width:100px;}</style> </head> <body> <button id"button1">按钮</button> <i…

C++描述杭电OJ 2016. 数据的交换输出 ||

C描述杭电OJ 2016. 数据的交换输出 || Problem Description 输入n(n<100)个数&#xff0c;找出其中最小的数&#xff0c;将它与最前面的数交换后输出这些数。 Input 输入数据有多组&#xff0c;每组占一行&#xff0c;每行的开始是一个整数n&#xff0c;表示这个测试实例…

ABP从入门到精通(2):aspnet-zero-core 使用MySql数据库

关于 asp.net zero core 项目的启动及说明&#xff0c;请观看我前面的博文ABP从入门到精通&#xff08;1&#xff09;&#xff1a;aspnet-zero-core项目启动及各项目源码说明 本操作对于ABP默认项目应该也是适用的&#xff01; 一.移除默认的SqlServer相关程序包 需要移除“MyC…

P3629-[APIO2010]巡逻【树的直径】

正题 题目大意 刚开始一棵树&#xff0c;在树中加入k条边(k<2)使得这些边都得走过的情况下&#xff0c;每个点都到达并回到原点的最少边。 解题思路 首先我们发现如果不加边的话答案是2∗(n−1)2*(n-1)2∗(n−1)。 之后我们考虑k1k1k1的情况&#xff0c;我们找树的直径&am…

15个顶级Java多线程面试题及答案

转载自 15个顶级Java多线程面试题及答案 在任何Java面试当中多线程和并发方面的问题都是必不可少的一部分。如果你想获得更多职位&#xff0c;那么你应该准备很多关于多线程的问题。 他们会问面试者很多令人混淆的Java线程问题。面试官只是想确信面试者有足够的Java线程与并…

Visual Studio 15.5预览版先睹为快

Microsoft延续了Visual Studio 2017快速迭代开发的步伐&#xff0c;最新发布了15.5预览版&#xff0c;这是VS2017这一广受欢迎的IDE自发布以来的第五次更新&#xff0c;该预览版的发布使用户可以先睹为快。 该预览版启用了一个称为“Stepping Back”的调试历史新特性。IntelliT…

C++描述杭电OJ 2017.字符串统计||

C描述杭电OJ 2017.字符串统计|| Problem Description 对于给定的一个字符串&#xff0c;统计其中数字字符出现的次数。 Input 输入数据有多行&#xff0c;第一行是一个整数n&#xff0c;表示测试实例的个数&#xff0c;后面跟着n行&#xff0c;每行包括一个由字母和数字组成…

【Android】实现页面跳转

对比html&#xff0c;安卓的页面跳转要难的多。 html只需要一个a标签即可实现页面的跳转&#xff0c;而安卓要分三步走 第一步 在activity_main.xml创建一个按钮 <Buttonandroid:id"id/btn1"android:layout_width"match_parent"android:layout_heigh…

jzoj100046-收集卡片【暴力】

正题 题目大意 给一个字符串&#xff0c;求一个最短的子串包含所有在这个字符串里出现的字母。 解题思路 枚举右指针&#xff0c;左指针移动到刚好满足要求的位置。每次就一个最小值。 时间复杂度:O(56n)O(56n)O(56n) code #include<cstdio> #include<algorithm>…

C++描述杭电OJ 2019. 数列有序 ||

C描述杭电OJ 2019. 数列有序 || Problem Description 有n(n<100)个整数&#xff0c;已经按照从小到大顺序排列好&#xff0c;现在另外给一个整数x&#xff0c;请将该数插入到序列中&#xff0c;并使新的序列仍然有序。 Input 输入数据包含多个测试实例&#xff0c;每组数…

【Android布局】控件布置

居中对齐 在相对布局中简单点 RelativeLayout 水平居中&#xff1a;android:layout_centerHorizontal“true” 垂直居中&#xff1a;android:layout_centerVertical“true” 水平垂直居中&#xff1a;android:layout_centerInParent“true” 在线性布局中 LinearLayout 首先必…

jzoj100047-基因变异【位运算,bfs】

正题 题目大意 一个长度为nnn的序列aaa。 对于一个数每秒可以将一个二进制位取反或异或aaa中的一个数。 qqq个询问&#xff0c;询问从xxx变化到yyy最少要多少秒。 解题思路 对于一个x和yx和yx和y&#xff0c;设 xxorwyx\ xor\ wyx xor wy ⇒xyxorw\Rightarrow xy\ xor\ w⇒xy…

写一个算法统计在输入字符串中各个字符出现的频度

#include<bits/stdc.h> using namespace std;void fun() {int a[62]{0} ;char c;cout<<"请输入一个字符串&#xff0c;以#结尾:";cin>>c;while(c!#){if(c>A&&c<Z) a[c-A];else if(c>a&&c<z) a[c-a26];else a[c-052];c…

ABP从入门到精通(3):aspnet-zero-core 使用Redis缓存

一.Redis是什么&#xff1f; redis是一个key-value存储系统。和Memcached类似&#xff0c;它支持存储的value类型相对更多&#xff0c;包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash&#xff08;哈希类型&#xff09;。这些数据类型都支持pus…

【Mysql】win10上Mysq的l安装

最近想学习java的jdbc&#xff0c;完成注册登录系统&#xff0c;有了php的经验&#xff0c;&#xff0c;就简单多。但是php是基于wamp集成环境的&#xff0c;当时就是由于win10安装mysql老是错误&#xff0c;所以选择了集成环境&#xff0c;这对入门来讲降低了很大的难度。这次…

jzoj100044-abcd【多重背包,二进制压缩,dp】

正题 题目大意 给出长度为nnn的序列a,b,c,da,b,c,da,b,c,d 求一个序列eee满足 (∑i1nei∗ci)0(e∈[ai..bi])(\sum _{i1}^ne_i*c_i)0(e\in [a_i..b_i])(i1∑n​ei​∗ci​)0(e∈[ai​..bi​]) 求 max{∑i1nei∗di}max\{\sum_{i1}^ne_i*d_i\}max{i1∑n​ei​∗di​} 解题思路 我…

MySQL主从数据库配置和常见问题

转载自 MySQL主从数据库配置和常见问题 本篇主要介绍MySQL的主从数据配置方法。公司运维能力不是太好&#xff0c;数据库最近出了一次问题&#xff0c;导致丢失了一天的数据&#xff0c;并且某个服务宕机一晚上。为了避免再次出现类似问题&#xff0c;我决定添加一个Slave服务…