codeforce Hello 2020 B、C

签到5分钟,挂机2小时 然后掉分

想了两个小时B,想着用树状数组维护数量,但实际上他不动态的去更改的话,似乎用个数组,最多再统计一下前缀和,即可实现树状数组的功能,太假了。后来想的set,pair。

总而言之,没把问题想透。

B New Year and Ascent Sequence

其实对一个序列而言,如果他存在一个递增的子序列,那么所有别的序列+这个序列合成产生的答案都是满足的。所以这些序列对答案的贡献n都是满的。

我们只对另一些序列进行操作,对于那些不存在递增子序列的序列,我们给他标记,并且统计他们最大值出现的次数。(这里我自己写烦了,如官方题解所说,这样的序列最大值肯定是第一个元素,最小值肯定是最后一个元素)

考虑从n*n中减去不满足的答案。

对这些序列的最大值出现次数求一下前缀和

最后遍历对每个不存在递增子序列的序列,减去最大值比当前序列最小值还要<=  的个数,最后得出来的就是答案了。

还有对上述序列最大值 排完序用lowerbound的做法,思想也是一样的。

 1 #include <bits/stdc++.h>
 2 #ifndef ONLINE_JUDGE
 3 #define debug(x) cout << #x << ": " << x << endl
 4 #else
 5 #define debug(x)
 6 #endif
 7 using namespace std;
 8 typedef long long ll;
 9 const int MAXN=1e5+7;
10 const int INF=0x3f3f3f3f;
11 const int MOD=1e9+7;
12
13 int ma[MAXN],mi[MAXN];
14
15 int n,m;
16
17 int arr[MAXN];
18
19 int cnt[1100000];
20 int flag[110000];
21
22 int main()
23 {
24     ios::sync_with_stdio(false);
25     cin.tie(0);
26     cin>>n;
27     memset(mi,0x3f,sizeof(mi));
28     for(int i=0,l;i<n;++i)
29     {
30         cin>>l;
31         for(int j=0;j<l;++j)
32         {
33             cin>>arr[j];
34             if(arr[j]>mi[i]) flag[i]=1;
35             ma[i]=max(ma[i],arr[j]);
36             mi[i]=min(mi[i],arr[j]);
37         }
38         if(!flag[i])
39             cnt[ma[i]]++;
40     }
41     ll ans=1ll*n*n;
42     for(int i=1;i<=1000000;++i) cnt[i]+=cnt[i-1];
43     for(int i=0;i<n;++i)
44     {
45         if(!flag[i])
46         {
47             debug(cnt[mi[i]]);
48             ans-=cnt[mi[i]];
49         }
50     }
51     cout<<ans<<‘\n‘;
52     return 0;
53 }

C New Year and Permutation

有趣的计数题,感觉可以当结论记住。题意就是对n的全排列,统计所有的[l,r]使得区间内的max-min==r-l,统计这样的l,r数量。

显然对于阶乘次数的每个排列去找这样的l,r,不太现实。统计也很困难。

我们不固定fix这个排列,而是固定一个l,r,对于一个长度为len=r-l+1的区间,(选择的是数必然是一个a~a+len-1的一个排列),这区间内的数的排列顺序组合有len!个,将这个区间缩成为一个数,算上剩余的数,就是(n-len+1),也就有(n-len+1)!个。

然后从长度为n的区间中选这样连续长len区间,又有n-len+1个选法,比如说 n=3,选len=2的区间,有两种选法。

然后式子就推出来了,然后对每个len 1~n 统计答案即可。

这也tql8.

写题解希望记住!主要还是思维吧,不从排列突破,从l,r的选取突破。

 1 #include <bits/stdc++.h>
 2 #ifndef ONLINE_JUDGE
 3 #define debug(x) cout << #x << ": " << x << endl
 4 #else
 5 #define debug(x)
 6 #endif
 7 using namespace std;
 8 typedef long long ll;
 9 const int MAXN=3e5+7;
10 const int INF=0x3f3f3f3f;
11 const int MOD=1e9+7;
12
13 ll fac[MAXN];
14 ll n,m;
15 int main()
16 {
17     ios::sync_with_stdio(false);
18     cin.tie(0);
19     cin>>n>>m;
20     fac[0]=1;
21     for(int i=1;i<MAXN;++i) fac[i]=fac[i-1]*i%m;
22     ll ans=0;
23     for(ll i=1;i<=n;++i)
24     {
25         ans+=(n-i+1)*fac[i]%m*fac[n-i+1]%m;
26         ans%=m;
27     }
28     cout<<ans<<‘\n‘;
29     return 0;
30 }

原文地址:https://www.cnblogs.com/Zzqf/p/12152384.html

时间: 2024-10-13 22:26:54

codeforce Hello 2020 B、C的相关文章

