2019 SWERC
阅读理解场,题目难度不大。
A. Environment-Friendly Travel
题意:
给定n个点,找出从从1 ~ n走的距离不超过B的花费最少的路径。
由于最长路径长度不超过100,我们用对于每个点求出当前花费为c时,花费的最小代价。
#include <bits/stdc++.h>using namespace std;
const int maxn = 1010;
struct Node{int val, id;Node(int val = 0, int id = 0) : val(val), id(id) {}bool operator <(const Node & a)const {return val > a.val;}
};
struct P{double x, y;int num, link[105], mode[105];P(int _x = 0, int _y = 0) : x(_x), y(_y) {}
}s[maxn];int head[maxn], c[maxn], n, t, b, cnt = 0, vis[maxn * 105], dis[maxn * 105];struct edge
{int v, nxt, w, c;
}e[maxn * 151 * 2];void add(int u, int v, int w, int c){e[++cnt].v = v;e[cnt].nxt = head[u];e[cnt].w = w;e[cnt].c = c;head[u] = cnt;
}int dist(int p1, int p2){double dx = s[p1].x - s[p2].x, dy = s[p1].y - s[p2].y;return ceil(sqrt(dx * dx + dy * dy));
}void dij(){priority_queue<Node> q;memset(dis, 0x3f3f3f3f, sizeof dis);dis[0] = 0;q.push(Node(0, 0));while(!q.empty()){int id = q.top().id, c = q.top().val; q.pop();if(vis[id]) continue;vis[id] = 1;int pos = id / b, nw = id % b;for(int i = head[pos]; i; i = e[i].nxt){int v = e[i].v, tw = nw + e[i].w;if(tw >= b) continue;if(dis[id] + e[i].c < dis[v * b + tw]){dis[v * b + tw] = dis[id] + e[i].c;q.push(Node(dis[v * b + tw], v * b + tw));}}}
}int main()
{int i, j;cin >> s[0].x >> s[0].y >> s[1].x >> s[1].y; cin >> b >> c[0] >> t; b++;for(i = 1; i <= t; i++) cin >> c[i];cin >> n;for(i = 2; i <= n + 1; i++){cin >> s[i].x >> s[i].y >> s[i].num;for(j = 1; j <= s[i].num; j++){cin >> s[i].link[j] >> s[i].mode[j];s[i].link[j] += 2;}}for(i = 2; i <= n + 1; i++){for(j = 1; j <= s[i].num; j++){int di = dist(i, s[i].link[j]);add(i, s[i].link[j], di, di * c[s[i].mode[j]]);add(s[i].link[j], i, di, di * c[s[i].mode[j]]);}}// for(i = 2; i <= n + 1; i++){// for(j = i + 1; j <= n + 1; j++){// int di = dist(i, j);// add(i, j, di, di * c[0]);// add(j, i, di, di * c[0]);// }// }for(i = 0; i <= n + 1; i++){if(i != 0) {int di = dist(i, 0);add(i, 0, di, di * c[0]);add(0, i, di, di * c[0]);}if(i != 1){int di = dist(i, 1);add(i, 1, di, di * c[0]);add(1, i, di, di * c[0]);}}dij(); int ans = 0x3f3f3f3f;for(i = b; i < 2 * b; i++){ans = min(ans, dis[i]);}if(ans == 0x3f3f3f3f) ans = -1;cout << ans << endl;return 0;
}
B. Biodiversity
题意:
给出n个动物,找出出现次数超过的动物。
直接map存出现次数即可。
#include <cstdio>
#include <string>
#include <map>
#include <iostream>
using namespace std;
const int maxn = 2e5+10;
map<string,int> mp;
string s[maxn];
int n;int main()
{scanf("%d",&n);int cnt = 0;string t;int maxx = 0;string ans;for(int i = 1;i<=n;i++){cin >> t;if(!mp[t]){s[++cnt] = t;}mp[t]++;if(mp[t] > maxx){maxx = mp[t];ans = t;}}int num = 0;for(int i = 1;i<=cnt;i++){if(s[i] != ans){num += mp[s[i]];}}if(maxx > num){cout << ans << endl;}else {cout << "NONE" << endl;}return 0;
}
C. Ants
题意:
给出n个数,找出最小的不出现在这n个数中的自然数。
显然答案在以内,直接暴力枚举答案判断是否存在即可。
#include <bits/stdc++.h>using namespace std;string s;
int flag[10000010];int main()
{int n, l, i, j;cin >> n;for(i = 1; i <= n; i++){cin >> s;l = s.length();if(s[0] == '-' || l >= 8) continue;int las = 0;for(j = 0; j < l; j++){las *= 10;las += s[j] - '0';}if(las > 1000000) continue;flag[las] = 1;}for(i = 0; i <= 1000000; i++){if(!flag[i]) {cout << i << endl;break;}}return 0;
}
F. Icebergs
题意:
给定n个不相交的多边形,求面积并。
由于多边形不相交,直接利用叉乘算出每一个多边形面积求和即可,注意输入点的顺序可能为逆时针或顺时针。
#include <bits/stdc++.h>
#define db double
using namespace std;struct P{db x, y;P(db _x = 0, db _y = 0) : x(_x), y(_y) {}P operator -(const P &a){return P(x - a.x, y - a.y);}db det(P a){return x * a.y - y * a.x;}
}p[150];int main()
{int n, pn, i, j;db ans = 0;cin >> n;double tt = 0;for(i = 1; i <= n; i++){cin >> pn;ans = 0;for(j = 0; j < pn; j++){cin >> p[j].x >> p[j].y;}for(j = 0; j < pn - 2; j++){ans += (p[j + 1] - p[0]).det(p[j + 2] - p[0]);}tt+=fabs(ans);}tt /= 2;long long aans = tt + 0.01;cout << aans << endl;return 0;
}
G. Swapping Places
题意:
给定S个动物,L对朋友关系,再给出一个长度为N的队列s。若相邻两个动物是朋友关系,则可以交换位置,求进行若干次交换后形成的字典序最小的队列。
注意到若,且与不是朋友,那么将始终在之前,那么我们便可以从向连一条单向边,最后跑一个字典序最小的拓扑排序即可。暴力连边的边数可以达到,时间复杂度难以接受,考虑进行优化。对于每一个,我们只需与离他最近的与他不是朋友关系的位置连边即可,边数便降为了。
最后使用优先队列求出字典序最小的拓扑序即可。
#include <cstdio>
#include <algorithm>
#include <queue>
#include <cstring>
#include <cmath>
#include <string>
#include <iostream>
#include <map>
using namespace std;
const int maxn = 1e5 + 10;
int S, L, n;
map<string, int> mp;
string t[300];
int fri[300][300];
string s[maxn];
int a[maxn];
int las[300];
struct Edge {int to, next;
}e[maxn * 200];
int head[maxn], tot;
int indeg[maxn];
int ans[maxn];
int num = 0;
struct TT {string s;int id;bool operator<(const TT& x)const{return s > x.s;}
};void addedge(int u,int v)
{e[++tot] = Edge({ v,head[u] });head[u] = tot;
}int main()
{scanf("%d%d%d", &S, &L, &n);memset(head, -1, sizeof head);for ( int i = 1;i <= S;i++ ) {cin >> t[i];mp[t[i]] = i;// fri[i][i] = 1;}for ( int i = 1;i <= L;i++ ) {string temp1, temp2;cin >> temp1 >> temp2;fri[mp[temp1]][mp[temp2]] = 1;fri[mp[temp2]][mp[temp1]] = 1;}for ( int i = 1;i <= n;i++ ) {cin >> s[i];a[i] = mp[s[i]];}for ( int i = 1;i <= n;i++ ) {// int temp = 0;for ( int j = 1;j <= S;j++ ) {if ( !fri[a[i]][j] ) {int temp = las[j];// temp = max(temp, las[j]);addedge(las[j], i);indeg[i]++;}}// nxt[i] = temp;las[a[i]] = i;}priority_queue<TT> pq;pq.push(TT({ " " ,0 }));mp[" "] = 0;while ( !pq.empty() ) {int temp = pq.top().id;int tt = mp[pq.top().s];pq.pop();ans[++num] = tt;for ( int i = head[temp];~i;i = e[i].next ) {int to = e[i].to;if ( --indeg[to] == 0 ) {pq.push(TT({ t[a[to]], to }));}}}for ( int i = 2;i <= num;i++ ) {cout << t[ans[i]] << " ";}return 0;
}
I. Rats
直接代入计算即可。
#include <bits/stdc++.h>
#define int long long
using namespace std;signed main()
{int n1, n2, n12;cin >> n1 >> n2 >> n12;int ans = ((n1 + 1) * (n2 + 1) - n12 - 1) / (n12 + 1);cout << ans << endl;return 0;
}
2019 SWERC相关推荐
- 2019.01-02 总结
2019.01-02 总结 2019 年即将过去两个月了,整个 2019 年也即将过去 1/6,本来是在 01 月底进行总结,但是由于各种事情耽误,所以延迟到现在对前两个月进行回顾,看看哪里还需要改善 ...
- 回顾 2018,展望 2019
1. 概述 今天是 2019 年第一天,趁着元旦 3 天假期时间,对即将过去的这一年做个总结回顾,看下这一年得到了什么,失去了什么,并对来年做个新的规划,看下需要采取哪些措施提升自己. 2. 2018 ...
- NLP相关论文上新-2019
文章目录 2019.07 0724 0725 0726 0729 0730 0731 2019.08 0801 0802 0815 个人觉得有价值.有帮助的论文 2019.07 0724 计算机视觉和 ...
- 2019年终总结:好好爱自己
前言: 回顾培养计划学过的东西,自己给个评分,标准(独立,拼尽全力,内心满足),但这一块很多是不由我自己控制的 回顾内心成长的过程,给满分,因为真的尽全力的在做,没有遗憾和后悔. 专业学习阶段: 00 ...
- 2019个嵌入式市场研究,持续的C/C++优势
2019个嵌入式市场研究,持续的C/C++优势 2019 Embedded Markets Study reflects emerging technologies, continued C/C++ ...
- CVPR目标检测与实例分割算法解析:FCOS(2019),Mask R-CNN(2019),PolarMask(2020)
CVPR目标检测与实例分割算法解析:FCOS(2019),Mask R-CNN(2019),PolarMask(2020) 目标检测:FCOS(CVPR 2019) 目标检测算法FCOS(FCOS: ...
- 2019春第二次课程设计实验报告
2019春第二次课程设计实验报告 一.实验项目名称: 贪吃蛇游戏编写: 二.实验项目功能描述: 这个实验主要是实现游戏的正常运行,实现的目标是对小蛇移动的控制, 同时对小蛇数据的保存,如何实现转弯的效 ...
- 挥手送别 2019,翘首期待 2020
1. 2019 年度总结 回头看看 2019 年初做的计划,发现有好多都没有实现,像管理.英语.锻炼身体等,都由于种种原因没有坚持下来,或者说都没有达到预期的效果. 英语学习 2019 年初尝试 [英 ...
- 中山大学计算机学院运动会,喜讯!我院获2019中大校运会教工组团体第二名
11月2日,中山大学2019年运动会在南校园举行,来自全校68个院系.附属医院.部门共3200余名师生参加比赛.由37名职工运动员组成的中山七院代表队参加教工组田径赛.趣味田径及球类等全部15项比赛, ...
- 华科计算机学院多难考,计算机学院2019年硕士研究生入学考试成绩公告
根据学校有关要求,现将计算机学院2019年硕士研究生入学考试成绩公示如下: 一.招生计划 根据学校下达的招生计划见附件1. 二.考试成绩 考试成绩见附件2-5. 三.调剂工作说明 1.网络空间安全学硕 ...
最新文章
- 外部工具连接SaaS模式云数仓MaxCompute 实战—— 数据库管理工具篇
- EJB的超时策略:它们如何提供帮助?
- javascript递归遍历文件夹下面的所有文件并返回所有文件全路径名称数组以及解析JavaScript方法体字符串的结束位置
- js保存当前html,JavaScript保存当前页面
- Symbian和C++ SDK开发入门之部署
- Asp .Net Mvc在DeBug模式下设置自定义IP
- 进入到一个新的产品,如何开展测试工作
- 查看opencv版本
- java excel 打勾_如何在excel中打钩
- h3c简单配置包括一些简单vlan原理
- 浅谈mian函数的参数解析
- 【Android ROM定制】CyanogenMod源码下载和编译
- 2020年黑龙江省大豆种植分布数据
- python之模块导入及模块导入路径
- 【图像压缩】高斯混合-注意力模型 《Learned Image Compression with Discretized Gaussian Mixture Likelihoods and Atten》
- 【PSO三维路径规划】基于matlab粒子群算法融合鸡群算法多无人机三维路径规划【含Matlab源码 1792期】
- 招聘巨头Monster公司宣布全面收购中华英才网
- dxc 4.0 控制线程
- 亚马逊/关键字搜索排名爬虫
- 安装SQL2000 Server的常见问题