第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(沈阳)(重现赛)

传送门:ICPC沈阳

F - The Witchwood

这重现赛,这数据,我既然被hack了,我写的代码太拉跨了?????
对原来的代码做了亿点点修改:对于每一个小区间,区间内的和与排序后区间内的和是一样的。所以。。。。

#pragma warning(disable:4996)
#include<iostream>
#include<string.h>
#include<queue>
#include<stack>
#include<math.h>
#include<map>
#include<set>
#include<algorithm>
#include<sstream>
#include<vector>
#include<ctype.h>
#include<list>
//#include <unordered_map>
#include<deque>
#include<functional>
using namespace std;const int maxn = 1e6 + 9;
long long a[maxn], sorted[maxn], le = 0, ri = 0, minn = 0x3f3f3f3f, maxx = 0;int main()
{int n, ans = 0;cin >> n;for (int i = 0; i < n; i++) {cin >> a[i];sorted[i] = a[i];}long long suma = 0, sumb = 0;sort(sorted, sorted + n);for (int i = 0; i < n; i++) {suma += a[i];sumb += sorted[i];if (suma == sumb)ans++;}cout << ans;return 0;
}

G - The Witchwood

solved by Micky. 00:32:02(+)

签到。略

#pragma warning(disable:4996)
#include<iostream>
#include<string.h>
#include<queue>
#include<stack>
#include<math.h>
#include<map>
#include<set>
#include<algorithm>
#include<sstream>
#include<vector>
#include<ctype.h>
#include<list>
//#include <unordered_map>
#include<deque>
#include<functional>
using namespace std;const int maxn = 1e5 + 9;
long long a[maxn], ans, n, k;int main()
{cin >> n >> k;for (int i = 0; i < n; i++) {cin >> a[i];}sort(a, a + n);for (int i = n - 1; i >= n - k; i--) {ans += a[i];}cout << ans;return 0;
}

I - Rise of Shadows

solved by oye (after).

题意:
给你一个特定的钟,有H小时,每小时有M分钟。问从0:00开始,时钟转完一圈的时间内,分钟和时钟的夹角小于等于2πAHM\frac{2\pi A}{HM}HM2πA​的次数有几次(分针指到格子线才算一次)
一开始,我和我的队友都以为是追及问题,怎么都过不了,一直卡到赛后。也不明白为什么是奇数,后来才发现,最后的那个重合是不用算的,相当于我们现实生活中,实际有效时间其实只有0:00~11:59(我指转一圈)。
因为要分针指到格子线才算一次,追及算时间算路程那个没法用,所以用假设先把题目化成通式。

假设一时间为t(t∈[0,HM),t∈Z,单位:分钟)t(t\in[0,HM),t\in Z,单位:分钟)t(t∈[0,HM),t∈Z,单位:分钟)
此时,时针的角度为2πtHM\frac{2\pi t}{HM}HM2πt​,分钟角度为2πtM\frac{2\pi t}{M}M2πt​。求满足∣2πtHM%2π−2πtM%2π∣≤2πAHM|\frac{2\pi t}{HM}\%2\pi-\frac{2\pi t}{M}\%2\pi|\leq\frac{2\pi A}{HM}∣HM2πt​%2π−M2πt​%2π∣≤HM2πA​的ttt的个数
将该式化简得
t(H−1)modHM≤At(H-1) \mod HM\leq At(H−1)modHM≤A
or
t(H−1)modHM≥(HM−A)t(H-1) \mod HM\geq (HM-A)t(H−1)modHM≥(HM−A)

