当前位置:网站首页>CAIP2021 初赛VP
CAIP2021 初赛VP
2022-07-07 21:50:00 【HeartFireY】
写点小题,放松一下。。。
A.7-1 懂的都懂
暴力打表,然后 O ( 1 ) O(1) O(1)回答询问即可。
#include<bits/stdc++.h>
using namespace std;
const int N = 100;
int a[N];
map<int, bool> mp;
inline void solve(){
int n = 0, k = 0; cin >> n >> k;
for(int i = 1; i <= n; i++) cin >> a[i];
for(int i = 1; i <= n; i++){
for(int j = i + 1; j <= n; j++){
for(int k = j + 1; k <= n; k++){
for(int l = k + 1; l <= n; l++){
mp[a[i] + a[j] + a[k] + a[l]] = true;
}
}
}
}
for(int i = 1; i <= k; i++){
int m; cin >> m;
bool flag = true;
for(int i = 1; i <= m; i++){
int x; cin >> x;
if(!mp.count(x * 4)) flag = false;
}
if(flag) cout << "Yes\n";
else cout << "No\n";
}
}
signed main(){
solve();
return 0;
}
B.7-2 芬兰木棋
分象限和坐标轴按斜率排序,然后每个区域按顺序进行遍历,动态改变方向统计即可。
最大分数一定是所有木棋之和。可以assert检验答案对不对。
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e5 + 10, JD = 1e-5;
struct node{
int x, y, p;
double dis, k;
const bool operator< (const node & x) const {
return k < x.k || fabs(k - x.k) <= JD && dis < x.dis; }
}a[9][N];
int num[9] = {
0};
inline void solve(){
int n = 0; cin >> n;
//int sum = 0;
for(int i = 1; i <= n; i++){
int x, y, p; cin >> x >> y >> p; //sum += p;
double dis = pow((double)(x * x + y * y), 0.5);
double k = 1.0 * y / (1.0 * x);
if(x > 0 && y > 0) a[1][++num[1]] = {
x, y, p, dis, k};
if(x < 0 && y > 0) a[2][++num[2]] = {
x, y, p, dis, k};
if(x < 0 && y < 0) a[3][++num[3]] = {
x, y, p, dis, k};
if(x > 0 && y < 0) a[4][++num[4]] = {
x, y, p, dis, k};
if(x > 0 && y == 0) a[5][++num[5]] = {
x, y, p, dis, 0};
if(x < 0 && y == 0) a[6][++num[6]] = {
x, y, p, dis, 0};
if(x == 0 && y > 0) a[7][++num[7]] = {
x, y, p, dis, 0};
if(x == 0 && y < 0) a[8][++num[8]] = {
x, y, p, dis, 0};
}
for(int i = 1; i <= 8; i++) sort(a[i] + 1, a[i] + 1 + num[i]);
int cnt = 0, ans = 0, ansop = 0;
for(int x = 1; x <= 8; x++){
for(int i = 1; i <= num[x]; i++){
if(fabs(a[x][i].k - a[x][i - 1].k) <= JD){
if(a[x][i].p == 1) cnt++;
else{
if(cnt) ansop++, ans += cnt, cnt = 0;
ansop++, ans += a[x][i].p;
}
}
else{
if(cnt) ansop++, ans += cnt, cnt = 0;
if(a[x][i].p == 1) cnt++;
else ansop++, ans += a[x][i].p;
}
}
if(cnt) ansop++, ans += cnt, cnt = 0;
}
//assert(sum == ans);
cout << ans << ' ' << ansop << endl;
}
signed main(){
ios_base::sync_with_stdio(false);
solve();
return 0;
}
C.7-3 打怪升级
先跑Floyd再跑Dijkstra,代码没存…
属于是什么算法都能杂一起了。。。
D.7-4 疫情防控
典中典之并查集维护倒序加点
#include <bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
const int N = 1e5 + 10;
vector<int> g[N];
struct unionfind{
int par[N];
unionfind(int n) {
for(int i = 1; i <= n; i++) par[i] = i; }
int find(int u){
return (u == par[u] ? u : par[u] = find(par[u])); }
void merge(int u, int v){
int fau = find(u), fav = find(v);
if(fau != fav) par[fav] = u;
}
};
bitset<N> vis;
using pii = pair<int, int>;
struct query{
int c, q;
vector<pii> qu;
}a[N];
int ans[N];
inline void solve(){
int n, m, d; cin >> n >> m >> d;
for(int i = 1; i <= m; i++){
int u, v; cin >> u >> v;
g[u].emplace_back(v);
g[v].emplace_back(u);
}
vis.reset();
for(int i = 1; i <= d; i++){
int c, q; cin >> c >> q;
vis[c] = true;
a[i] = {
c, q};
for(int j = 1; j <= q; j++){
int u, v; cin >> u >> v;
a[i].qu.emplace_back(pii{
u, v});
}
}
unionfind uf(n);
for(int i = 1; i <= n; i++){
if(!vis[i]){
for(auto v : g[i])
if(!vis[v]) uf.merge(i, v);
}
}
for(int i = d; i >= 1; i--){
int cnt = 0;
for(auto q : a[i].qu){
if(uf.find(q.first) != uf.find(q.second)) cnt++;
}
int u = a[i].c;
vis[u] = false;
for(auto v : g[u]){
if(!vis[v]) uf.merge(u, v);
}
ans[i] = cnt;
}
for(int i = 1; i <= d; i++) cout << ans[i] << endl;
}
signed main(){
solve();
return 0;
}
边栏推荐
- Use JfreeChart to generate curves, histograms, pie charts, and distribution charts and display them to jsp-2
- Locate to the bottom [easy to understand]
- Lecture 30 linear algebra Lecture 5 eigenvalues and eigenvectors
- Software evaluation center ▏ what are the basic processes and precautions for automated testing?
- Two kinds of curves in embedded audio development
- Cases of agile innovation and transformation of consumer goods enterprises
- Network security - Eternal Blue
- 聊聊 Dart 的空安全 (null safety) 特性
- UE4_UE5全景相机
- Mitsubishi PLC SLmP (MC) protocol
猜你喜欢

