我们一起来吐槽 2021四川省 icpc
contents:
- A Chuanpai
- 题意
- 思路
- AC代码
- K-skip Permutation
- 题意
- 思路
- AC代码
- D:Rock Paper Scissors
- 题意
- 思路
- AC代码
- H:日本语 wa Muzukashii D
- 题意
- 思路
- AC代码
- M:True Story
- 题意
- 思路
- AC代码
- L:Spicy Restaurant
- 题意
- 思路
- AC代码
- 题意
- 思路
- AC代码
从 签到 到 不会
A Chuanpai
题意
牌面1~6
能不能凑出k点
有多少种方式凑出k点
思路
都1~6了有啥好说的咧
注意不重复
AC代码
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N = 1E5 + 7;#define INF ~0ULLint main()
{int t;cin >> t;while (t--){int k;cin >> k;int ans = 0;for (int i = 1; i <= 6; i++){if(k-i<=6&&k-i>=i)ans++;}cout<<ans<<endl;}// system("pause");
}
K-skip Permutation
题意
给你两个数
n,k
n代表(1~n)
k代表差距
构造一个数组
使得ai + k = ai+1
这样的i最多可以是多少
思路
最后一个输出不许出现空格
wogiao
那就计数呗
遍历一遍
AC代码
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N = 1E5 + 7;
#define INF ~0ULLint main()
{int n, k;cin >> n >> k;int cnt = 0;for(int i=1;i<=k;i++){for(int j=0;j*k+i<=n;j++){++cnt;if(cnt<n)cout<<j*k+i<<" ";elsecout<<j*k+i;}}
}
D:Rock Paper Scissors
题意
石头剪刀布
两人玩
A想输,B想赢
每次都是A先手,B看到A展示结果在出牌
俩人总牌面一样多
问最后总得分
思路
直接模拟a出牌
b再出牌结果就好了
当然不是一张一张出牌了
a作为先手
是没有决定权
所以最开始是加分
中间是平局
最后是减分
AC代码
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N = 1E5 + 7;
#define ULL unsigned long long
#define INF ~0ULL
#define pii pair<int, int>
int t, n, m;int main()
{cin >> t;while (t--){ll a, b, c, x, y, z;cin >> a >> b >> c >> x >> y >> z;ll ans=0;ans+=(min(a,y)+min(b,z)+min(c,x));//dwinll mina = min(a,y),minb =min(b,z),minc =min(c,x);a-=mina,y-=mina,b-=minb,z-=minb,c-=minc,x-=minc;mina =min(a,x),minb = min(b,y),minc =min(c,z);a-=mina,x-=mina,b-=minb,y-=minb,c-=minc,z-=minc;ans-=(a+b+c);cout<<ans<<endl;}//system("pause");
}
H:日本语 wa Muzukashii D
题意
什么样的后缀变成什么样的后缀
思路
模拟
AC代码
#include <bits/stdc++.h>
using namespace std;
char *suffix[10] = {"chimasu", "rimasu", "mimasu", "bimasu", "nimasu", "kimasu", "gimasu", "shimasu", "imasu"}; //后缀
int main()
{int t;char word[30];scanf("%d", &t);char *p;while (t--){scanf("%s", word);if (!strcmp(word, "ikimasu")){printf("itte\n");continue;}int i;for (i = 0; i < 9; i++){if (strstr(word, suffix[i])){p = strstr(word, suffix[i]); //用strstr函数寻找子串(后缀),若找到,返回子串所在的指针,若找不到,返回NULLbreak;}}int T = i + 1;char prefix[25]; //前缀int t = p - word;//index-arrfor (i = 0; i < t; i++){prefix[i] = word[i];}prefix[i] = '\0';if (T >= 1 && T <= 2)printf("%stte\n", prefix);else if (T > 2 && T <= 5)printf("%snde\n", prefix);else if (T == 6)printf("%site\n", prefix);else if (T == 7)printf("%side\n", prefix);else if (T == 8)printf("%sshite\n", prefix);else if (T == 9)printf("%stte\n", prefix);}return 0;
}
M:True Story
题意
4 3 10 4
1 5 2 1
3 4 5
7 9 10
看数据解释
第一行,4表示有四个人要去赶飞机,3代表手机将接受到三次飞
机延误的信息,10代表候机场距离飞机出发的距离,4代表飞机计划起飞时间
第二行代表四个人的速度
第三行代表三次接受到飞机延误的时刻
第四行代表飞机将延误到什么时候
一个人只有觉得有足够时间抵达登机口才会出发
问有多少人是可以出发的
思路
首先对于第二行的速度可以转化为所需时间,记得向上取整
对于每一个人,如果时间不足以到达登机口就不去了
所以每一个人要么停留,要么出发,而且飞机延误的
时刻都将比之前的时刻数大,也就是第四行数字是严格递增的
那么找到每一个通知的从通知
时刻到起飞时刻的最大时长比抵达时长长就好了
AC代码
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N =1E5+7;
#define ULL unsigned long long
#define INF ~0ULL
#define pii pair<int,int>
int n,k,r,p0;int tim[N];
pii cc[N];int main(){cin>>n>>k>>r>>p0;int now;for(int i=1;i<=n;i++){cin>>now;tim[i] = r/now; if(r%now!=0)tim[i]++;}for(int i=1;i<=k;i++){cin>>cc[i].first;}for(int i=1;i<=n;i++){cin>>cc[i].second;}cc[0].first = 0;cc[0].second=p0;int maxv = 0;for(int i=0;i<=k;i++){maxv = max(maxv,cc[i].second-cc[i].first);}int ans=0;for(int i=1;i<=n;i++){if(tim[i]<=maxv) ans++;}cout<<ans<<endl;//system("pause");
}
L:Spicy Restaurant
题意
4 4 5
5 4 2 3
1 2
2 3
3 4
4 1
1 1
1 2
1 3
1 4
1 5
4个餐馆,4条边,5个询问
第二行代表四个餐馆的辣味值
接下来4行代表餐馆a到b有无向边
再接下来是5个询问
询问中a,b;代表这个人所在餐馆位置,b代表能够接受的辣味值,可以更小
问满足此询问的餐馆的最近位置,没有输出-1
思路
辣味值只有100
那么我们可以跑100*1E5的BFS
将每个滋味到其他餐馆的距离打出表来
dis [ i ] [ j ] 代表在位置j上,距离j最近的辣味值为i的餐馆的距离
然后我们践行辣味可以更小
AC代码
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
const int N = 2e5 + 7;
int n, e, q, inf, dis[107][N], w[N];
vector<int> g[N];void BFS(int c)
{queue<int> q;for (int j = 1; j <= n; j++)if (w[j] == c)q.push(j), dis[c][j] = 0; //将0点都送进去while (!q.empty()){int u = q.front();q.pop();for (auto v : g[u]){if (dis[c][v] != inf)continue;q.push(v);dis[c][v] = dis[c][u] + 1;}}}int main()
{memset(dis, 0x3f, sizeof dis);inf = dis[0][0];cin >> n >> e >> q;for (int i = 1; i <= n; i++)cin >> w[i];for (int i = 1; i <= e; i++){int x, y;cin >> x >> y;g[x].pb(y);g[y].pb(x);}for (int i = 1; i <= 100; i++)BFS(i);for (int i = 1; i <= n; i++)for (int j = 1; j <= 100; j++)dis[j][i] = min(dis[j][i], dis[j - 1][i]);while(q--){int pos,weight;scanf("%d%d",&pos,&weight);printf("%d\n",dis[weight][pos]==inf?-1:dis[weight][pos]);}
}
题意
n个人吃火锅
火锅最开始啥也没有
有m种食材
如果这个人在火锅里有自己喜欢吃的食物,他就快乐加1
否则就投放自己喜欢的食物
然后执行k次操作
问最后每个人的快乐值
思路
k有点大,直接模拟有点,注意最多2*n次,火锅必空,回到原始著状态
AC代码
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N = 1E5 + 7;
#define ULL unsigned long long
#define INF ~0ULL
#define pii pair<int, int>
int t, n, m;
int arr[N];
int food[N];
int res[N];
int ans[N];void solve()
{int n, m, k;scanf("%d%d%d", &n, &m, &k);for (int i = 1; i <= n; i++)scanf("%d", &arr[i]);memset(food, 0, sizeof food);memset(res, 0, sizeof res);//memset(ans, 0, sizeof ans);for (int i = 1; i <= n; i++){if (food[arr[i]] == 1){res[i]++;food[arr[i]] = 0;}elsefood[arr[i]]++;}for (int i = 1; i <= n; i++){if (food[arr[i]] == 1){res[i]++;food[arr[i]] = 0;}elsefood[arr[i]]++;}int base = k / (2 * n);for (int i = 1; i <= n; i++)ans[i] = base * res[i];k %= (2 * n);// memset(food, 0, sizeof food);if (k > n){for (int i = 1; i <= n; i++){if (food[arr[i]] == 1){ans[i]++;food[arr[i]] = 0;}elsefood[arr[i]]++;}k %= n;for (int i = 1; i <= k; i++){if (food[arr[i]] == 1){ans[i]++;food[arr[i]] = 0;}elsefood[arr[i]]++;}}else{for (int i = 1; i <= k; i++){if (food[arr[i]] == 1){ans[i]++;food[arr[i]] = 0;}elsefood[arr[i]]++;}}for(int i=1;i<n;i++){cout<<ans[i]<<" ";}cout<<ans[n]<<endl;
}
int main()
{int t;cin >> t;while (t--)solve();//system("pause");
}
我们一起来吐槽 2021四川省 icpc相关推荐
- 2021四川省赛A,B,D,H,K
2021 年第十三届四川省 ACM-ICPC 大学生程序设计竞赛(重现赛) A.Chuanpai B.Hotpot D.Rock Paper Scissors H.Nihongo wa Muzukas ...
- 【2021四川省赛】E.Don‘t Really Like How The Story Ends 图论
2021四川省赛E Don't Really Like How The Story Ends 题目大意 给图加边,使得一个可能的DFS序列刚好是从1到n Time : 1000 ms Memory: ...
- 电子科大计算机科学与技术高考分数,2021四川省高考分数线公布,总分达不到这个数,考电子科大有点悬...
提起"天府之国",相信大家自然而然地会想到我国的四川,四川之所以被大家誉为是天府之国,和当地的地理优势有密不可分的联系. 四川水源充足.土地肥沃,要知道在古代的时候,衡量一个地方的 ...
- 【Java/补题/牛客/ACM赛制】2021年ICPC国际大学生程序设计竞赛暨陕西省第九届大学生程序设计竞赛(正式赛)
文章目录 题目链接 知识一览 题目列表 快输 C - GCD(数论分块) 题目链接 2021年ICPC国际大学生程序设计竞赛暨陕西省第九届大学生程序设计竞赛(正式赛) 知识一览 01-数论分块 题目列 ...
- 2021下半年ICPC各类赛事时间日程
ICPC预选赛 共2站 网络预选赛名额分配(可以关注微信公众号ICPCNews) 网络赛1:9.19 网络赛2:9.25 PS:网络赛没有牌子,决定后面赛站的学校名额分配. 现场赛1-50名2个,50 ...
- 2021上半年ICPC各类赛事时间日程
ICPC区域赛 截止今日最新经确认的比赛时间更新如下: 昆明(昆明理工大学,线上赛) 2021年4月02-03 银川(宁夏理工学院,现场赛) 2021年5月15-16 沈阳(东北大学,现场赛) 202 ...
- 2021!四川省科学技术厅开展瞪羚企业申报条件材料
一条带给四川省申请瞪羚企业的好消息,新发布<四川省科学技术厅关于组织开展2021年四川省瞪羚企业申报备案工作的通知>以下发.小编将具体内容整理在下方,希望对你的申报工作有所帮助,如有疑问可 ...
- 2021河南省ICPC省赛总结
首先我十分感谢老师给我这次参加省赛的机会. 这次省赛让我从一成不变的学习中短暂跳出,开阔了我的眼界,让我切身体会到了"这世界很大",也激发了我的好胜心. 我是第一次参加,和两位学长 ...
- 记2021西安ICPC邀请赛打铁
退役赛依旧打铁,换谁都不好受. 赛前觉得压力不大,旷了一个月的训,奔着旅游来了西安.结果sdnu来的四个队只有我们打了铁,正躺在宾馆的床上发呆## 那就从昨天开始说起吧~ 2021/6/5 暴力杯正好 ...
最新文章
- Bootstrap table表格
- 永远不要对 AI 说:“我不行!”
- 基于sqlcmd命令行工具管理SQL server
- 阿里云Kubernetes实战2–搭建基础服务
- UIImageView
- python语言的理解-终于明白python语言的特点是什么
- 用Flash创建一个类似Nano War游戏的教程
- VTK:平面源用法实战
- sunplus 8202v iop源代码阅读笔记——1
- 为什么我不再和别人比较了?
- 大数据分析-第八章 推荐系统
- 屡用屡爆,大师们讲课都在偷偷使用四个课程结构模型
- 2018.10.16 best-ks分箱
- 九度 题目1335:闯迷宫 题目1365:贝多芬第九交响曲
- html显示和隐藏文字特效,14款震撼人心的HTML5文字特效
- 怎么将计算机图标放到桌面,win10怎么把计算机图标放到桌面
- 二分查找例题(二)洛谷P1163
- C++初级主题--名字空间域和类域
- IDEA打包下载超时(已经配置阿里私服,去中央私服下载)
- IEEE 期刊双栏模板引用文献问题
热门文章
- 一文彻底搞清git reset和revert区别
- lhgdialog 弹出窗口插件 API
- EOF-DataScience:数据预处理/特征工程之线性变换—四种特征缩放Scaling算法简介、标准化standardization、归一化Normalization的概述与区别
- iPhone手机的这些基础功能 你都知道吗?
- Golang学习笔记(九)for循环语句
- hMailServer搭建企业邮箱服务器
- 南开大学计算机学院暑期夏令营,【2021夏令营】关于举办2020年南开大学 “e入计网”优秀大学生云端夏令营的通知...
- K8S + RANCHER 随记
- CF1539D. PriceFixed —— 贪心
- 售后服务工单管理系统有效降低成本!