2010年山东省第一届ACM大学生程序设计竞赛——Clockwise

第十一届山东省大学生程序设计竞赛(热身赛)Mika with Cherry Cake #include <bits/stdc++.h> using namespace std ; int n ; struct node { int x , y ; }a[5200] ; int tot ; bool cmp(node c , node d) { return c.x + c.y < d.x + d.y ; } int main() { cin >> n ; for(int i = 1 ; i <= n ; i ++) 阅读详情

题目链接:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2153

Clockwise

只要理解题目意思,即可敲出正确代码。

题目大意为:给你n个点,让你求出任意一个向量,顺时针旋转180(不能到达180),如果可以达到其余n-2个点,就输出‘C’,逆时针旋转180,如果可以到达n-2个点,就输出‘CC’,如果都不能,看顺时针到达的点数多,还是逆时针达到的点数多,舍弃点数少的一侧。如果两边相等,算作顺时针方向。

用叉乘判断是顺时针方向还是逆时针方向,如果共线,则再利用点乘判断是否符合条件。用dp数组保存最大数。代码如下:

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#define eps 1e-9
using namespace std;

struct point
{
    double x,y;
    point(double x=0,double y=0):x(x),y(y) {}
};

point p[310];
int dp[310][310];
typedef point Vector;

Vector operator - (point a,point b)
{
    return Vector(a.x-b.x,a.y-b.y);
}

double cross(Vector a,Vector b)
{
    return a.x*b.y-a.y*b.x;
}
double dot(Vector a,Vector b)
{
    return a.x*b.x+a.y*b.y;
}

bool check1(int i,int j,int k)
{
    Vector v1=p[i]-p[j];
    Vector v2=p[j]-p[k];
    double x=cross(v1,v2);
    if(x-eps>0)
        return true;
    else if(x+eps<0)
        return false;
    else
    {
        double d=dot(v1,v2);
        if(d+eps<0)
            return false;
        else
            return true;
    }
}

bool check2(int i,int j,int k)
{
    Vector v1=p[i]-p[j];
    Vector v2=p[j]-p[k];
    int x=cross(v1,v2);
    if(x-eps>0)
        return false;
    else if(x+eps<0)
        return true;
    else
    {
        int d=dot(v1,v2);
        if(d+eps<0)
            return true;
        return false;
    }
}

int main()
{
    int n;
    while(scanf("%d",&n),n)
    {
        int i,j,k;
        for(i=0;i<n;i++)
            scanf("%lf%lf",&p[i].x,&p[i].y);
        int r1=0,r2=0;
        memset(dp,0,sizeof(dp));
        for(i=0;i<n;i++)
            for(j=0;j<i;j++)
            {
                dp[j][i]=1;
                for(k=0;k<j;k++)
                    if(check1(i,j,k))
                        dp[j][i]=max(dp[j][i],dp[k][j]+1);
                r1=max(r1,dp[j][i]);
            }
        memset(dp,0,sizeof(dp));
        for(i=0;i<n;i++)
            for(j=0;j<i;j++)
            {
                dp[j][i]=1;
                for(k=0;k<j;k++)
                    if(check2(i,j,k))
                        dp[j][i]=max(dp[j][i],dp[k][j]+1);
                r2=max(r2,dp[j][i]);
            }
        if(r1==n-1)
            printf("C\n");
        else if(r2==n-1)
            printf("CC\n");
        else if(r1>=r2)
            printf("Remove %d bead(s), C\n",n-1-r1);
        else
            printf("Remove %d bead(s), CC\n",n-1-r2);
        printf("\n");
    }
    return 0;
}



保姆级教程:给你的Jetson Orin NX换个‘大房子’——新SSD初始化与JetPack 6.x刷机全流程 本文提供Jetson Orin NX存储升级与JetPack 6.x系统部署的完整指南,涵盖SSD选型、分区策略、刷机流程及性能优化技巧。通过实测数据展示如何提升AI模型加载速度33%,并分享温度管理、I/O调度等实战经验,助力开发者突破边缘计算存储瓶颈。 阅读详情

相关推荐

利用GBD数据库做未来疾病负担预测

最近看到一篇文献,利用GBD数据库中的数据对疾病负担的发展趋势进行预测。觉得很有趣,就抽空用R语言复盘了一下里面关键的方法。 参考文献: Changing trends in the disease burden of esophageal cancer in China from 1990 to 2017 and its predicted level in 25 years DOI: 10.1002/cam4.3775 1. 相关R包的安装 主要用到的R包有3个,一个一个讲: 1.1 Nordpred

NickyCat的博客 5万+