Cascade-LSTM: A Tree-Structured Neural Classifier for Detecting Misinformation Cascades-KDD2020

PMP项目管理考试过关口诀-1

Wechat forum exchange applet system graduation design (2) applet function

GEE(四):计算两个变量(影像)之间的相关性并绘制散点图

Oracle-数据库的备份与恢复

Wechat forum exchange applet system graduation design completion (1) development outline

Develop those things: go plus c.free to free memory, and what are the reasons for compilation errors?

iNFTnews | NFT技术的广泛应用及其存在的问题

leetcode-520. 检测大写字母-js

UE4_UE5蓝图command节点的使用(开启关闭屏幕响应-log-发布全屏显示)
随机推荐
Gee (IV): calculate the correlation between two variables (images) and draw a scatter diagram
Introduction to anomaly detection
网络安全-联合查询注入
Network security sqlmap and DVWA explosion
[network] Introduction to C language
【微服务|SCG】gateway整合sentinel
Guessing game (read data from file)
U盘拷贝东西时,报错卷错误,请运行chkdsk
Software test classification
微信论坛交流小程序系统毕业设计毕设(2)小程序功能
Adults have only one main job, but they have to pay a price. I was persuaded to step back by personnel, and I cried all night
Understand the session, cookie and token at one time, and the interview questions are all finalized
Unity3D学习笔记5——创建子Mesh
Cascade-LSTM: A Tree-Structured Neural Classifier for Detecting Misinformation Cascades-KDD2020
[untitled] reprint melting ice - track icedid server with a few simple steps
FPGA基础篇目录
安踏DTC | 安踏转型,构建不只有FILA的增长飞轮
数字藏品加速出圈,MarsNFT助力多元化文旅经济!
648. 单词替换
JMeter-接口自动化测试读取用例,执行并结果回写