2021-TKK-ICPC Summer Training Camp Round #1 题解
时间:2021-07-31
本文章向大家介绍2021-TKK-ICPC Summer Training Camp Round #1 题解,主要包括2021-TKK-ICPC Summer Training Camp Round #1 题解使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1:消灭星星
解析
最优策略是只消灭一种颜色,最后一次性消灭另外一种颜色。据此策略,取两种情况的最小值即可。
标程
void solve(){
int n,m;
scanf("%d%d",&n,&m);
int a0=0,a1=0;
int f=-1;
for(int i=1;i<=n;i++){
int x;
scanf("%d",&x);
if(f!=x){
if(x==0){
a0++;
f=0;
}
else{
a1++;
f=1;
}
}
}
int res=min(a0,a1)+1;
if(res<=m)printf("YES\n");
else printf("NO\n");
}
2: 下馆子 -3
解析
答案是最后出勤次数最多,且出勤次数最先大于等于max次的同学。
考虑用map对字符串做映射,最后算出最大值\(max\)。然后将出勤次数为\(max\)同学放入set集合。
重新遍历一次,当出现出勤次数大于等于\(max\),判断是否在set集合之中即可。
代码
#include<bits/stdc++.h>
#include<set>
#include<map>
typedef long long ll;
using namespace std;
pair<string,int>r[100005];
set<string>st;
map<string,int>mp;
//标程
void solve(){
st.clear();
mp.clear();
int n ;
scanf("%d",&n);
int mx=INT_MIN;
string res="null";
for(int i=1;i<=n;i++){
string s;
int x;
cin>>s>>x;
r[i]={s,x};
mp[s]+=x;
}
for(auto i:mp){
mx=max(mx,i.second);
}
for(auto i:mp){
if(i.second==mx){
st.insert(i.first);
}
}
mp.clear();
for(int i=1;i<=n;i++){
string name=r[i].first;
int score=r[i].second;
mp[name]+=score;
if(mp[name]>=mx && st.count(name)){
res=name;
break;
}
}
cout<<res;
}
int main() {
solve();
return 0;
}
3:光照强度-2
解析
根据数据量,考虑O(N)的dp解法。
- 规定:\(r[i][j]\)代表\([i,j]\)的明亮度,\(g[i][j]\)代表\([i,j]\)处的灯泡亮度,\(g[i][j]=0\)代表此处没有灯泡
- 假设方格\([i,j]\)没有灯,且上下左右的方格的明亮度(灯和明亮度等价的)分别如图所示。
此位置的明亮度由4个方向递减而来。
- 左边:能贡献\(2-1=1\)的明亮度
- 上边:能贡献\(4-1=3\)的明亮度
- 右边:能贡献\(3-1=2\)的明亮度
- 下边:能贡献$5-1=4 $的明亮度
因此此处的明亮值为\(max(1,3,2,4)\)
- 如果方格\([i,j]\)有一盏灯,\(g[x][y]=5\)
此处的明亮值为\(max(1,3,2,4,g[x][y])=5\)
因此我们可以推断出状态转移方程。
\[r[i][j]=max(g[i][j],r[i+1][j],r[i][j+1],r[i-1][j],r[i][j-1],r[i][j])
\]
但是,如果只从左上角开始遍历一次,第一次遍历到某个点的时候,下方和右方没有数据,因此要从4个方向维护每个位置的最大值。
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
typedef pair<int,int>pii;
const int N =1005;
int r[N][N];
int g[N][N];
void solve(){
int a,b,m;
scanf("%d%d%d",&a,&b,&m);
for(int i=1;i<=m;i++){
int x,y,c;
scanf("%d%d%d",&x,&y,&c);
g[x][y]=max(g[x][y],c);
}
//左上角
for(int i=1;i<=a;i++){
for(int j=1;j<=b;j++){
int q=r[i-1][j]-1,p=r[i][j-1]-1;
int t=max(0,max(q,p));
r[i][j]=max(max(g[i][j],t),r[i][j]);
}
}
//右下角
for(int i=a;i>=1;i--){
for(int j=b;j>=1;j--){
int q=r[i+1][j]-1,p=r[i][j+1]-1;
int t=max(0,max(q,p));
r[i][j]=max(max(g[i][j],t),r[i][j]);
}
}
//右上角
for(int i=1;i<=a;i++){
for(int j=b;j>=1;j--){
int q=r[i-1][j]-1,p=r[i][j+1]-1;
int t=max(0,max(q,p));
r[i][j]=max(max(g[i][j],t),r[i][j]);
}
}
//左下角
for(int i=a;i>=1;i--){
for(int j=1;j<=b;j++){
int q=r[i+1][j]-1,p=r[i][j-1]-1;
int t=max(0,max(q,p));
r[i][j]=max(max(g[i][j],t),r[i][j]);
}
}
for(int i=1;i<=a;i++){
for(int j=1;j<=b;j++){
if(j!=1)printf(" ");
printf("%d",r[i][j]);
}
printf("\n");
}
}
int main() {
solve();
return 0;
}
原文地址:https://www.cnblogs.com/Fanxw/p/15085281.html
- 腾讯云GAME-TECH沙龙干货回顾:三七互娱游戏全球化运营心得分享
- 《实现模式》读书总结
- 腾讯云 GAME-TECH 沙龙干货回顾:Eyougame 海外发行实践分享
- 腾讯 AI Lab 副主任俞栋:过去两年基于深度学习的声学模型进展
- 白辉(七公):电商转型难题,看云如何破题
- 《Node.js在CLI下的工程化体系实践》成都OSC源创会分享总结
- 5分钟教你玩转 sklearn 机器学习(上)
- WebSocket系列之socket.io
- Python 数据分析学习笔记
- ERP管理软件系统设计方案
- 腾讯云GAME-TECH沙龙——全球同服游戏语音解决方案
- 【Scikit-Learn 中文文档】双聚类 - 无监督学习 - 用户指南 | ApacheCN
- ASP.NET MVC的客户端验证:jQuery的验证
- RxJava系列一
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【赵渝强老师】Docker的日志
- 超全递归技巧整理,这次一起拿下递归
- [译] React 测试驱动开发:从用户故事到产品
- 计算机基础之位运算 | 按位取反
- 关于php的ini文件相关操作函数浅析
- PHP中的输出缓冲控制
- SpringCloud微服务:基于Nacos组件,整合Dubbo框架
- [译] 使用 microbundle 打包 TypeScript 组件库
- 3分钟短文 | Laravel 获取模型查询生成的SQL语句
- 基于git的测试用例管理方案
- 【赵渝强老师】MongoDB管理用户的认证机制
- 使用Microsoft Teams Updater执行代码
- 腾讯云 Serverless 云函数实现 CKafka 数据转存到 ES
- 软硬件都开源!基于千兆以太网的温度传感应用
- 【赵渝强老师】使用Docker Compose进行服务编排