题目

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相关推荐

  1. 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 ...

  2. 2021 HZNU Winter Training Day 18

    目录 Solutions A. 星球大战starwar B. Median C. Obtain Two Zeroes D. Naive Operations E. Co-prime F. Lightn ...

  3. 2020 BUPT Winter Training #1 Div.1

    2020 BUPT Winter Training #1 Div.1 这些题真的很不错 读完题一道都不会 补完每一道都骂自己sb 文章目录 [A - Cover it!](https://vjudge ...

  4. 2015 UESTC Winter Training #10【Northeastern Europe 2009】

    2015 UESTC Winter Training #10 Northeastern Europe 2009 最近集训都不在状态啊,嘛,上午一直在练车,比赛时也是刚吃过午饭,状态不好也难免,下次比赛 ...

  5. 2015 UESTC Winter Training #6【Regionals 2010 North America - Rocky Mountain】

    2015 UESTC Winter Training #6 Regionals 2010 >> North America - Rocky Mountain A - Parenthesis ...

  6. 2021 ICPC 南京站总结以及真题PDF

    文章目录 记第一次ICPC The 2021 Asia Nanjing Regional Contest 记第一次ICPC 2021/12/4,参加了第一次 ICPC 比赛,说实话,比赛前的心态已经觉 ...

  7. 2108889队2021年数学建模美赛C题花絮视频!

    2108889队2021年数学建模美赛C题花絮视频

  8. A6.2021年全国数学建模竞赛C题分析-生产企业原材料的订购与运输

    Python小白的数学建模课-A6.2021年全国数学建模竞赛 C题分析. 2021全国大学生数学建模 赛题将于9月9日18时公布. 『Python小白的数学建模课 @ Youcans』带你从数模小白 ...

  9. A5.2021年全国数学建模竞赛B题-赛题分析与评阅要点(乙醇偶合制备C4烯烃分析)

    A5.2021年全国数学建模竞赛B题-赛题分析与评阅要点(乙醇偶合制备C4烯烃分析),本文转载竞赛赛题.评阅要点,进行赛题解读和分析. 评阅要点为竞赛组委会官方公布,完整体现了解题思路. 本文首发于 ...

最新文章

  1. spring中怎么访问MySQL过程_【FunnyBear的Java之旅 - Spring篇】7步连接MySQL
  2. win7 64位安装mysql教程视频_64位Win7系统安装Mysql 5.7.22图文教程
  3. POJ3111 K Best —— 01分数规划 二分法
  4. 混合开发的坑(7) ---输入文本时,键盘遮挡
  5. 转】MYSQL性能调优与架构设计之select count(*)的思考
  6. 云原生生态周报 Vol. 11 | K8s 1.16 早知道
  7. C语言再学习 -- 运算符与表达式
  8. Java Decimal范围_Java BigDecimal初探
  9. tomcat apache mysql_Android实现与Apache Tomcat服务器数据交互(MySql数据库)
  10. Java 8 Friday:不再需要ORM
  11. php后端mysql,【后端开发】PHP如何处理MySQL死连接
  12. 修改oracle重做日志文件大小
  13. django 1.8 官方文档翻译:13-12 验证器
  14. android编程文献,郭宏志. Android应用开发详解[M]. 2011.
  15. Linux 文件权限、用户权限和用户组管理vim的一些基本使用技巧
  16. 泰山游记:路上瓶装水很便宜,2元
  17. host smbus controller not enabled解决方法(主机smbus控制器未启用)
  18. 计算机桌面不显示时间,怎么把时间显示在桌面
  19. 嵌入式开发:调试嵌入式软件的技巧
  20. Windows 制作 QQ加好友 或 临时会话 的链接地址

热门文章

  1. Python 标准库 csv —— csv 文件的读写
  2. 网络基石 —— 双绞线、水晶头与 MIC
  3. java threadlocal 并发_Java并发编程:ThreadLocal
  4. python难学吗-我没有基础,能否学会Python?Python难吗?
  5. 什么是python基础教程-python基础教程之python是什么?概念解析
  6. 为什么都建议学java而不是python-是不是Python比Java更容易学,更容易就业?
  7. 音频录制和Speech语音识别(ios10)
  8. windows mobile设置插移动卡没反应_u盘插入电脑没反应怎么办 u盘插入电脑没反应解决方法【详解】...
  9. tomact配置好ssl证书后访问不到tomact_服务器上配置HTTPS的操作方法!
  10. c++vector操作