news 2026/10/19 2:13:48

自动求解角度图形题

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
自动求解角度图形题

自动求解角度图形题

输入:

线数n 给出的关系m(角度) 求解数量t n个 线上的交点数量a(有编号)要不要设为基准(n行里有一个即可0非1需要):要的话输入其绝对度数(》-181&《180)(跳到“:”外)接下来a个点编号(按线上的顺序依次,线段12(12是ab)上有4就是1 4 2) m个条件(1 2 5 4 70就是12右转70度与54射线方向一样) t个求解123就是角《123(<abc)

代码:

#include<bits/stdc++.h>usingnamespacestd;#define_F_-1intdmuu;intn,m,t;structNode{intf,e;booloperator<(constNode&o)const{if(f!=o.f)returnf<o.f;returne<o.e;}booloperator==(constNode&o)const{returnf==o.f&&e==o.e;}};inlinelonglongkey(intf,inte){return((longlong)f<<32)|(unsigned)e;}inlineintfjf(longlongkk){return((longlong)kk>>32);}inlineintfje(longlongkk){return(int)(unsigned)(kk&0xFFFFFFFFLL);}unordered_map<longlong,longlong>ji;map<int,map<int,int>>tu;//实际unordered_map<longlong,unordered_map<longlong,int>>tutu;//冰冰冰(边图)longlongia(longlongnnn){if(!ji.count(nnn)){ji[nnn]=nnn;}if(ji[nnn]==nnn){returnnnn;}longlongrootf=ia(ji[nnn]);ji[nnn]=rootf;returnrootf;}intNbm(longlongpp){pp=ia(pp);inta=fjf(pp),b=fje(pp);if(tu.count(a)&&tu[a].count(b))returntu[a][b];return_F_;}intbm(inta,intb){returnNbm(key(a,b));}intmomo(intang){ang=ang%360;if(ang>180)ang-=360;if(ang<=-180)ang+=360;returnang;}//int qqvi(int c,int a,int b){// return 180-abs(abs(bm(a,b)-bm(a,c))-180);//}intqqvi(intc,inta,intb){intang1=bm(a,b);intang2=bm(a,c);if(ang1==_F_||ang2==_F_)return-9990;return180-abs(abs(ang1-ang2)-180);}voidpush_b(inta,intb,intc){longlongvi=key(a,b);vi=ia(vi);a=fjf(vi);b=fje(vi);tu[a][b]=c;tu[b][a]=(180-abs(c))*(c>=0?-1:1);}voidhe(longlonga,longlongb){a=ia(a);b=ia(b);if(a!=b){if(Nbm(a)!=_F_){ji[b]=a;}else{ji[a]=b;}}}queue<longlong>p;voidinf(){while(!p.empty()){longlongke=p.front();p.pop();ke=ia(ke);intvke=Nbm(ke);if(vke==_F_){continue;}for(autoit=tutu[ke].begin();it!=tutu[ke].end();++it){longlongi=it->first;intc=it->second;longlongri=ia(i);if(Nbm(ri)==_F_){push_b(fjf(ri),fje(ri),momo(vke+c));p.push(ri);}}}}intmain(){cin>>n>>m>>t;for(inti=1;i<=n;i++){inta,jj,pp=0;cin>>a>>jj;if(jj)cin>>pp;vector<int>b(a+1);for(intj=1;j<=a;j++)cin>>b[j];for(intj=1;j<=a;j++){for(intk=1;k<=a;k++){if(j!=k)ia(key(b[j],b[k]));}}for(intj=1;j<a;j++){longlonge1=ia(key(b[j],b[j+1]));if(j+2<=a){longlonge2=ia(key(b[j+1],b[j+2]));tutu[e1][e2]=0;tutu[e2][e1]=0;}}if(jj){for(intj=1;j<a;j++){push_b(b[j],b[j+1],pp);p.push(ia(key(b[j],b[j+1])));}}}// for (int i = 1; i <= n; i++) {// int a, jj, pp = 0;// cin >> a >> jj;// if (jj) cin >> pp;// vector<int> b(a + 1);// for (int j = 1; j <= a; j++) cin >> b[j];// for (int j = 1; j <= a; j++) {// for (int k = 1; k <= a; k++) {// if (j != k) ia(key(b[j], b[k]));// }// }// if (jj) {// push_b(b[1], b[2], pp);// p.push(ia(key(b[1], b[2])));// }//}for(inti=1;i<=m;i++){intnn,mm,aa,jj,pp;cin>>nn>>mm>>aa>>jj>>pp;longlonge1=ia(key(nn,mm));longlonge2=ia(key(aa,jj));tutu[e1][e2]=pp;tutu[e2][e1]=-pp;}inf();for(inti=1;i<=t;i++){intkk,ll,pp;cin>>kk>>ll>>pp;intans=qqvi(kk,ll,pp);cout<<ans<<endl;}return0;}/* 七年级八字模型题变形样例: 4 2 1 2 0 5 4 3 0 5 3 1 4 1 0 4 3 2 6 2 0 1 2 3 2 2 1 -110 3 1 1 2 110 1 2 3 4 5 1 2 0 5 4 3 0 5 3 1 4 1 0 4 3 2 6 2 0 1 2 4 3 1 6 0 4 3 2 6 0 1 6 1 2 70 3 2 2 1 -110 3 1 1 2 110 1 2 6 4 2 1 2 0 5 4 3 0 5 3 1 4 1 0 4 3 2 6 2 0 1 2 3 2 2 1 -110 3 1 1 2 110 1 2 3 4 5 1 2 0 5 4 3 0 5 3 1 4 1 0 4 3 2 6 2 0 1 2 4 3 1 6 0 4 3 2 6 0 1 6 1 2 70 3 2 2 1 -110 3 1 1 2 110 1 2 6 */

