ICPC2018西南欧洲赛区F. Paris by Night(极角排序)

【解题总结】SWERC 2018(Codeforces Gym 102465) 我解决的:B、H、G(1 WA)。 没看的:无。 旁观的:A、D、E、F、I、J、K。 看了但没做出来的:C。 A City of Lights 简单题,略。 K Dishonest Driver 题意:要求压缩长为 NNN 的字符串,一个串 sss 连续出现 ttt 次可以被压缩为 (s)t(s)^t(s)t,压缩后的长度为 sss 的长度。求可达到的最短长度。N≤700N \le 700N≤700。 考虑区间 DP,设 f(i,j)f(i, j)f(i,j) 为区间 [i,j][i, j][i,j] 的 阅读详情

题目链接

https://codeforces.com/gym/102465/problem/F

题解

思路很简单。枚举一个定点,完了一这个点为原点把其他点极角排序。然后按极角序枚举第二点形成分界边。这样直线一边包含的点是可以单调维护的。设置左右两个指针,分别是在当前分界向量(有第一点指向第二点)逆时针旋转180的点的起始和终止(像单调队列)。在边的一侧可以用向量叉积与0的关系来看。如果向量旋转角度是小于180的话,按右手定则叉积大于0。注意要弄两遍循环一下,因为可能转弯一圈回来了。可以当做极角排序的板子。

吐槽

  • 计算几何是一类极度考验选手心理素质和代码能力,以及思维清晰度的问题。细节繁多,代码量巨大。很可能一直卡住调不出来。
  • 这场应该是法国人出的,题面就有一股浓浓的资本主义浮华迷醉的油腻风格,动不动就是大巴黎的纪念碑,美术馆,石雕之类。。。感觉这道题挺难写的,不知道为啥赛场上过那么多人。
  • 资本主义的奢华,咱这种勤劳朴实的无产阶级小知识分子是无法理解的,因为题目真心看不懂。

AC代码

网上抄的极角排序板子,调到代码千疮百孔。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 2e5 + 50;
struct point {
    ll x, y, val;
    point(ll x = 0, ll y = 0): x(x), y(y) {}
    bool operator < (const point &b) const {
        return y - b.y == 0 ? x - b.x < 0 : y - b.y < 0;
    }
    //向量+
    point operator + (const point &b) const {
        return point(x + b.x, y + b.y);
    }
    //向量-
    point operator - (const point &b) const  {
        return point(x - b.x, y - b.y);
    }
    //叉积
    ll operator ^ (const point &b) const {
        return x * b.y - y * b.x;
    }
    //点积
    ll operator * (const point &b) const {
        return x * b.x + y * b.y;
    }
    //两点间距离
    ll dist(point b) {
        return (x - b.x) * (x - b.x) + (y - b.y) * (y - b.y);
    }
    void input() {
        scanf("%lld%lld%lld",&x,&y,&val);
    }
    void ouput() {
        printf("%lld %lld %lld\n", x, y, val);
    }
};
point p[N];
point tmp[N];
int qua(point a) {
    ll x = a.x, y = a.y;
    if (x >= 0 && y >= 0) return 1;
    if (x <= 0 && y > 0) return 2;
    if (x < 0 && y <= 0) return 3;
    if (x >= 0 && y < 0) return 4;
}
point c;
bool cmp(point a, point b) {
    ll d = (a - c) ^ (b - c);
    if (d == 0) return a.dist(c) < b.dist(c);
    return d > 0;
}
bool cmp1(point a, point b) {
    point x = a - c; point y = b - c;
    if (qua(x) == qua(y)) return cmp(a, b);
    return qua(x) < qua(y);
}

