A. Bus to Pénjamo

题意

有一辆车上面有 \(r\) 排座位,每排有 \(2\) 个座位,现在共 \(n\) 个家庭出行坐公交车,每个家庭 \(a_i\) 个人(保证 \(2r\ge \sum a_i\))。

一个人感到 开心,当且仅当符合一下条件 之一

  • 他和他的家庭成员坐在一排
  • 他独自一人坐在一排(旁边不能有其他人)

问最终最多有多少人 开心

思路

贪心,先让可以两个人一排的家庭成员入座,剩下的看 \([座位数]\) 与 \([剩余人数]\) 的差,得出有多少人能单独坐一排

C++ 代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,r;
void solve(){
cin>>n>>r;
int k=0;
int ans=0;
for(int i=0;i<n;i++){
int ai;
cin>>ai;
k+=(ai%2); //k表示每个家庭落单的人数
r-=(ai/2); //r最终表示还剩下几排座位
ans+=ai-ai%2;
}
r*=2; //还剩r个座位
ans+=min(r-k,k);
cout<<ans<<endl;
}
signed main(){
int t;
cin>>t;
while(t--){
solve();
}
return 0;
}

B. Kar Salesman

题意

共有 \(n\) 中型号的车,第 \(i\) 种型号的车有 \(a_i\) 辆,每次 \(\text{Karel}\) 可以推荐别人购买至多 \(x\) 辆车,且这些为 不同型号

问至少要推销给多少个人才能卖完这些车

思路

求出车数量的总和(设为 \(sum\) ),和 \(a_i\) 的最大值(设为 \(mx\)),最终答案为:\(\displaystyle \max(mx,\lceil \frac{sum}{x} \rceil)\)

C++ 代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
void solve(){
int n,x;
cin>>n>>x;
int mx=0,sum=0;
for(int i=0;i<n;i++){
int ai;
cin>>ai;
mx=max(mx,ai);
sum+=ai;
}
cout<<max(mx,(sum+x-1)/x)<<endl;
}
signed main(){
int t;
cin>>t;
while(t--){
solve();
}
return 0;
}

C. Gerrymandering

题意

一个 \(2*n\) 的网格图,每格代表一个居民(需要进行投票选举,可以投给 A 也可以投给 J),保证 \(2n \bmod 3 =0\),将它分成 连通的 \(3\) 个一组,这一组 将投给 三个人投的更多的人,如 \(2\) 个 A \(1\) 个 J,则这一组投给 A

问:若按最优方案分组,最终投给 \(A\) 的组最多有多少

思路

需要动态规划,仅分为以下情况:

那么,只要转移正确就很简单

转移直接看代码

C++ 代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int inf=2e9;
int n;
bool check(int a,int b,int c){
int p=(a=='A'),q=(b=='A'),r=(c=='A');
return (p+q+r>=2);
}
void solve(){
cin>>n;
string s[2];
cin>>s[0]>>s[1];
vector<vector<int> > dp(2,vector<int>(n+1,-inf));
dp[0][0]=0;
for(int i=0;i<n;i++){
if(i%3==0){
dp[0][i+3]=max(dp[0][i+3],
dp[0][i]+check(s[0][i],s[0][i+1],s[0][i+2]) //###
+check(s[1][i],s[1][i+1],s[1][i+2])); //### dp[0][i+1]=max(dp[0][i+1], //##
dp[0][i]+check(s[0][i],s[1][i],s[0][i+1])); //#. dp[1][i+1]=max(dp[1][i+1], //#.
dp[0][i]+check(s[0][i],s[1][i],s[1][i+1])); //## }else if(i%3==1){
if(i<n-3){
dp[0][i+3]=max(dp[0][i+3],
dp[0][i]+check(s[0][i+1],s[0][i+2],s[0][i+3]) //.###
+check(s[1][i],s[1][i+1],s[1][i+2])); //###. dp[1][i+3]=max(dp[1][i+3],
dp[1][i]+check(s[0][i],s[0][i+1],s[0][i+2]) //###.
+check(s[1][i+1],s[1][i+2],s[1][i+3])); //.###
} dp[0][i+2]=max(dp[0][i+2], //.#
dp[0][i]+check(s[1][i],s[1][i+1],s[0][i+1])); //## dp[0][i+2]=max(dp[0][i+2], //##
dp[1][i]+check(s[0][i],s[0][i+1],s[1][i+1])); //.#
}
}
cout<<dp[0][n]<<endl;
}
signed main(){
int t
cin>>t;
while(t--){
solve();
}
return 0;
}