我们先看t(H−1)modHM≤At(H-1) \mod HM\leq At(H−1)modHM≤A这个式子。oye我就是卡在这里,完全想不出来要怎么求个数,同余定理和中国剩余定理翻了翻好像都没有什么能解决解的个数问题的。后来还是队友翻到了官方题解,找到了关键的一步——
t(H−1)gmodHMg≤Ag\frac{t(H-1)}g \mod \frac{HM}g\leq \frac{A}ggt(H−1)​modgHM​≤gA​(为了方便点设g=gcd⁡(H−1,HM)g=\gcd(H-1,HM)g=gcd(H−1,HM),注:此时的t∈[0,HMg),t∈Zt\in[0,\frac{HM}g),t\in Zt∈[0,gHM​),t∈Z)
哦,然后官方就得出了个数是Ag+1\frac{A}g+1gA​+1(冷漠脸)。可恶,和数学答案里面的易得有什么区别嘛,摔!不过后面证完之后,的确有点易得的感觉,TAT太菜了我。

下面证明:
先不考虑后面的Ag\frac A ggA​,单看前面的式子,设tamodb=rta \mod b=rtamodb=r(方便起见,设a=H−1g,b=HMga=\frac{H-1}g,b=\frac{HM}ga=gH−1​,b=gHM​)

已知,r∈[0,b),r∈Zr\in[0,b),r\in Zr∈[0,b),r∈Z,跟ttt的取值是不是一样,所以大胆假设,ttt和rrr存在一一对应关系。
利用反证法,假设存在t1,t2(t1>t2)t_1,t_2(t_1>t_2)t1​,t2​(t1​>t2​)使得tamodb=rta \mod b=rtamodb=r
即,(t1−t2)amodb=0(t_1-t_2)a \mod b=0(t1​−t2​)amodb=0(同余定理)
已知此时,a,ba,ba,b互质,故要使该式有解,一,满足t1=t2t_1=t_2t1​=t2​,矛盾;二,满足t1=x(t2+b)t_1=x(t_2+b)t1​=x(t2​+b),与t∈[0,b)t\in[0,b)t∈[0,b)矛盾
故,得证。

再来看t(H−1)gmodHMg≤Ag\frac{t(H-1)}g \mod \frac{HM}g\leq \frac{A}ggt(H−1)​modgHM​≤gA​,由上面的证明可得,对于r∈[0,Ag),r∈Zr\in[0, \frac{A}g),r\in Zr∈[0,gA​),r∈Z,都可以在t∈[0,HMg),t∈Zt\in[0,\frac{HM}g),t\in Zt∈[0,gHM​),t∈Z中找到对应的ttt。故ttt的个数,就是rrr的个数,即Ag+1\frac{A}g+1gA​+1。
同理操作第二个式子,将两个式子的结果加起来得到2∗Ag+12*\frac{A}g+12∗gA​+1,由于先前除以了ggg,所以最后结果还要把ggg乘回去。

故这题的最终解是g(2∗Ag+1)g(2*\frac{A}g+1)g(2∗gA​+1)

还有一个特判是在2A=HM2A=HM2A=HM的时候,此时答案为2A2A2A(因为此时分针相对于时针满足条件的范围为整一圈,在边界处发生了重复)——来自被数学逼疯的oye

#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll h,m,a;
int main()
{scanf("%lld%lld%lld",&h,&m,&a);ll g=__gcd(h-1,h*m);if(a==h*m/2)  printf("%lld",h*m);else printf("%lld",g*(2*(a/g)+1));return 0;
}

