2021“MINIEYE杯”中国大学生算法设计超级联赛(3)
Start Time : 2021-07-27 12:00:00 End Time : 2021-07-27 17:00:00
Contest Type : Private Contest Status : Ended

Current Server Time : 2021-07-27 17:31:07

Solved Pro.ID Title Ratio(Accepted / Submitted)
1001 Bookshop 5.37%(8/149)
1002 Destinations 16.00%(4/25)
1003 Forgiving Matching 27.46%(170/619)
1004 Game on Plane 13.67%(598/4376) 计算几何,斜率
1005 Kart Race 0.00%(0/16)
1006 New Equipments II 2.96%(4/135)
1007 Photoshop Layers 26.19%(722/2757) 前缀和
1008 Restore Atlantis II 0.00%(0/6)
1009 Rise in Price 5.63%(162/2877)
1010 Road Discount 16.73%(44/263)
1011 Segment Tree with Pruning 42.75%(743/1738) 记忆化
1012 Tree Planting 12.28%(7/57)

1004 Game on Plane

题意:

  • 给出n条直线(用两个不重合的点表示),A和B玩游戏,A从n条中选出k条,然后B画一条L,B的惩罚定义为L与这k条有交点的个数。
  • A想最大化,B想最小化,假设都是最优策略,求B获得的惩罚。

思路:

  • 两条直线不存在公共点当且仅当它们平行即斜率相同,因此Bob 的最优策略一定是避开斜率出现次数最多的那些直线,与之平行并与其他所有直线相交。Alice 为了让Bob 与尽量多的直线相交,最优策略就是最小化斜率出现次数的最大值,所以不断从每种斜率的直线中各选一种即可。时间复杂度O(n log n)。
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;
int gcd(int a,int b){return !b?a:gcd(b,a%b);}
struct hash_pair{template <class T1, class T2>size_t operator()(const pair<T1, T2>& p)const{auto hash1 = hash<T1>{}(p.first);auto hash2 = hash<T2>{}(p.second);return hash1 ^ hash2;}
};
unordered_map<pair<int,int>, int, hash_pair>mp;
int f[maxn];
int main(){ios::sync_with_stdio(false);int T;  cin>>T;while(T--){mp.clear();int n;  cin>>n;for(int i = 1; i <= n; i++){int x1,y1,x2,y2;  cin>>x1>>y1>>x2>>y2;int dx=x2-x1,dy=y2-y1;if(dx==0)dy=1;else if(dy==0)dx=1;else{if(dx<0)dx=-dx,dy=-dy;int d=gcd(abs(dx),abs(dy));dx /= d, dy /= d;}mp[make_pair(dx,dy)]++;}for(int i = 1; i <= n; i++)f[i]=0;for(auto i : mp){for(int k=1; k<=i.second; k++)f[k]++;}for(int i=1, j=1; i <= n; i++){while(!f[j])j++;f[j]--;cout<<i-j<<"\n";}}return 0;
}

1007 Photoshop Layers

题意:

  • 有n个图层,编号1-n,每个图层有模式1或2,以及6位16进制的RGB颜色。从前往后叠加颜色,遇到模式1就覆盖,遇到模式2就相加,如果超过FF则为FF。
  • q个询问,每次问[l,r]图层叠加后的颜色

思路:

  • 预处理出 f[i] 表示图层 i 左侧第一个合成方式为1的图层。对于每个询问,求出 r 左
    侧第一个合成方式为“普通” 的图层fr,则中间的部分都是“线性减淡”,可以用前缀和求出结
    果,最后与255 取最小值。
  • 时间复杂度O(n + q)
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn = 1e5+10;int m[maxn], last[maxn];
int r[maxn], g[maxn], b[maxn];int main(){ios::sync_with_stdio(false);int T;  scanf("%d", &T);while(T--){int n, q;  scanf("%d%d", &n, &q);for(int i = 1; i <= n; i++){int x;  scanf("%d%X",&m[i],&x);last[i] = (m[i]==1?i:last[i-1]);b[i]=b[i-1]+(x&255);  x>>=8;g[i]=g[i-1]+(x&255);  x>>=8;r[i]=r[i-1]+(x);}while(q--){int x, y;  scanf("%d%d",&x,&y);int xx = max(x, last[y]);printf("%02X%02X%02X\n",min(r[y]-r[xx-1],255), min(g[y]-g[xx-1],255), min(b[y]-b[xx-1],255));}}return 0;
}

1011 Segment Tree with Pruning

题意:

  • 给出n和k,求对1-n每k个为一个最小区间建立的线段树有多少个节点

思路:

  • 找规律找了两个小时发现并没有规律
  • 直接暴力+记忆化就过了
  • 证明:线段树上代表区间长度相同的节点的子树点数相同,且最多只有O(log n) 种本质不同的区间长度
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;map<LL,LL>ma;
LL n, k, cnt=0;
LL build(LL l, LL r){if(ma.count(r-l))return ma[r-l];if(r-l+1<=k){return 1;}LL mid = (l+r)/2, tmp = 1;tmp += build(l,mid);tmp += build(mid+1,r);return ma[r-l] = tmp;
}int main(){int T;  cin>>T;while(T--){ma.clear();cin>>n>>k;cnt = build(1,n);cout<<cnt<<"\n";}return 0;
}