D1. Asesino (Easy Version)

题意

这是一道 交互题

有一种游戏,共有三种角色:Knight, Knave, Impostor,可以理解为:好人、坏人和内鬼

每局游戏有 \(n\) 个人,其中有 \(1\) 个内鬼,若干个好人和坏人(可能 \(0\) 个)

你忘记了每个人的角色,但是,你可以问玩家 \(i\) :玩家 \(j\) 是不是好人?询问格式:? i j

玩家 \(i\) 会回答你 1 表示是好人,0 表示不是好人

以下为不同身份的回答表格:

最多询问 \(n+69\) 次,请找出内鬼是玩家几,格式为 ! i

思路

观察表格发现,若 \([i\ 认为 \ j 的身份]\) 和 \([j \ 认为\ i\ 的身份]\) 不同,那么 \(i\) 和 \(j\) 中必定有一个内鬼

那么我们可以问每两个相邻的人,\(i\) 和 \(i+1\) 互相问,\(i+2\) 和 \(i+3\) 互相问,以此类推,最终找到 \(k\) 和 \(k+1\) 不同的位置,再和其他的比较,就可以得到内鬼的位置

C++ 代码

#include<bits/stdc++.h>
using namespace std;
int n;
bool query(int a,int b){
cout<<"? "<<a<<" "<<b<<endl;
int p;
cin>>p;
cout<<"? "<<b<<" "<<a<<endl;
int q;
cin>>q;
return p!=q;
}
void solve(){
cin>>n;
int pos=-1;
for(int i=1;i<n;i+=2){
bool flag=query(i,i+1);
if(flag){
pos=i;
break;
}
}
if(pos==-1){
cout<<"! "<<n<<endl;
}else if(query(pos,pos>1?pos-1:pos+2)){
cout<<"! "<<pos<<endl;
}else{
cout<<"! "<<pos+1<<endl;
}
}
int main(){
int t;
cin>>t;
while(t--){
solve();
}
return 0;
}

