热身赛

A.

虽然计算几何学了和没学差不多,但是板子题还是要会的(火速去补)
一定能形成折线,所以选最长的两个删掉就可以了

struct node {double dist;int x;
};int sat[maxn];
vector<node> v;double div(int x1, int y1, int x2, int y2) {double temp = sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));return temp;
}bool cmp(node a, node b) {return a.dist > b.dist;
}int main() {IOS;int n;cin >> n;remax(sat);sat[0] = 0;double sum = 0;for (int i = 1; i <= n; ++i) {cin >> sat[i];sum += div(i - 1, sat[i - 1], i, sat[i]);}sat[n + 1] = 0;sum += div(n + 1, sat[n + 1], n, sat[n]);for (int i = 1; i <= n; ++i) {double dist = div(i - 1, sat[i - 1], i, sat[i]) + div(i + 1, sat[i + 1], i, sat[i]);v.push_back({dist, i});//cout << dist << endl;}sort(v.begin(), v.end(), cmp);int cnt = 0;double dis1, dis2;int x1, x2;for (auto w : v) {if (cnt == 0)dis1 = w.dist, x1 = w.x;else if (cnt == 1)dis2 = w.dist, x2 = w.x;elsebreak;++cnt;}if (x1 > x2)swap(x1, x2);if (x1 + 1 == x2) {double temp = div(x1, sat[x1], x2, sat[x2]);sum = sum - dis1 - dis2 + temp;sum += div(x1 - 1, sat[x1 - 1], x2 + 1, sat[x2 + 1]);} else {sum -= dis1;sum += div(x1 - 1, sat[x1 - 1], x1 + 1, sat[x1 + 1]);sum -= dis2;sum += div(x2 - 1, sat[x2 - 1], x2 + 1, sat[x2 + 1]);}cout << sum;return 0;
}

B.

题解:https://blog.csdn.net/qq_35630119/article/details/121584461
为什么这么做我也不是很清楚,按我的理解它相当于进制,例如2^6 = 64,2^1 + 2^2 + …… + 2 ^ 5 = 63;
前面最大的加起来不如后面最大的那一次(这个中途还要重新计数),也就是说算最后草能长的最大的量就行了
因为是倍数关系,所以可以利用总和减少复杂度

去除相当于减去

感觉对拍会很麻烦,准备去学学怎么造数据,我记得有造数据的插件
注意b才是行

#include<iostream>
#include<vector>
#include<algorithm>
#include<map>
using namespace std;
const int maxn = 1e5 + 5;
const int mod = 1e9 + 7;
#define ll long long
ll a[maxn], b[maxn];
struct node{ll t, st, x;
};
bool cmp(node a, node b){return a.t > b.t;
}
vector<node> v;
map<pair<ll, ll>, bool> mp;
int main(){ll n, m;cin >> n >> m;ll q;ll suma = 0, sumb = 0;for (int i = 1; i <= n; ++i){cin >> a[i];//a[i] %= mod;suma += a[i];}for (int i = 1; i <= m; ++i){cin >> b[i];//b[i] %= mod;sumb += b[i];}cin >> q;for (int i = 0; i < q; ++i){ll st, x, t;cin >> st >> x >> t;v.push_back({t, st, x});}sort(v.begin(), v.end(), cmp);//实际可以不用排序的,题目说了严格上升ll ans = 0;map<ll, bool> ma, mb;for (int i = 0; i < q; ++i){if(v[i].st == 2){// for(int j = 1; j <= m; ++j){//     ans += 1ll * ((a[j] * b[v[i].x]) % mod * v[i].t) % mod;// }// b[v[i].x] = 0;错的if(mb[v[i].x])continue;mb[v[i].x] = true;ans = (ans + suma * b[v[i].x] % mod * v[i].t % mod) % mod;sumb -= b[v[i].x];}else {// for (int j = 1; j <= n; ++j){//     ans += 1ll * ((a[v[i].x] * b[j]) % mod * v[i].t) % mod;// }if(ma[v[i].x])continue;ma[v[i].x] = true;ans = (ans + sumb * a[v[i].x] % mod * v[i].t % mod) % mod;suma -= a[v[i].x];}}cout << ans % mod << endl;return 0;
}

C.计算几何,挣扎看了看过了的,超出了能力范围

正式赛

D.

我以为是解二元二次方程组,直接放弃;又没想到简单推一下就行

ll a, b;
bool solve(){int d = __gcd(a, b);a /= d, b /= d;for (int i = 1; i <= sqrt(b); ++i){if(b % i == 0){ll t = b / i;if(t * t + i * i == a){cout << i << " " << t << endl;return false;}}}return true;
}int main() {IOS;// freopen("P1908_6.in","r",stdin);//读入数据// freopen("P1908.out","w",stdout); //输出数据int t;cin >> t;while(t--){cin >> a >> b;if(solve()){cout << "0 0" << endl;}}return 0;
}

E.

这题比上一题简单
满足第二小的和最小的相差大于等于k,其它相差一定大于k

ll a[maxn];
map<ll, bool> mp;int main() {IOS;// freopen("P1908_6.in","r",stdin);//读入数据// freopen("P1908.out","w",stdout); //输出数据int n, k;cin >> n >> k;int cnt = 0;for (int i = 0; i < n; ++i){ll t;cin >> t;if(!mp[t]){//去重 3 3这种没意义a[cnt++] = t;mp[t] = true;}}sort(a, a + cnt,greater<int>());ll ans = 0;ll pre = -1;for (int i = 0; i < cnt; ++i){if(pre == -1 || pre - a[i] >= k){++ans;pre = a[i];}}cout << ans;return 0;
}

第 46 届 ICPC 国际大学生程序设计竞赛亚洲区域赛(上海)(热身赛(A/B) + 正式赛(D/E))相关推荐

  1. 第 46 届 ICPC 国际大学生程序设计竞赛亚洲区域赛(沈阳)

    有时候,很简单的模板题,可能有人没有做出来,(特指 I ),到时候一定要把所有的题目全部看一遍 文章目录 B 题解 E F 题解 H I 题解&代码 J B 输入样例 3 2 1 2 1 2 ...

  2. 第 46 届 ICPC 国际大学生程序设计竞赛亚洲区域赛(上海)DEGHI

    D Strange_Fractions 令t=b/a,可以得到关于t的一元二次方程,用根的存在定理以及根是否为整数判断是否存在解,若有解,用求根方式求出t来,取t=(p+sqrt(p^2 -4q^2) ...

  3. 第42届ACM国际大学生程序设计竞赛 亚洲区域赛 西安站 总结

    今年暑假集训结束的时候我们队在UESTC-ACM Div.1里排名第6,所以获得一场ICPC和一场CCPC的现场赛资格. 由于上半年5月打过西安的邀请赛并取得了一块银牌,笔者那次毕竟是第一次打区域赛级 ...

  4. 2018ACM-ICPC国际大学生程序设计竞赛亚洲区域赛(青岛站)赛后总结

    这是今年最后一次打铁,我已经打了一年的铁了. 还是想写一个总结,不然,什么都会没留下. 实际上在去青岛之前,我已经一个月都没有严格地训练自己了,从9月份CCPC秦皇岛站打铁之后,我就基本上开始怀疑自己 ...

  5. 计算机信息科学亚洲赛区冠军,祝贺竺院学子在ACM国际大学生程序设计竞赛亚洲赛区获得冠军...

    原标题:祝贺竺院学子在ACM国际大学生程序设计竞赛亚洲赛区获得冠军 Write the code. Change the World. 热烈祝贺竺可桢学院求是科学班(计算机)1601 陈靖邦.叶梓成, ...

  6. 中国矿业大学计算机学院张铖,中国矿大在第41届ACM国际大学生程序设计竞赛中国区决赛中荣获银奖...

    12月10-11日,第41届ACM国际大学生程序设计竞赛中国区决赛(ACM-ICPC Asia China-Final Contest)在上海大学举办.中国矿业大学计算机学院由刘厚泉教授担任领队,由杨 ...

  7. 【Java/补题/牛客/ACM赛制】2021年ICPC国际大学生程序设计竞赛暨陕西省第九届大学生程序设计竞赛(正式赛)

    文章目录 题目链接 知识一览 题目列表 快输 C - GCD(数论分块) 题目链接 2021年ICPC国际大学生程序设计竞赛暨陕西省第九届大学生程序设计竞赛(正式赛) 知识一览 01-数论分块 题目列 ...

  8. 大连,第36届ACM国际大学生程序设计竞赛,亚洲区大连赛区预选赛

    大连,第36届ACM国际大学生程序设计竞赛,亚洲区大连赛区预选赛 第一天 出发去大连 去大连理工大学参加ACM/ICPC比赛. 在长白路临时候车室,很多人,像农村赶集一样.空气里充满了白酒和熟食的气 ...

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

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

最新文章

  1. GPUtil是一个Python模块,使用nvidia-smi从NVIDA GPU获取GPU状态
  2. 小程序:位置信息(Location)及微信小程序LBS解决方案实践
  3. 使用vue-amap
  4. MAC电脑常用效率工具推荐
  5. LeetCode MySQL 1113. 报告的记录
  6. 非递归的方法写快排java_快排的最差情况以及快排平均复杂度的计算
  7. ————————C语言中快速排序方法——————————————
  8. 学习java第二天 java体系结构与表面执行流程 (one 大白(●—●))
  9. 百度SEO之-关键词的种类
  10. 篮球计时计分器c语言程序,篮球赛计时计分器程序源代码.doc
  11. 《物联网开发实战》05 系统实例:怎样设计一个简易物联网系统?(学习笔记)
  12. 具有强大的有限元网格ANSA
  13. win10桌面图标全部变成白色的怎么办
  14. Redhat Linux 8.3 安装方法
  15. CF1463-D. Pairs
  16. SqlServer无备份下误删数据恢复
  17. 2021-10-21 markdown模板
  18. 两个字与三个字对齐html,css三个字如何和两个字对齐?
  19. 【老生谈算法】matlab实现Kmeans聚类算法源码——Kmeans聚类算法
  20. android屏幕共享简书,强大的互联功能,让共享屏备受追捧

热门文章

  1. 谢绝枯燥快乐编程,四大游戏编程网站,让你边玩游戏,边学Python
  2. AcWing 217 绿豆蛙的归宿(概率与期望)
  3. 今天,洋哥北漂整整11年
  4. vscode使用问题合集
  5. php和html的关系
  6. MUMU模拟器设置网络
  7. [Study]JavaWeb
  8. 图像标签 链接标签
  9. 我的世界服务器领地系统,我的世界服务器怎么创建领地
  10. 0736-1.6.1-如何配置CDSW使用本地的Pycharm