2020年AI、CV、NLP顶会最全时间表

2020年AI.CV.NLP顶会最全时间表 2019-09-01 14:04:19 weixin_38753768 阅读数 40 2020 AI.CV.NLP主流会议时间表,包含会议举办的时间.地点.投稿截止日期.官方网址/社交媒体地址,还有H指数(谷歌学术的期刊会议评判标准,即过去5年内有至多h篇论文被引用了至少h次). 2月 AAAI 2020 会议名称: Association for the Advancement of Artificial Intelligence 会议地点: New

python3中列表、元组、字典的增删改查说明详解

python基础中的列表.元组.字典属于python中内置的序列数据结构.其中序列可以进行的操作包括索引.截取(切片).加.乘.成员检查等. 1.列表 列表(list)是最常用的python数据类型之一,列表的数据项不需要具有相同的类型.创建一个列表,只需要把用逗号分隔开的不同数据项使用方括号[]括起来即可.创建列表实例如下: list1 = ["test","测试",1997,2000]; list2 = [1,2,3,4,5,6]; list3 = ["

股票日记---14th Feb 2020

14th Feb  2020 1.疫情属于突然事件,对股市影响有限,所以2020年首次开盘千股跌停应视为黄金坑,资金大量流出只是市场对疫情恐慌情绪的释放,随着国家政策调控,股市定会维稳,此时应大胆抄底,别人恐惧我贪婪. 2.关注那些不受疫情影响的上市公司或受疫情影响很小并能迅速恢复的公司,回避酒店类.餐饮类.旅游类受疫情影响较大的消费类上市公司,但是疫情过去后,可能会有一个消费类的爆发期,可以关注消费类后市(2.3季度). 3.方向一:关注科技类资产(华为概念.半导体.操作系统国内化),尤其是龙

2015年我国IT行业发展趋势分析(转)

中国信息化建设步伐正持续推进,行业和企业信息化应用水平也在不断提高,这使得it技术与应用系统已成为企业日常工作中不可或缺的基础设施.与此同时,用户关注的重心也日益转向it系统的稳定性.系统对生产效率的提升以及it投资回报率等核心问题上.今后,随着企业信息化建设逐步走向规范化,用户对于it系统的关注将逐步拓展至it系统生命周期的成本控制与管理,即系统的tco管理,这将成为用户规划.选型及实施it系统的重要决策依据. 据宇博智业市场研究中心了解,二十一世纪进入信息时代,席卷全球的信息科技给人类的生产

jQuery UI 中的 datepicker( )方法

学习要点: 调用 datepicker( ) 方法 修改 datepicker()样式 datepicker( ) 方法的属性 datepicker( ) 方法的事件 一.调用 datepicker()方法 $('#date').datepicker(); 二.修改 datepicker()样式 修改样式,可以在浏览器中审查元素,然后修改对应地方的样式 // 修改当天日期的样式 .ui-datepicker-today .ui-state-highlight{ border: 1px solid

别跑错了道 VR 千亿级大坑等着填

真相更让人惊讶,当下的许多VR创业者们,找对了目标,却跑错了道,跑道上有大坑-- 文/张书乐 刊载于<创意世界>2016年第7期 关于VR,时下最常引用的数据来自球知名资讯机构Digi-Capita.该机构认为,到2020年,增强现实和虚拟现实市场将会达到1500亿美元,其中增强现实(AR)市场1200亿美元,虚拟现实(VR)市场为300亿美元. 不同的解读者眼中有不同的利弊.其实各种最关键的词汇就是2020年.1200:300.从利好方向解读,距离2020年已不到5年,VR市场规模将达300

MySQL5.7慢查询日志时间与系统时间差8小时原因

在对慢查询进行查看的时候发现时间不对,正好与系统时间相差8个小时. 1.慢查询显示时间如下 # Time: 2020-01-10T06:42:24.940811Z 2.系统时间 $ date Fri Jan 10 14:42:31 CST 2020 3.查看数据库参数 mysql> show variables like 'log_timestamps'; +----------------+-------+ | Variable_name | Value | +----------------

Java语言进阶篇基本概念

一.Object类.常用API 1.Object类 此类事Java语言中的根类,即所有类的父类.如果一个类没有指定父类,那么默认则继承自Object类. 2.日期时间类 (1)Date类(特定的瞬间).format类(日期/时间格式化子类的抽象类) //创建日期对象 Date date = new Date(); //创建日期格式化对象,指定输出格式,注意:y年M月d日H时m分s秒 DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss

R语言 字符处理基础函数

1.nchar(x):返回字符串或者字符串向量x的长度. > nchar("I love you!") [1] 11 > nchar(c("I", "love", "you", "!")) [1] 1 4 3 1 2.grep(pattern,x):返回 pattern 在字符串向量 x 中的位置. > grep("y", "I love you!"