依旧上一年的想法,课间写了好多页本
需要原理就点赞,火了有动力写原理(很晚了而已)
与以往作品《纯数学表达式实现布尔逻辑与条件分支》有关系,求解(qqvi)公式就是依靠了那个(虽然之间写判断更快),看起来非常好看
bfs也可求最优解(依靠这个方法)

hkqi

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/19 2:13:14

PowerShell DSC实战:Windows自动化配置管理与消除配置漂移指南

前言&#xff1a;部署完成后的“配置漂移”挑战在前面的系列文章中&#xff0c;我们解决了操作系统“如何快速、标准化地安装到硬件上”的问题。然而&#xff0c;在系统交付并投入运行后&#xff0c;IT 运维团队往往会面临一个更棘手的问题&#xff1a;配置漂移&#xff08;Con…

作者头像 李华
网站建设 2026/10/19 2:13:14

怎么从一堆错题里自动找出共同知识点?错题透镜跨题共现检测

怎么从一堆错题里自动找出共同知识点&#xff1f;思路一句话&#xff1a;逐题归因只能拿到每道题的错因标签&#xff0c;把整批题目的标签两两做共现统计&#xff0c;覆盖度最高的那条错因链就是共同病根。本文按"问题定义、检测算法、代码实现、真实案例"四步拆解这…

作者头像 李华
网站建设 2026/10/19 2:12:18

初中数学同步练习与精品试卷合集:7-9年级上下册全覆盖,含53系列/学霸必刷题/中考复习/压轴题等45000+份资料

资源概览 这是一套系统而全面的初中数学教辅资源合集&#xff0c;主要服务于七年级至九年级的学生&#xff0c;同时也可作为初中数学教师备课和培训的参考资料。资源以人教版&#xff08;RJ&#xff09;教材为主线&#xff0c;覆盖了初一至初三三个学年、六个学期的完整教学进…

作者头像 李华
网站建设 2026/10/19 2:12:17

VM设置好的虚拟机能不能重新修改硬盘大小

能&#xff01; 博主刚装好虚拟机&#xff0c;然后就发现硬盘设置太小了&#xff0c;要进行扩容。然后博主就跟着这位博主大大的文章虚拟机扩容&#xff08;详解两种方法&#xff09;_虚拟机磁盘扩容-CSDN博客&#xff0c;执行方法一&#xff0c;非常之便捷。 这里博主在以上…

作者头像 李华
网站建设 2026/10/19 2:12:01

Git 第二章:分支是一个 41 字节的文件

如果多个人修改同一个项目&#xff0c;而且所有人都往同一条线上提交&#xff0c;那么麻烦并不在于「乱」&#xff0c;而在于无法单独撤回某一部分。修复 bug 的提交和添加功能的提交交替排列在同一条历史上&#xff0c;如果想把功能那部分拿掉&#xff0c;就得从一堆相互穿插的…

作者头像 李华
网站建设 2026/10/19 2:11:58

嵌入式三阶RC滤波器的移位优化与定点实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华