【2021杭电多校赛】2021“MINIEYE杯”中国大学生算法设计超级联赛(3)签到题3题相关推荐

  1. 【2021杭电多校赛】2021“MINIEYE杯”中国大学生算法设计超级联赛(1)签到题15869

    2021"MINIEYE杯"中国大学生算法设计超级联赛(1) Start Time : 2021-07-20 12:10:00 End Time : 2021-07-20 17:1 ...

  2. 7068 Dota2 Pro Circuit 杭电多校(2021“MINIEYE杯”中国大学生算法设计超级联赛9) [贪心+双指针]

    题目 Dota2 Pro Circuit *Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Oth ...

  3. 2021“MINIEYE杯”中国大学生算法设计超级联赛

    2021"MINIEYE杯"中国大学生算法设计超级联赛 1006 Given a sequence of integers of length n, find the shorte ...

  4. 2021“MINIEYE杯”中国大学生算法设计超级联赛(2)

    2021"MINIEYE杯"中国大学生算法设计超级联赛(2) 1008 I love exam (类背包DP) 1010 I love permutation (数学构造,剩余系) ...

  5. 2021“MINIEYE杯”中国大学生算法设计超级联赛(1)个人解题报告

    文章目录 HDU6950 Mod, Or and Everything HDU6954 Minimum spanning tree HDU6958 KD-Graph HDU6957 Maximal s ...

  6. 【2021杭电多校赛】2021“MINIEYE杯”中国大学生算法设计超级联赛(10)签到题2题

    Solved Pro.ID Title Ratio(Accepted / Submitted) 1001 Pty loves sequence 25.00%(52/208) 1002 Pty with ...

  7. 【2021杭电多校赛】2021“MINIEYE杯”中国大学生算法设计超级联赛(9)签到题4题

    Solved Pro.ID Title Ratio(Accepted / Submitted) 1001 NJU emulator 23.27%(37/159) 1002 Just another b ...

  8. 【2021杭电多校赛】2021“MINIEYE杯”中国大学生算法设计超级联赛(8)签到题5题

    Current Server Time : 2021-08-12 17:17:29 Solved Pro.ID Title Ratio(Accepted / Submitted) 1001 X-lik ...

  9. 【2021杭电多校赛】2021“MINIEYE杯”中国大学生算法设计超级联赛(7)签到题5题

    Solved Pro.ID Title Ratio(Accepted / Submitted) 1001 Fall with Fake Problem 3.45%(3/87) 1002 Fall wi ...

最新文章

  1. 零基础如何学习java技术?
  2. 零基础代码学python-零基础学Python 超详细教程
  3. tomcat配置虚拟目录,虚拟目录,tomcat目录,tomcat服务器,网站图片虚拟目录
  4. 直播开发项目发展下半场,转战AI直播开启全新模式
  5. 判断个十百千位之后是否大于20 java——CSDN博客
  6. linux静默删除文件夹,Linux常用命令10 - unzip
  7. mysql 递归实现树形_Mysql实现树形递归查询
  8. 武未转变服务器tp,未转变者怎么tp别人 | 手游网游页游攻略大全
  9. 【高斯和拉普拉斯为什么分别对应L2和L1?】差分隐私系统学习记录(五)
  10. 微软使用 Fluent Design 对应用图标进行统一调整,并更新 Windows 10 Logo
  11. Java基础——抽象
  12. docker部署java项目_JAVA项目如何通过Docker实现持续部署
  13. Chrome辅助工具-JSONView
  14. AM335x TP驱动解析
  15. 苹果平板怎么卸载软件_石全石美软件更新,苹果安卓平板都能使用
  16. 怎么用计算机管理员卸载,没有足够的权限卸载请与系统管理员联系怎么解决
  17. 安全学习木马查杀打卡第二十一天
  18. appbase 和docbase
  19. php编辑菱形图案代码,vb怎么输出菱形图案?vb绘制菱形的教程
  20. 知识图谱 01:知识图谱概述

热门文章

  1. 直线分割平面问题(数学归纳法)
  2. 趣学 C 语言(十二)—— 文件操作
  3. 面向对象 —— 类设计(十一)—— 构造与析构
  4. utilities(matlab)—— PSNR 值的计算
  5. matlab 信号与系统(一)—— 上采样(Upsampling)和下采样(Downsampling)
  6. 解决算法问题的思路 —— 从问题描述到数学表达
  7. 机器学习基础(三)——信息、信息熵与信息增益
  8. webrtc 渲染_WebRTC 开发(六)摄像头采集与视频渲染分析
  9. python为什么叫爬虫-可以写爬虫的那么多,为什么只有python火了?
  10. python学来干什么-学python出来到底能干嘛