Codeforces Round 978 (Div. 2) A-D1 题解的更多相关文章

  1. Codeforces Round #612 (Div. 2) 前四题题解

    这场比赛的出题人挺有意思,全部magic成了青色. 还有题目中的图片特别有趣. 晚上没打,开virtual contest打的,就会前三道,我太菜了. 最后看着题解补了第四道. 比赛传送门 A. An ...

  2. Codeforces Round #198 (Div. 2)A,B题解

    Codeforces Round #198 (Div. 2) 昨天看到奋斗群的群赛,好奇的去做了一下, 大概花了3个小时Ak,我大概可以退役了吧 那下面来稍微总结一下 A. The Wall Iahu ...

  3. Codeforces Round #672 (Div. 2) A - C1题解

    [Codeforces Round #672 (Div. 2) A - C1 ] 题目链接# A. Cubes Sorting 思路: " If Wheatley needs more th ...

  4. Codeforces Round #741 (Div. 2), problem: (D1) Two Hundred Twenty One (easy version), 1700

    Problem - D1 - Codeforces 题意: 给n个符号(+或-), +代表+1, -代表-1, 求最少删去几个点, 使得     题解(仅此个人理解): 1. 这题打眼一看, 肯定和奇 ...

  5. Codeforces Round #579 (Div. 3) 套题 题解

    A. Circle of Students      题目:https://codeforces.com/contest/1203/problem/A 题意:一堆人坐成一个环,问能否按逆时针或者顺时针 ...

  6. Codeforces Round #614 (Div. 2) A-E简要题解

    链接:https://codeforces.com/contest/1293 A. ConneR and the A.R.C. Markland-N 题意:略 思路:上下枚举1000次扫一遍,比较一下 ...

  7. Codeforces Round #610 (Div. 2) A-E简要题解

    contest链接: https://codeforces.com/contest/1282 A. Temporarily unavailable 题意: 给一个区间L,R通有网络,有个点x,在x+r ...

  8. Codeforces Round #611 (Div. 3) A-F简要题解

    contest链接:https://codeforces.com/contest/1283 A. Minutes Before the New Year 题意:给一个当前时间,输出离第二天差多少分钟 ...

  9. Codeforces Round #741 (Div. 2)部分题题解

    我果然还是太菜了,就写了两道题....真是水死了.... A The Miracle and the Sleeper 简化题意:给定\(l,r\),求\(a\)%\(b\)的最大值,其中\(r> ...

  10. Codeforces Round #499 (Div. 2) D. Rocket题解

    题目: http://codeforces.com/contest/1011/problem/D This is an interactive problem. Natasha is going to ...

随机推荐

  1. linux ubuntu安装mysql

    一.下载安装 sudo apt-get install mysql-server 二.初始化配置 查看密码:sudo more /etc/mysql/debian.cnf 连接:mysql -uroo ...

  2. WPF 控件库

    1.  wpftoolkit:  https://archive.codeplex.com/?p=wpftoolkit 2.  wpg : https://archive.codeplex.com/? ...

  3. 几乎全平台的C语言JSON解析工具cJSON[转载]

    最近在做一个外设管理平台,用PYTHON写了一个连接管理,兼容串口和套接字的连接,然后抽象为设备统一管理.使用套接字时JSON是一种很好的数据封装类型,假设我需要远程操控一个设备,发送一个JSON的数 ...

  4. IDM 下载器 汉化注册激活

    将以下程序更改为.bat文件.使用windows的管理员权限打开. 汉化于:https://github.com/WindowsAddict/IDM-Activation-Script @setloc ...

  5. JUC并发—12.ThreadLocal源码分析

    大纲 1.ThreadLocal的特点介绍 2.ThreadLocal的使用案例 3.ThreadLocal的内部结构 4.ThreadLocal的核心方法源码 5.ThreadLocalMap的核心 ...

  6. 飞牛fnOs安装autman奥特曼机器人喂饭教程

    前言 简介:autman奥特曼机器人是干什么的? autMan是机器人牵引的扩展性极强的一站式解决方案 原生支持对接qq框架.qq频道.微信框架(酷V西瓜可爱猫千寻鲲鹏).内置微信.微信客服.公众号. ...

  7. python实现监控站点目录,记录每天更新内容,并写入操作日志,以便查找病毒恶意修改

    问题描述:站点需要追溯代码的修改时间,以便尽早发现病毒恶意修改迹象,及时处理 运行环境:linux服务器,宝塔面板 示例代码:一.读取txt的文件路径,依次遍历所有目录下面的文件,并记录文件信息 pa ...

  8. C++17 Filesystem 实用教程

    点击查看代码 C++17 标准带来了 std::filesystem库, 提供了强大的工具来处理文件路径, 目录以及其他与文件系统相关的操作. 这篇文章适合 C++ 初学者以及希望掌握 C++17 新 ...

  9. MyBatis与其使用方法讲解

    ORM 在讲解Mybatis之前,我们需了解一个概念ORM(Object-Relational Mapping)对象关系映射,其是数据库与Java对象进行映射的一个技术.通过使用ORM,我们可以不用编 ...

  10. ABAQUS阻尼设置

    结构阻尼 瑞利阻尼