由于两种线段要交替出现,有解的必要条件即为$h=v$(以下均记为$n$)

进一步的,再假设两种线段依次对应于向量$(a_{i},0)$和$(0,b_{i})$,根据题意要求向量长度为给定值且和为0,那么也即有$|a_{i}|=l_{i},|b_{i}|=p_{i}$且$\sum_{i=1}^{n}a_{i}=\sum_{i=1}^{n}b_{i}=0$

使用背包判定是否存在这样的$a_{i}$和$b_{i}$,若不存在即无解,若存在则再求出任意一组

(可以证明此时一定有解,以下即为构造)

若$a_{i}$中的负数少于$b_{i}$则将两者全部取相反数,再将两者分别从大到小排序(其实只需要保证正数在负数前),最后将$(a_{i},b_{i})$作为一个整体极角排序,并依次选择$(a_{1},0),(0,b_{1}),(a_{2},0),...,(b_{n},0)$即可

(代码实现上通过将两边分别合理排序使得其已经极角排序)

不难发现,以此法最终方案一定是形如下图的形式,即合法

时间复杂度为$o(\frac{nC^{2}}{\omega})$,可以通过

 1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 1005
4 bitset<N*N>f[N];
5 int t,n,m,a[N],b[N];
6 int calc(int *a){
7 int m=0;
8 for(int i=1;i<=n;i++)m+=a[i];
9 if (m&1)return 0;
10 m>>=1;
11 for(int i=1;i<=n;i++)f[i]=((f[i-1])|(f[i-1]<<a[i]));
12 if (!f[n][m])return 0;
13 for(int i=n;i;i--)
14 if (!f[i-1][m]){
15 m-=a[i];
16 a[i]=-a[i];
17 }
18 return 1;
19 }
20 int main(){
21 f[0][0]=1;
22 scanf("%d",&t);
23 while (t--){
24 scanf("%d",&n);
25 for(int i=1;i<=n;i++)scanf("%d",&a[i]);
26 scanf("%d",&m);
27 for(int i=1;i<=m;i++)scanf("%d",&b[i]);
28 if ((n!=m)||(!calc(a))||(!calc(b))){
29 printf("No\n");
30 continue;
31 }
32 int cnt=0;
33 for(int i=1;i<=n;i++)cnt+=(a[i]<0)-(b[i]<0);
34 if (cnt<0){
35 for(int i=1;i<=n;i++)a[i]=-a[i],b[i]=-b[i];
36 }
37 sort(a+1,a+n+1),reverse(a+1,a+n+1);
38 sort(b+1,b+n+1),reverse(b+1,b+n+1);
39 for(int i=1;i<=n+1;i++)
40 if ((i>n)||(a[i]<0)){
41 reverse(b+1,b+i);
42 break;
43 }
44 for(int i=n;i>=0;i--)
45 if ((!i)||(b[i]>0)){
46 reverse(a+i+1,a+n+1);
47 break;
48 }
49 printf("Yes\n");
50 for(int i=1,x=0,y=0;i<=n;i++){
51 x+=a[i],printf("%d %d\n",x,y);
52 y+=b[i],printf("%d %d\n",x,y);
53 }
54 }
55 return 0;
56 }