//按极角排序,先找到最左下角的点
//重载point的<
int n;
void norm(int k) {
    c = tmp[k];
    sort(tmp + 1, tmp + n + 1, cmp1);
}
int main() {
    scanf("%d",&n);
    for (int i = 1; i <= n; i++) p[i].input();
    ll tot = 0;
    ll ans = 100000000000000ll;
    for (int i = 1; i <= n; i++) tot += p[i].val;
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++){tmp[j] = p[j];}
        norm(i);
        for(int j=2;j<=n;j++)tmp[j+n-1]=tmp[j];
        /*printf("\n");
        for (int j = 1; j <= n; j++) tmp[j].ouput();
        printf("\n");*/

        int l=3,r=2;
        while(1){
            if(r==2*n-1)break;
            if((tmp[r+1].y-tmp[1].y)*(tmp[2].x-tmp[1].x)-(tmp[r+1].x-tmp[1].x)*(tmp[2].y-tmp[1].y)<=0 ){
                break;
            }
            r=r+1;
        }

        long long sum1=0;long long sum2=0;
        for(int j=l;j<=r;j++)sum1+=tmp[j].val;
        sum2=tot-sum1-tmp[1].val-tmp[2].val;
        //printf("*%d %d %lld %lld\n",l,r,sum1,sum2);

        for(int j=3;j<=n;j++){
            l=j+1;
            sum1-=tmp[j].val;
            if(r<l-1){
                for(int k=r+1;k<=l-1;k++)sum1+=tmp[k].val;
                r=l-1;
            }
            int lr=r;
            int curx=tmp[j].x-tmp[1].x;
            int cury=tmp[j].y-tmp[1].y;
            while(1){
                if(r==2*n-1)break;
                if((tmp[r+1].y-tmp[1].y)*curx-(tmp[r+1].x-tmp[1].x)*cury<=0 ){
                    break;
                }
                r=r+1;
            }
            for(int j=lr+1;j<=r;j++)sum1+=tmp[j].val;
            sum2=tot-sum1-tmp[1].val-tmp[j].val;
            ans=min(ans,abs(sum1-sum2));
            //if(abs(sum1-sum2)==1)printf("********\n");
            //printf("*%d %d %lld %lld\n",l,r,sum1,sum2);
        }
        //ans=min(ans,res);
    }
    printf("%lld\n", ans);
    return 0;
}