ACM2010省赛总结

从今年的7月份开始,我真正的接触了ACM(Association for Computing Machinery ),到12月上旬省赛结束,半年的时间,让我学习了很多实用而有重要的知识,也让我感触很多,最终我和我的队伍也取得了很好的成绩---安徽2010ACM/ICPC大学生程序设计大赛一等奖! 今年的7月之前,我对真正的算法一直很朦胧,也感觉很虚且没太大的实际...

weixin_30725467的博客 122

SAP ABAP开发避坑:BAPI_MATVAL_PRICE_CHANGE调用报‘估价未维护’的完整解决流程

本文深入解析SAP ABAP开发中调用BAPI_MATVAL_PRICE_CHANGE函数时遇到的'估价未维护'错误,提供从基础配置检查到CKML_PRICE_SEND表维护的完整解决方案。通过实战案例和代码示例,帮助开发者快速定位问题并实现批量价格更新的自动化处理,提升开发效率。

weixin_28705087的博客 425

2010年山东省第一届ACM大学生程序设计竞赛——Fairy tale

题目链接:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2156 Fairy tale 题目大意: 人可以动,宝藏也可以动,相当于一个追击问题,不过,人每秒可以走两步:1.按照地图来走(如果超出地图的范围,则可以不移动),2.按照自己的意愿来走(选取距离宝藏近的方向移动),宝藏只能按照

piaocoder 668

Ubuntu虚拟机磁盘扩容实战:5分钟搞定gparted分区调整(附常见错误修复)

本文详细介绍了在Ubuntu虚拟机中使用gparted工具进行磁盘扩容的实战步骤。针对常见的交换分区阻碍问题,提供了从禁用交换空间、删除旧分区、调整主分区大小到重建交换分区并更新系统配置的完整解决方案,帮助用户在5-10分钟内安全高效地解决磁盘空间不足的难题。

1a2s3d4f5g的博客 669

F5 Shape逆向工程实战:从美西南航空到xbk的风控突破

本文以美西南航空和xbk为例,深入剖析了F5 Shape风控系统的逆向工程实战。文章拆解了其核心防线,包括通信加密、JSVMP逆向分析和无孔不入的环境指纹检测,并分享了定位Header生成入口、模拟算法输出及构建真实浏览器环境的系统性方法与思路,为合规的技术研究与测试提供参考。

weixin_29327525的博客 1386

sdut 2158:Hello World!(第一届山东省省赛原题,水题,穷举)

Hello World! Time Limit: 1000MS Memory limit: 65536K 题目描述 We know that Ivan gives Saya three problems to solve (Problem F), and this is the first problem.“We need a programmer to help us for ...

weixin_33847182的博客 191

计组实验之四路表决器

请在之前四路表决器电路实现的基础上,继续用连接线 联接CD4511,将投票为1的票数总和显示到一个 LED上,思考如何做?由于我们需要通过显示字形来直接看出有几个1,在这里,我们最多有四个1,即显示字形最多到4就行,所以我们需要将有几个1用2进制数来表示,下面给出了相关电路图。显示输入插口,按真值表(自拟)要求,逐次改变输入变量, 测量相应的输出值,验证逻辑功能, 与表3-1 进行比较, 验证所设计的逻辑电路是否符合要求。用实验结果与真值表3-1和3-2进行比对,可以得出,我们实验结果是正确的。

szyugly的博客 1万+

2010年山东省第一届ACM大学生程序设计竞赛——Shopping

题目链接:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2154 Shopping 简单模拟即可!!! #include #include #include #include using namespace std; int a[100010]; int main() {

piaocoder 707

SpringBoot + MyBatis-Plus 高效实现数据变更记录:从注解到通用审计方案(附源码)