训练实录 | 第 45 届ICPC沈阳站(牛客重现赛)相关推荐

  1. 第45届ICPC沈阳站部分题解(D、F、G、H、I、J、K)

    文章目录 D-前缀和思想+dfs F-贪心 G H-双指针+dp 题意 思路 代码 I-追及问题+裴蜀定理 J-可持久化线段树 K-前缀和+积分的定义 题意 思路 参考链接 传送门 本文CSDN 本文 ...

  2. 第45届ICPC 昆明站 临时模板补充

    昆明站模板补充 __int128 typedef __int128 LL; inline __int128 read(){__int128 x=0,f=1;char ch=getchar();whil ...

  3. 2018 ICPC 沈阳站

    细胞色素训练3 排名:100/193 2018年ICPC沈阳站,学长在这里拿金了.听学长说开始时候很快的出了两题,排名第四,是可以进final的,然后一直没过题,直到最后封榜时候连过两题,金牌最后一名 ...

  4. 21年icpc沈阳站记录

    icpc沈阳站记录 2021.11.22凌晨 从昨晚紧张到辗转反侧,虽然早就做好了打铁的心理准备,但待到比赛最后一刻两道铜牌题还没出时,满脑子的不甘心.当然最后肯定铁了395/576. 11.21也就 ...

  5. 2021 ICPC 沈阳站 D题 Journey to Un‘Goro (打表+找规律)

    2021 ICPC 沈阳站 D.Journey to Un'Goro [链接][http://codeforces.com/gym/103202/problem/D](http://codeforce ...

  6. 第46届icpc 沈阳 J-Luggage Lock(思维 + 爆搜 / 队友玄学出法, 还没看懂)

    第46届icpc 沈阳 J-Luggage Lock(思维 + 爆搜 / 队友玄学出法, 还没看懂) 题目来源:第46届icpc 沈阳 J-Luggage Lock 题意: 给出两个四位数的密码锁a和 ...

  7. 第44届ICPC国际大学生程序设计亚洲区域赛(南京站)心得体会

    2019年10月27日在南京航天航空大学举行第44届ICPC国际大学生程序设计亚洲区域赛(南京站).我有幸能与袁应师兄.胡富云一起去参赛.这一次比赛深感愧疚,我们队没能做出一个题,还有自身实力太弱. ...

  8. 10.15补卡 第1届ICPC青少年程序设计竞赛(正式赛)D题

    第1届ICPC青少年程序设计竞赛(正式赛)D题 周赛坐五个小时的牢...只写出来A和D 说实话我也是没信心发这个题解, 因为我就算做出来了, 也不会这题 题意意思就是n个有标号的树, 不能成环, 在a ...

  9. 2020 ICPC沈阳站-D,H

    icpc好难啊,希望有生之年能拿牌ort..... D. Journey to Un'Goro (思维) 链接:https://codeforces.com/gym/103202/problem/D ...

最新文章

  1. 注册表收藏夹任你玩(4招)
  2. Metasploit log命令技巧
  3. 计算机组成原理平均cpi怎么算_计算机组成原理--1.2计算机系统性能评价
  4. dnet 并行编程学习总结
  5. [解决]Win7 操作系统不能安装VMware
  6. docker always_Ubuntu+Docker+STF环境搭建
  7. 电子科技大学计算机学院王刚,电子科技大学-团体程序设计天梯赛.PDF
  8. Python并行判断多个大整数是否为素数
  9. python怎么保存为nii文件_Ubuntu+python将nii图像保存成png格式
  10. 20200507:力扣151周赛下
  11. 12.2. 如果你不习惯使用firewalld想用回Iptables
  12. mfc combo box 控件使用方法总结
  13. 从游戏谈起——论主动性和责任心
  14. Atitit hibernate3 hinernate4 hibernate5新特性attilax总结
  15. 各浏览器下图片垂直居中的方法:
  16. mysql 中文截取_中文字符串截取
  17. cad画圆如何确定圆心_cad画圆如何确定圆心_CAD如何利用对象捕捉追踪功能来确定小圆圆心以及矩形的角点位置......
  18. 计算机网络启动慢,关于电脑网络连接启动的特别慢的解决方法
  19. 机器学习和深度学习的主要术语(中英)
  20. 关于正交矩阵的二三事

热门文章

  1. 安卓自定义标题时候you cannot combine custom titles with other
  2. 【Android】Android Support库介绍
  3. win7清理系统缓存,复制到一个文件,把文件后缀为.bat
  4. 解决rabbitmq add_user 报错
  5. STM32CubeMX实现串口通信
  6. 双非本科,三年逆袭鹅厂。完整经验分享
  7. 新晋职场人的 技术进击?之旅
  8. 在中国没人要,销量却是世界第一,三星手机到底卖去哪了?
  9. 有孚网络与上海大数据股份达成战略合作伙伴关系,启动全面合作
  10. Springboot遇到的一些问题