理论1A。  //没删debug的文件读入。。

傻逼题。

先求出来每条边两侧的三角形,然后枚举边,根据叉积判断三角形位置,建图,拓扑排序。

  1 #include <bits/stdc++.h>
  2 #define pii pair<int,int>
  3 using namespace std;
  4 typedef double db;
  5 const int N = 1e6+6;
  6 const db eps = 1e-6;
  7 const db pi = acos(-1);
  8 int sign(db k){
  9     if (k>eps) return 1; else if (k<-eps) return -1; return 0;
 10 }
 11 int cmp(db k1,db k2){return sign(k1-k2);}
 12 struct point{
 13     db x,y;
 14     point operator+(const point &k1)const { return point{k1.x+x,k1.y+y};}
 15     point operator-(const point &k1)const { return point{x-k1.x,y-k1.y};}
 16     point operator*(const db k1)const { return point{x*k1,y*k1};}
 17     point operator / (db k1) const{return (point){x/k1,y/k1};}
 18     db abs(){return sqrt(x*x+y*y);}
 19     bool operator<(const point k1)const {
 20         int a = cmp(x,k1.x);
 21         if (a==-1) return 1; else if (a==1) return 0; else return cmp(y,k1.y)==-1;
 22     }
 23     bool operator== (const point k1)const {
 24         return x==k1.x&&y==k1.y;
 25     }
 26 };
 27 db cross(point k1,point k2){ return k1.x*k2.y-k1.y*k2.x;}
 28 db dot(point k1,point k2){ return k1.x*k2.x+k1.y*k2.y;}
 29 struct line{
 30     point p[2];//x小的是p[0]
 31     line(point k1,point k2){
 32         if(k1<k2)
 33             p[0]=k1,p[1]=k2;
 34         else
 35             p[0]=k2,p[1]=k1;
 36     }
 37     point &operator[](int k){ return p[k];}
 38     bool operator <(const line &k1)const {
 39         if(p[0]==k1.p[0])
 40             return p[1]<k1.p[1];
 41         return p[0]<k1.p[0];
 42     }
 43 };
 44 struct Tri{
 45     point p[3],o;
 46     point &operator[](int k){ return p[k];}
 47 }tri[N];
 48 map<line,int> mp;
 49 vector<line> L;
 50 int cnt = 0;
 51 vector<int> g[N*3],f[N];
 52 int deg[N];
 53 int t,n;
 54 int main(){
 55     //freopen("awsl.in","r",stdin);
 56     scanf("%d",&t);
 57     while (t--){
 58         scanf("%d",&n);
 59         for(int i=0;i<n;i++){
 60             tri[i].o.x=0,tri[i].o.y=0;
 61             for(int j=0;j<3;j++){
 62                 scanf("%lf%lf",&tri[i][j].x,&tri[i][j].y);
 63                 tri[i].o.x+=tri[i][j].x;
 64                 tri[i].o.y+=tri[i][j].y;
 65             }
 66             tri[i].o.x/=3,tri[i].o.y/=3;
 67             for(int j=0;j<3;j++){
 68                 line tmp = line(tri[i][j],tri[i][(j+1)%3]);
 69                 if(mp.count(tmp)){
 70                     g[mp[tmp]].push_back(i);
 71                 } else{
 72                     mp[tmp]=cnt;
 73                     L.push_back(tmp);
 74                     g[cnt].push_back(i);
 75                     cnt++;
 76                 }
 77             }
 78         }
 79         for(int i=0;i<cnt;i++){
 80             if(g[i].size()<2)continue;
 81             int s1 = g[i][0],s2 = g[i][1];
 82             line tmp = L[i];
 83             db t = cross(tmp[1]-tmp[0],tri[s1].o-tmp[0]);
 84             if(sign(t)>0){//s1在上面
 85                 f[s1].push_back(s2);
 86                 deg[s2]++;
 87             } else{
 88                 f[s2].push_back(s1);
 89                 deg[s1]++;
 90             }
 91         }
 92         queue<int> q;
 93         for(int i=0;i<n;i++){
 94             if(deg[i]==0)
 95                 q.push(i);
 96         }
 97         vector<int> ans;
 98         while (!q.empty()){
 99             int t = q.front();
100             q.pop();
101             ans.push_back(t+1);
102             for(int i=0;i<f[t].size();i++){
103                 deg[f[t][i]]--;
104                 if(deg[f[t][i]]==0)
105                     q.push(f[t][i]);
106             }
107         }
108         reverse(ans.begin(),ans.end());
109         for(auto tmp:ans){
110             printf("%d ",tmp);
111         }
112         printf("\n");
113         for(int i=0;i<n;i++){
114             deg[i]=0;
115             f[i].clear();
116         }
117         for(int i=0;i<cnt;i++)
118             g[i].clear();
119         L.clear();mp.clear();
120         cnt=0;
121     }
122 }

View Code