*** 数据变更审计插件* 拦截增删改操作,自动记录变更日志*/@Component@Resource/*** 拦截SQL执行*/@Override/*** 数据变更审计插件* 拦截增删改操作,自动记录变更日志/*** 拦截SQL执行。

2601_94871597的博客 556

后仿真中《SDF反标必懂连载篇》之 Negative Delay (理论篇)

今天,学习一下SDF文件中的负数延时问题。比如下面的图片中的SETUPHOLD 中的hold time 为负数。

那么菜的博客 2572

[2010山东省第一届ACM大学生程序设计竞赛]——Fairy tale

[2010山东省第一届ACM大学生程序设计竞赛] 模拟 Fairy tale

继续激情,继续奋斗。 2226

LSTM 双向 Bi-LSTM

LSTM 双向 Bi-LSTM

jacke121的专栏 1516

sdut 2153 Clockwise (2010年山东省第一届ACM大学生程序设计竞赛)

题目大意: n个点,第i个点和第i+1个点可以构成向量,问最少删除多少个点可以让构成的向量顺时针旋转或者逆时针旋转。 分析: dp很好想,dp[j][i]表示以向量ji(第j个点到第i个点构成的向量)为终点的最大顺时针/逆时针向量数。状态转移方程为 dp[j][i] = max{dp[k][j]+1}。 问题个关键是如何判断2个向量是顺时针还是逆时针。 计算几何用的知识是求叉积和点积,叉...

weixin_30800807的博客 118

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

sdut 2153:Clockwise(第一届山东省省赛原题,计算几何+DP)

Clockwise Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 Saya have a long necklace with N beads, and she signs the beads from 1 to N. Then she fixes them to the wall to show N-1...

weixin_34124651的博客 154

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

山东省第一届ACM省赛题——Greatest Number(不用dp的二分查找)

题目描述 Saya likes math, because she think math can make her cleverer. One day, Kudo invited a very simple game: Given N integers, then the players choose no more than four integers from them (can

Beyond the Sora 721

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

第一届省赛 Phone Number

题目描述 We know that if a phone number A is another phone number B’s prefix, B is not able to be called. For an example, A is 123 while B is 12345, after pressing 123, we call A, and not able to cal

Misdom_Tian_Ya的专栏 1188

Phone Number 2010年山东省第一届ACM大学生程序设计竞赛

Phone Number Time Limit: 1000MS Memory limit: 65536K 题目描述 We know that if a phone number A is another phone number B’s prefix, B is not able to be called. For an example, A ...

weixin_30357231的博客 283

[2010山东省第一届ACM大学生程序设计竞赛]——Phone Number

[2010山东省第一届ACM大学生程序设计竞赛] Phone Number

继续激情,继续奋斗。 2250

sdut 2154:Shopping(第一届山东省省赛原题,水题)

Shopping Time Limit: 1000MS Memory limit: 65536K 题目描述 Saya and Kudo go shopping together.You can assume the street as a straight line, while the shops are some points on the line.They park th...

weixin_33973600的博客 227

山东省第一届ACM省赛 Fairy tale(模拟)

Problem DescriptionIt is said that in a school’s underground, there is a huge treasure which can meet any desire of the owner. The Spy Union (SU) is very interest in this legend. After much investigati

so_so_y的博客 756

2010年山东省第一届ACM大学生程序设计竞赛——Emergency

题目链接:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2155 Emergency 题目大意: 给你一个有向图,然后给你q个操作,0代表城堡(点)被占领,(未被占领时,其他点是不能经过该点的,只有被占领了,才能经过该点),如果城堡已经被占领,就输出该城堡被占领,1代表输出x和y的最短

piaocoder 505

山东省ACM第一届省赛试题

A: Balloons 题目大意:对于判定两个气球是否相邻,Saya and Kudo 有两种不同的观点,Saya认为对于 A 和 B 满足 时,可以认为两个气球相邻,对于Kudo, 当元素 A 和 B 满足 同时 时,两个气球相邻。问:以两人各自的观点,各有多少个气球连通块。 题目实质,用两次搜索。判断各有多少个连通块。 代码: #include<iostream...

fanxingxue的博客 226

sdnu山东省ACM 2010年第一届省赛Greatest Number

原题链接:http://210.44.14.31/problem/show/1141 注意事项: 范围太大,爆搜超时。 具体分析看代码。 代码如下: #include #include #include //别用cin,本题测试数据较多 using namespace std; int num[1000000 + 10]; int main() { int n, m

sunshine_YG的专栏 720

hdu 5418 Victor and World(旅行商问题)

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5418 解题思路: 旅行商问题(Traveling Salesman Problem,TSP)又译为旅行推销员问题、货郎担问题,简称为TSP问题,是最基本的路线问题,该问题是在寻求单一旅行者由起点出发,通过所有给定的需求点之后,最后再回到原点的最小路径成本。最早的旅行商问题的数学规划是由Da

piaocoder 1537

hihoCoder 1044 状态压缩·一

#include #include #include #include #define N 1025 using namespace std; int dp[2][N]; int w[N]; int cn[N] = {0,1,1}; const int num[] = {1,2,4,8,16,32,64,128,256,512,1024}; int main(){ int n,

piaocoder 875
上一篇: 2015 湘潭大学程序设计比赛(Internet)
下一篇: 2010年山东省第一届ACM大学生程序设计竞赛——Emergency
yphacker
博客等级 码龄12年 199粉丝 540原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值