[cf1444D]Rectangular Polyline的更多相关文章

  1. CF1444D Rectangular Polyline[题解]

    Rectangular Polyline 题目大意 给定 \(h\) 条长度分别为 \(l_1,l_2,--,l_h\) 的水平线段以及 \(v\) 条长度分别为 \(p_1,p_2,--.p_v\) ...

  2. [svg 翻译教程]Polyline(折线)polygon(多边形)

    原文: http://tutorials.jenkov.com/svg/polygon-element.html Polyline 虽然说这个 元素我没用过,但是还是蛮强大的,也翻译下 示例 < ...

  3. [javascript svg fill stroke stroke-width points polygon属性讲解] svg fill stroke stroke-width points polygon绘制多边形属性并且演示polyline和polygon区别讲解

    <!DOCTYPE html> <html lang='zh-cn'> <head> <title>Insert you title</title ...

  4. [javascript svg fill stroke stroke-width points polyline 属性讲解] svg fill stroke stroke-width points polyline 绘制折线属性讲解

    <!DOCTYPE html> <html lang='zh-cn'> <head> <title>Insert you title</title ...

  5. svg学习(八)polyline

    <polyline> 标签用来创建仅包含直线的形状. <?xml version="1.0" standalone="no"?> < ...

  6. point\polyline\polygon的转化(转)

    首先你要明白Polyline是由path对象构成,Polygon是由ring对象构成,因此实现polyline向polygon的转换,思路如下:1.提取polyline中的所有path对象2.将pat ...

  7. ACdream 1429 Rectangular Polygon

    Rectangular Polygon Time Limit: 1000MS   Memory Limit: 256000KB   64bit IO Format: %lld & %llu D ...

  8. UVALive 3959 Rectangular Polygons (排序贪心)

    Rectangular Polygons 题目链接: http://acm.hust.edu.cn/vjudge/contest/129733#problem/G Description In thi ...

  9. 一种将Region转为Polyline的方法

    在AutoCAD.NET二次开发中,如果要将面域转为Polyline主要有以下几种方式: 1.使用Explode将面域炸成Line和Arc,然后再串起来,此方法可用于AutoCAD2007开始的所有版 ...

随机推荐

  1. 阿里云函数计算发布新功能,支持容器镜像,加速应用 Serverless 进程

    我们先通过一段视频来看看函数计算和容器相结合后,在视频转码场景下的优秀表现.点击观看视频 >> FaaS 的门槛 Serverless 形态的云服务帮助开发者承担了大量复杂的扩缩容.运维. ...

  2. ApacheCon 首次亚洲大会火热来袭,SphereEx 邀您共赴年度盛会!

    ApacheCon 是 Apache 软件基金会(ASF)的官方全球系列大会.作为久负盛名的开源盛宴,ApacheCon 在开源界备受关注,也是开源运动早期的知名活动之一. ApacheCon 每年举 ...

  3. 项目优化之v-if

    前言: 在vue项目中,由于功能比较多,需要各种条件控制某个功能.某个标签.表格中的某一行是否显示等,需要使用大量的v-if来判断条件. 例如: <div v-if="isShow(a ...

  4. 脚本注入1(boolean&&get)

    现在,我们回到之前,练习脚本支持的布尔盲注(get型). 布尔盲注的应用场景是查询成功和失败时回显不同,且存在注入点的地方. 这里以Less-8为例: 发现查询成功时,会显示:失败则无回显. 同时发现 ...

  5. Hadoop MapReduce 保姆级吐血宝典,学习与面试必读此文!

    Hadoop 涉及的知识点如下图所示,本文将逐一讲解: 本文档参考了关于 Hadoop 的官网及其他众多资料整理而成,为了整洁的排版及舒适的阅读,对于模糊不清晰的图片及黑白图片进行重新绘制成了高清彩图 ...

  6. SpringBoot加密配置属性

    一.背景 在系统中的运行过程中,存在很多的配置属性,比如: 数据库配置.阿里云配置 等等,这些配置有些属性是比较敏感的,是不应直接以明文的方式出现在配置文件中,因此对于这些配置我们就需要加密来处理. ...

  7. FastAPI 学习之路(二十八)使用密码和 Bearer 的简单 OAuth2

    OAuth2 规定在使用(我们打算用的)「password 流程」时,客户端/用户必须将 username 和 password 字段作为表单数据发送.我们看下在我们应该去如何实现呢. 我们写一个登录 ...

  8. 攻防世界 web2.robots

    输入ip/robots.txt,显示出了flag目录,直接访问.

  9. 攻防世界 web1.view_source

    右键不管用,F12打开控制台,直接查看flag.

  10. HCNP Routing&Switching之BGP路由属性和优选规则

    前文我们了解了BGP防环机制和路由聚合相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15458110.html:今天我们来聊一聊BGP路由属性和选路规 ...