转载于:https://www.cnblogs.com/MXang/p/10469931.html

gym 101657 D相关推荐

  1. 强化学习(三) - Gym库介绍和使用,Markov决策程序实例,动态规划决策实例

    强化学习(三) - Gym库介绍和使用,Markov决策程序实例,动态规划决策实例 1. 引言 在这个部分补充之前马尔科夫决策和动态规划部分的代码.在以后的内容我会把相关代码都附到相关内容的后面.本部 ...

  2. Gym - 102082G

    Gym - 102082G https://vjudge.net/problem/2198225/origin 对于数列中任意一个数,要么从最左边到它不递减,要么从最右边到到它不递减,为了满足这个条件 ...

  3. 安装gym库_强化学习Gym库学习实践(一)

    最近看了一篇研究方向相关的文章,介绍了一种DQN的应用,感觉还挺新鲜的.想着把这篇文章复现出来,就开始学习强化学习的相关知识,作为一名小白,这一路走的可是真的十分艰难(我太菜了啊!) 看了莫烦Pyth ...

  4. 强化学习环境库 Gym 发布首个社区发布版,全面兼容 Python 3.9

    作者:肖智清 来源:AI科技大本营 强化学习环境库Gym于2021年8月中旬迎来了首个社区志愿者维护的发布版Gym 0.19.该版本全面兼容Python 3.9,增加了多个新特性. 强化学习环境库的事 ...

  5. Gym迎来首个完整环境文档,强化学习入门更加简单!

    深度强化学习实验室 官网:http://www.neurondance.com/ 论坛:http://deeprl.neurondance.com/ 编辑:OpenDeepRL OpenAI Gym是 ...

  6. Codeforces Gym 100513G G. FacePalm Accounting 暴力

    G. FacePalm Accounting Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100513 ...

  7. Ubuntu下常用强化学习实验环境搭建(MuJoCo, OpenAI Gym, rllab, DeepMind Lab, TORCS, PySC2)

    原文地址:http://blog.csdn.net/jinzhuojun/article/details/77144590 和其它的机器学习方向一样,强化学习(Reinforcement Learni ...

  8. OpenAI Gym介绍

    上篇博客介绍了OpenAI Gym.OpenAI Gym与强化学习以及OpenAI Gym的安装,接下来运行一个demo体验一下OpenAI Gym这个平台,以CartPole(倒立摆)为例,在工作目 ...

  9. 独家 | 使用Python的OpenAI Gym对Deep Q-Learning的实操介绍(附学习资源)

    作者:ANKIT CHOUDHARY 翻译:张睿毅 校对:吴金笛 本文4300字,建议阅读10+分钟. 本文作者通过实战介绍了Deep Q-Learning的概念. 导言 我一直对游戏着迷.在紧凑的时 ...

最新文章

  1. Visual Studio 2010 模板缺失
  2. Java内存访问重排序的研究
  3. 【372天】我爱刷题系列131(2018.02.12)
  4. SAP 调用smartforms打印如何统计实际打印状态和打印次数
  5. 散文绘画集《心欢喜,灵快乐》研讨会在京举行
  6. codeforces1271 D. Portals(dp or 带悔贪心)
  7. json-lib的字符串自动转换坑
  8. Java千百问_05面向对象(004)_java接口到底是什么
  9. 使用Mac App Store更新、下载软件时出现未知错误的解决方法
  10. WDS服务不能启动-----Service-specific error code 1056767740
  11. 【论文笔记】基于强化学习的句子摘要排序
  12. 【资料】《数字电子技术基础》阎石第五版
  13. 三星c7000 android8,三星C7000官方固件rom刷机包-C7000ZCU3CRI1 安卓8.0
  14. 改变elementui的switch宽度、高度
  15. 你有一份七夕赚钱指南等待签收
  16. 【OR】ADMMRisk Parity Portfilio Model
  17. abs、fabs 用法
  18. 银保监会回应中国金融机构数据被公开售卖:绝大部分系黑客伪造拼凑
  19. 数据仓库系列(3):数据的价值如何体现
  20. 2019初创企业投融资服务平台都有哪些?

热门文章

  1. python静态递归函数_python—递归函数
  2. 二手车没有车险能过户吗?
  3. 如果有200万存款吃利息,可以不用上班吗?
  4. 护士资格考试难不难?护士资格考试通过率怎么样?
  5. 「职业生涯规划」真的有必要做吗?
  6. 躺赚的意思不是做到高级别就觉得高枕无忧了
  7. 阿里巴巴,华为都不在58上招聘么?
  8. 配电脑时什么配置可以缩水?
  9. 电影里看到程序员一台电脑装2个显示屏,这样有什么优点?
  10. 1.2.3 TCP/PI参考模型(应用层、传输层、网际层、网络接口层)、五层参考模型(应用层、传输层、网络层、数据链路层、物理层)、OSI与TCP/IP参考模型比较(转载)