【vjudge contest 418548】2021 BUAA Winter Training 3(Private),签到题ABCDG
题目
A Amazing Pizza
/*
题意:给出一个圆环和n个圆,求多少个圆在圆环内
思路:先检查它是否在大圆内,再检查它是否在小圆外。
*/
#include<bits/stdc++.h>
using namespace std;
int main(){double r, d; cin>>r>>d;int n; cin>>n;int ans = 0;for(int i = 1; i <= n; i++){double x, y, r1; cin>>x>>y>>r1;double c = sqrt(x*x+y*y);if(r-c>=r1 && c-(r-d)-r1>=0)ans++;}cout<<ans<<"\n";return 0;
}
B Beware the Position
/*
+ n个人,每个人的位置为xi。m条信息,ri在li右边d的位置。
+ 求判断是否存在一组信息子集不冲突。
+ 以{l,r,d}为边建立有向图,跑一遍最短路,如果遇到冲突就No
*/
#include<bits/stdc++.h>
using namespace std;
struct node{int u, dist;};
int main(){int n, m; cin>>n>>m;vector<vector<node>>G(n);for(int i = 0; i < m; i++){int l, r, d; cin>>l>>r>>d;l--; r--;G[l].push_back(node({r, d}));G[r].push_back(node({l, -d}));}vector<int>dist(n,-2e9);for(int i = 0; i < n; i++){if(dist[i]!=-2e9)continue;dist[i] = 0;queue<int>q;q.push(i);while(q.size()){int t = q.front(); q.pop();for(auto to:G[t]){if(dist[to.u] == -2e9){dist[to.u] = dist[t] + to.dist;q.push(to.u);}else{if(dist[to.u] == dist[t] + to.dist)continue;else {cout<<"No\n"; return 0;}}}}}cout<<"Yes\n";return 0;
}
C Beware the Position
/*
+ 题意:给出一个长为n的数组。现在将每个数k移至(k+a[k])%n,判断新产生的n个数是否会冲突
+ 思路:用set模拟,每次都加进去,最后既没有重复个数也相同就行。
*/
#include<bits/stdc++.h>
using namespace std;
int main(){int T; cin>>T;while(T--){int n; cin>>n;set<int>se;for(int i = 0; i < n; i++){int x; cin>>x;se.insert(((i+x)%n+n)%n);}if(se.size()==n)cout<<"YES\n";else cout<<"NO\n";}return 0;
}
D Divide and Conquer
/*
题意:
+ 存在一个长为n的01串,题目给出n。可以询问15次,确定01串中某个0和1的位置(题目保证存在)
+ 每次用一个长为n的01串提问,返回具有不同符号的位置数。
思路:
+ 第一次询问由全由0组成的串,得到的就是串中1的个数num1
+ 如果一个区间里只有0,那么构造一个只有区间[L,R]里面全是1,其他地方全是0的序列去询问的话,返回值req = num1+(R-L+1)。如果一个区间里只有0,那么构造一个只有区间[L,R]里面全是0,其他地方全是1的序列去询问的话,返回值req = num1-(R-L+1)。否则返回值就是介于之间的。
+ 此时可以二分答案,去找一个长度为2的"01"或"10"串。当[mid,R]中既有0又有1时L = mid,直到[L,R]区间长度为2为止。最后再询问一次就可以获得答案了。
*/
#include<bits/stdc++.h>
using namespace std;
int n, num1;
bool check(int L, int R){string t = string(L-1,'0')+string(R-L+1,'1')+string(n-R,'0');cout<<"? "<<t<<"\n";fflush(stdout);int req; cin>>req;if(req>num1-(R-L+1) && req<num1+(R-L+1))return true;else return false;
}
int main(){cin>>n;cout<<"? "<<string(n,'0')<<"\n";fflush(stdout);cin>>num1;int L = 1, R = n;while(R-L >= 2){int mid = (L+R)/2;if(check(mid,R))L = mid;else R = mid;}string t(n,'0'); t[L-1] = '1';cout<<"? "<<t<<"\n";fflush(stdout);int req; cin>>req;cout<<"! ";if(req==num1+1)cout<<L<<" "<<R<<"\n";else cout<<R<<" "<<L<<"\n";fflush(stdout);return 0;
}
G Great Structure
/*
Atcoder, agc020_c
题意:
+ 给出一个长为n的序列,考虑所有(2^n-1)个非空子序列的和
+ 令这些和升序排列,输出它们的中位数。
思路:
+ 将序列等价于集合S,子序列就是非空子集A。对于每个A,它的补集要么是空集,要么也在S中。
+ 将两个互补的子集看做一组,那么每组中至少一个子集>=sum/2,另一个子集<=sum/2。
+ 所以这个序列的中位数就是第一个大于等于sum/2的子集,所以可以用01背包来解。
+ 因为V=4e6,N=2e3,VN=8e9,会超时,因为是二进制所以可以用bitset优化。因为dp[i]=max(dp[i],dp[i-ai]),所以左移的操作就可以做到这个目的。
+ 比如101011,ai=3,101011<<3=101011000,101011000|101011=10111011就相当于用ai更新了一次。
*/
#include<bits/stdc++.h>
using namespace std;
const int maxn = 4e6+10;
bitset<maxn>b;
int main(){int n; cin>>n;int sum = 0;vector<int>a(n);for(int i = 0; i < n; i++){cin>>a[i]; sum += a[i];}b[0] = 1;for(int i = 0; i < n; i++)b |= (b<<a[i]);int ans = sum+1>>1;while(b[ans]==0)ans++;cout<<ans<<"\n";return 0;
}
【vjudge contest 418548】2021 BUAA Winter Training 3(Private),签到题ABCDG相关推荐
- 2021 HZNU Winter Training Day 17 (2018 German Collegiate Programming Contest (GCPC 18))
2021 HZNU Winter Training Day 17 (2018 German Collegiate Programming Contest (GCPC 18)) 题目 A B C D E ...
- 2021 HZNU Winter Training Day 18
目录 Solutions A. 星球大战starwar B. Median C. Obtain Two Zeroes D. Naive Operations E. Co-prime F. Lightn ...
- 2020 BUPT Winter Training #1 Div.1
2020 BUPT Winter Training #1 Div.1 这些题真的很不错 读完题一道都不会 补完每一道都骂自己sb 文章目录 [A - Cover it!](https://vjudge ...
- 2015 UESTC Winter Training #10【Northeastern Europe 2009】
2015 UESTC Winter Training #10 Northeastern Europe 2009 最近集训都不在状态啊,嘛,上午一直在练车,比赛时也是刚吃过午饭,状态不好也难免,下次比赛 ...
- 2015 UESTC Winter Training #6【Regionals 2010 North America - Rocky Mountain】
2015 UESTC Winter Training #6 Regionals 2010 >> North America - Rocky Mountain A - Parenthesis ...
- 2021 ICPC 南京站总结以及真题PDF
文章目录 记第一次ICPC The 2021 Asia Nanjing Regional Contest 记第一次ICPC 2021/12/4,参加了第一次 ICPC 比赛,说实话,比赛前的心态已经觉 ...
- 2108889队2021年数学建模美赛C题花絮视频!
2108889队2021年数学建模美赛C题花絮视频
- A6.2021年全国数学建模竞赛C题分析-生产企业原材料的订购与运输
Python小白的数学建模课-A6.2021年全国数学建模竞赛 C题分析. 2021全国大学生数学建模 赛题将于9月9日18时公布. 『Python小白的数学建模课 @ Youcans』带你从数模小白 ...
- A5.2021年全国数学建模竞赛B题-赛题分析与评阅要点(乙醇偶合制备C4烯烃分析)
A5.2021年全国数学建模竞赛B题-赛题分析与评阅要点(乙醇偶合制备C4烯烃分析),本文转载竞赛赛题.评阅要点,进行赛题解读和分析. 评阅要点为竞赛组委会官方公布,完整体现了解题思路. 本文首发于 ...
最新文章
- spring中怎么访问MySQL过程_【FunnyBear的Java之旅 - Spring篇】7步连接MySQL
- win7 64位安装mysql教程视频_64位Win7系统安装Mysql 5.7.22图文教程
- POJ3111 K Best —— 01分数规划 二分法
- 混合开发的坑(7) ---输入文本时,键盘遮挡
- 转】MYSQL性能调优与架构设计之select count(*)的思考
- 云原生生态周报 Vol. 11 | K8s 1.16 早知道
- C语言再学习 -- 运算符与表达式
- Java Decimal范围_Java BigDecimal初探
- tomcat apache mysql_Android实现与Apache Tomcat服务器数据交互(MySql数据库)
- Java 8 Friday:不再需要ORM
- php后端mysql,【后端开发】PHP如何处理MySQL死连接
- 修改oracle重做日志文件大小
- django 1.8 官方文档翻译:13-12 验证器
- android编程文献,郭宏志. Android应用开发详解[M]. 2011.
- Linux 文件权限、用户权限和用户组管理vim的一些基本使用技巧
- 泰山游记:路上瓶装水很便宜,2元
- host smbus controller not enabled解决方法(主机smbus控制器未启用)
- 计算机桌面不显示时间,怎么把时间显示在桌面
- 嵌入式开发:调试嵌入式软件的技巧
- Windows 制作 QQ加好友 或 临时会话 的链接地址
热门文章
- Python 标准库 csv —— csv 文件的读写
- 网络基石 —— 双绞线、水晶头与 MIC
- java threadlocal 并发_Java并发编程:ThreadLocal
- python难学吗-我没有基础,能否学会Python?Python难吗?
- 什么是python基础教程-python基础教程之python是什么?概念解析
- 为什么都建议学java而不是python-是不是Python比Java更容易学,更容易就业?
- 音频录制和Speech语音识别(ios10)
- windows mobile设置插移动卡没反应_u盘插入电脑没反应怎么办 u盘插入电脑没反应解决方法【详解】...
- tomact配置好ssl证书后访问不到tomact_服务器上配置HTTPS的操作方法!
- c++vector操作