Dishonest Driver Gym - 102465K (区间dp+kmp求最短周期) 题目链接 题意:给你一个字符串(长度<=700),问其可以压缩成的最短长度是多少,比如: aaabaaabccdaaabaaabccd 压缩成 ((a^3*b) ^2 * c ^2 *d) ^2 长度为4(abcd4个字符) aada 压缩成a^2 *d *a 长度为3 思路:首先可以想到是区间dp,因为当考虑dp[i][j], dp[i][j]表示从i到j这段字符串,(记作Sij) 对应的最短压缩长度,如果存在Sik满足Sik是Sij的一个周期并且Sij的长度是Sik长度的整数倍,那么dp[i 阅读详情

相关推荐

2019 ICPC全国邀请赛(西安)参赛小记

2019 ICPC全国邀请赛(西安)参赛小记 几点感想 和省赛完全不同,省赛可以一巨两蒻,西安赛必须开多线程,不然几乎不太可能银及银以上。 队友很重要!队友很重要!队友很重要! 嘤语很重要!嘤语很重要!嘤语很重要! 关注公告栏!关注公告栏!关注公告栏! 建议明年赛季开始前(3月份)组好队,多打几次组队赛,找到自己所长,多练练此方向题。(如果一个队没有数论、计算几何选手会很尴尬),明年校赛可...

zhmeng 865

icpc西部区域赛_ICPC西部区域赛捷报传来!

ICPC西部区域赛(新疆赛区)圆满结束软件学子斩获佳绩2020年10月31日,由新疆大学信息科学与工程学院(网络空间安全学院)承办的ICPC国际大学生程序设计竞赛2020年西部区域赛(新疆赛区)圆满结束。软件学院共派出八支队伍,25名学生参加了此次大赛。经过激烈角逐,我校共荣获五枚金牌、七枚银牌、十八枚铜牌,其中软件学院八支参赛队包揽其中三枚金牌,三枚银牌,一枚铜牌。获奖人员名单本次IC...

weixin_39915505的博客 935

Delta机器人:运动学正反解分析

Delta机器人:运动学正反解分析 一、Delta机构简介 Delta机构是并联机构中的一种典型机构,起原始结构如图1所示。Delta机构由R.Clavel 博士在 1985年发明,是现在并联机器人中使用最多的一种,具备了并联机构所特有的优点,负载能力强、效率高、末端执行器精度高、运动惯性小,可以高速稳定运动等。因此在机器人领域获得了越来越广泛的应用。以实现高速、精准、高效的运动。           &n

花洛兮灬 3万+

2023 ICPC 欧洲西南区域赛 (SWERC) A. Card game

显然只考虑一种花色是不完整的,每个花色的情况不相互独立。对于每种花色,对于其上数字+k*n,k为0,1,2,3,这样可消除花色的影响。对于C,数字始终+4n,这样可使得花色为C的卡片始终在末尾。由于移动卡片时只能移到首尾,显然存在某一子序列不需要移动,对于同一种花色,需要找到最长递增子序列(LIS)。对同一种花色,代价为M-LIS,M代表该花色卡片数量。对于LIS,采用的算法为线性dp+二分。故本题的时间复杂度为。本题为区域赛银牌题。

qq_36789020的博客 1522

视频倍速 - 在线调倍速的加速器APP工具

一刀工具箱APP提供一键可将手机上的视频倍速播放,可以调整视频倍速的加速器,调节视频的速度也就是调节视频的播放速度!一键可将手机上的视频倍速播放,可以调整视频倍速的加速器,调节视频的速度也就是调节视频的播放速度!视频倍速-在线调倍速的加速器-一刀工具箱APP。...

无涯教程 7553

[arcgis插件]在批量出图时,如何把图层属性表以动态表格的形式插入到布局页面

在批量出图时,如何把图层属性表以动态表格的形式插入到布局页面。

坐听风雨 4556

2021ICPC欧洲东南部区域赛题解ACFGJKLN

2021ICPC欧洲东南部区域赛题解ACFGJKLN

Hytidel的博客 6138

2025 年国人友好神刊盘点:20 本审稿快、分区高的 SCI 期刊,速抢发文先机!

科睿唯安最新发布的 2024 年影响因子(2025 年公布)显示,多本 TOP 期刊影响因子迎来大幅上涨!尤其是对国人友好的期刊,因审稿效率高、版面费亲民、国人发文占比超 40%,成为科研人员投稿热门。本文精选 20 本潜力神刊,涵盖Cell 子刊、顶流期刊、黑马期刊、性价比之王及新晋分区 TOP,附完整的影响因子、中科院分区、审稿周期、收稿方向攻略,助你抢占发文先机!

good_rrrrr的博客 5556

NWERC 2025 ICPC 西北欧区域赛,ICPC 英国与爱尔兰区域赛,Code Olympics 2025(国际算法竞赛),这些赛事的简介,历史,特点,及难度,真题

本文梳理了三大算法赛事的关键信息与对比,帮助求职者准备技术面试。NWERC是ICPC区域决赛,难度极高,141支队伍参赛;UKIEPC是英国预选赛,含金量高,800+学生参与;Code Olympics是国际个人赛,突出技术领导力。面试时可针对性选择介绍重点,量化比赛成绩,体现解决复杂问题的能力。真题示例展示了区域赛对算法抽象和优化能力的高要求。这些竞赛经历能有效证明求职者的算法实力和工程潜力。

小宝哥Code的专栏 416

开源大模型“去审查化”技术解析:从LLaMA架构到本地部署与伦理边界

大型语言模型(LLM)基于Transformer架构,通过海量数据训练获得理解和生成自然语言的能力。其核心原理在于自注意力机制对上下文关系的建模。为了确保输出内容的安全与合规,主流模型普遍采用基于人类反馈的强化学习(RLHF)等技术进行安全对齐。这一过程旨在使模型行为符合人类价值观,是AI伦理工程实践的关键环节。然而,在特定研究场景下,如对抗性测试或内容安全算法研究,技术人员需要模拟极端对话以评估系统鲁棒性,这催生了针对“去对齐”或“移除护栏”的技术探索。此类技术通常通过对预训练模型进行反向微调或继续训练来

weixin_33743880的博客 586

CentOS8静默安装Oracle11.2.0.1

背景 新安装oracle,用静默安装方式就不需要安装图形界面了,省时省力。 前期准备工作与图形化安装一样,如创建用户|用户组、环境变量、内核参数、创建目录等. 可参考图形化安装,链接:https://blog.csdn.net/heroicpoem/article/details/104229369 环境 平台 版本 操作系统 centOS 8 Oracle 11gR2 1.响应文件 响应文件的内容就是图形化安装时手工设置的选项内容。 解压后,database/response/db

heroicpoem的专栏 4518

gym102465 G. Strings

https://codeforces.com/gym/102465/problem/G 没打cf又摸鱼到这么晚。。。心虚下床看看队友写的题。。。下午想了好久没想出怎么做 这题转换成求前缀和以后就很好做了,如果是拼接的话,那么直接把权值和长度加起来就行,如果是取一段,我们考虑递归的去求lo和hi的前缀和然后相减就行 然后递归的时候,我们就是求s[id]串的前x的前缀和 如果s[id]是拼接的,那么如果x<=len[a]就直接a串里面递归,否则就加上val[a]整个串的值,再去递归b串,加上b串部

binarycopycode 345

23、关联挖掘到相关性分析及约束关联挖掘详解

本文详细解析了从关联挖掘到相关性分析的发展过程,以及基于约束的关联挖掘方法。文章介绍了传统支持-置信度框架的局限性,并引入Lift、χ2、All Confidence和Cosine等度量来评估规则的相关性。同时探讨了多种规则约束在数据挖掘中的应用机制及其优化效果,旨在提高挖掘效率和规则质量。最后结合实际案例说明如何综合运用相关性度量与规则约束以满足业务需求,并展望了数据挖掘技术的未来发展。

aa123的博客 102

[比赛总结] 2018ICPC西安赛区总结

西安邀请这个学期的第二个全国邀请赛,成绩不是很理想,但是运气不错还拿到了铜奖。事后总结了一下还是有不少的方面欠缺了很多,于是我们回来以后队内讨论了一下比赛时期的问题,收获颇多。 热身赛: 这次热身赛的题出的很全面,由于因为下午3点才到的西北工业大学,没有办理好酒店方面的事情,所以大概五点左右就去处理酒店了,当然能出的题基本上也已经解决了。总共是三道题,我们三个人分工还是比较明确的,先整体把题过...

jianwei2016的博客 704

Qt Quick/QML入门到精通_专栏demo对应文章目录(目前50个左右demo/长期更新)

自定义图标下拉列表框的效果如下所示:自定义三态按钮的效果如下所示:传送门:53.qt quick-自定义三态按钮、自定义图标下拉列表框_诺谦的博客-优快云博客传送门:59.qt quick-qml调色板(颜色取色器)实现、自定义QQuickStyle样式_诺谦的博客-优快云博客63.qt quick-QML侧边滑动栏(不需要任何图片资源,支持自定义左右方向和大小)_诺谦的博客-优快云博客_qt实现好看侧边栏。...

抵抗时间扭曲,坚持做一件有意义的事 2万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

2019ICPC亚洲区域赛日程与2019CCPC比赛日程

银川 8.31 10.19-20 南京 9.01 10.26-27 徐州 9.07 11.02-03 南昌 9.08 11.09-10 沈阳 9.14 11.16-17 上海 9.15 11.23-24 香港 12.01 西安 12.14-15 CCPC网络赛 8.23 东北大学秦皇岛分校 9.21-22 东北林业大学 10.12-13 厦门理工学院10....

海岛Blog 1万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

2019~2020 ICPC 欧洲西南部

文章目录比赛分析比赛题目部分题目思路及代码F题:IcebergsK题:BirdwatchingA题:Environment-Friendly TravelG题:Swapping Places 比赛分析 比赛题目 比赛题目 A题: Environment-Friendly Travel 从一个点到另一个点,中间每条边含有两个变量,co2co_{2}co2​浓度和路径长度。求在可达到的情况下最小的co2co_{2}co2​浓度。 B题: Biodiversity 多种字符串,求字符串出现最多的的串,如果最多

bleak_dream的博客 434

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

2020-2021 ICPC Southwestern European Regional Contest (SWERC 2020)

D - Jogging 思路: 本质上就是求从0到每条边的最短距离与U/2的大小关系,我们可以先跑一次狄杰斯特拉,然后遍历所有的边,看看这条边的两个端点的dis值中最小的这个就代表该边到0的最短距离 #include<map> #include<set> #include<stack> #include<queue> #include<cmath> #include<bitset> #include<cstdio> #i

Suryxin's blogs 1042

Gym 101964 (2018-2019 ACM-ICPC Southeastern European Regional Programming Contest )

传送门: 队伍博客:https://www.cnblogs.com/Chen-Jr/p/9879980.html

Chen.Jr的博客 854

2018-2019 ICPC Southwestern European Regional Programming Contest (SWERC 2018)(Gym102465)

2018-2019 ICPC Southwestern European Regional Programming Contest (SWERC 2018)(Gym102465) C 题意:给两组字符串,填一个不大于4X4的网格,要求每一行(列)均选自对应组的字符串。 题解:将数量较多的一组字符串建Trie树,dfs较少的一组,并再Trie树上匹配。 #include<iostream&gt...

micaudience的博客 1180

题解:2017-2018 ACM-ICPC Southeastern European Regional Programming Contest (SEERC 2017)

Concerts 辣鸡数据范围。滚动DP。 #include&lt;bits/stdc++.h&gt; using namespace std; const int N=1e7+9,M=1e9+7; char a[N],b[N]; int n,k,f[2][N],h[127]; int main() { scanf("%d%d",&amp;k,&amp;n); for(char c='A'; ...

wu-kan 1055

icpc西部区域赛_江西软件大学夺得第八届高校联赛西部大区总冠军

2020年6月20日,第八届全国高校联赛西部大区总决赛在西安落下帷幕,江西软件大学HMG战队以2:0击败了重庆大学城市科技学院,夺得西部大区总冠军。在第一局比赛中,HMG战队打野选手胡晨使用法外狂徒发挥出色,在敌方野区一夫当关万夫莫开,与二人缠斗仍旧不落下风,而后以一发精准的盲视野终极爆弹斩落敌方ADC人头,这波操作也登上了高校联赛官方精彩集锦。第二局比赛前期,重庆大学城市科技学院专注对...

weixin_39726379的博客 510

2017-2018 ACM-ICPC,欧洲区域赛网赛 B

题目传送门: http://codeforces.com/problemset/problem/847/B 此归并排序题意是让你将一串数字进行排序,第i行的末尾数字要比第i+1行的末尾数字,这时我们必须使用二分查找的方法,将时间复杂度n方将为nlogn。 ac代码: #include<iostream> #include<cstring> #include <vect...

KyleChennn的博客 302

icpc西部区域赛_信息学子在ACMICPC 2020中国(西部)大学生程序设计竞赛中喜获佳绩...

2020年10月31日ACM-ICPC 2020中国(西部)大学生程序设计竞赛圆满结束,信息科学与工程学院组织51支队伍参赛,荣获2枚金牌,4枚银牌,17枚铜牌,成绩优异。国际大学生程序设计竞赛(简称ICPC)是由国际计算机协会(ACM)主办的一项旨在展示大学生创新能力、团队精神和在压力下编写程序、分析和解决问题能力的年度竞赛,是我校认定的一类学科竞赛项目。“ACM-ICPC 202...

weixin_39707536的博客 1163

codeforces Gym 102465

Gym 102465A - City of Lights题目答案:B - Blurred Pictures题目答案:D - Monument Tour题目答案:E - Rounding题目答案: A - City of Lights 题目 Paris has been called “ville lumière” (city of lights) since the 17th century. It earned this nickname in part because of the many city

qq_45830025的博客 813

【计算几何】【极角排序】Gym - 101174B - Bribing Eve

把每件物品当成平面上一个点,将第一件物品放在原点。那个权重值相当于一条直线,于是相当于直线绕原点转一圈,统计上侧点的数量。 队友的代码: #include <cmath> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm&gt...

weixin_34318326的博客 176
上一篇: LightOj1296Again Stone Game(手推SG函数)
下一篇: 反尼姆游戏(anti-Nimm)
Ada Chambers
博客等级 码龄8年 29粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值