A题:n个学生,分成任意组,要求每组中任意两名学生的技能值相差不等于1,问最小分组.

 #include<bits/stdc++.h>

 using namespace std;

 #define int long long
int arr[];
signed main(){
int _;
cin>>_;
while(_--){
int n;
cin>>n;
for(int i=;i<=n;i++)
cin>>arr[i];
sort(arr+,arr++n);
int sum=;
int flag=;
for(int i=;i<n;i++){
if(arr[i+]-arr[i]==){
flag=;
break;
}
}
if(flag){
printf("2\n");
}else{
printf("1\n");
}
}
return ;
}
/* */

B1题:

题意:n个学生,每个学生有单独的一本书,每天学生 i 会把 书给 ai,问每个学生重新拿到自己的书经过的天数。

思路:一发暴力水过

 #include<bits/stdc++.h>

 using namespace std;
#define int long long
int arr[];
int ans[];
signed main(){
int _;
cin>>_;
while(_--){
int n;
cin>>n;
for(int i=;i<=n;i++)
scanf("%lld",&arr[i]);
for(int i=;i<=n;i++){
int sum=;
int temp=i;
while(){
sum++;
if(arr[temp]==i){
break;
}
temp=arr[temp];
}
ans[i]=sum;
}
for(int i=;i<=n;i++){
printf("%lld ",ans[i]);
}
printf("\n");
}
return ;
}

B2:

找环,只要在同一个环的天数相等。开始暴力。。。。。。。。。。。

 #include<bits/stdc++.h>

 using namespace std;
#define int long long
#define N 200020
int arr[N];
int ans[N];
int vis[N];
int a[N];
signed main(){
int _;
cin>>_;
while(_--){
int n;
scanf("%lld",&n);
for(int i=;i<=n;i++){
scanf("%lld",&arr[i]);
vis[i]=;
} for(int i=;i<=n;i++){
int sum=;
if(vis[i])
continue;
int temp=i;
vector<int> v;
while(){
sum++;
if(arr[temp]==i){
break;
}
temp=arr[temp];
v.push_back(temp);
}
vis[i]=sum;
for(int j=;j<v.size();j++){
vis[v[j]]=sum;
}
// vis[i]=sum;
}
for(int i=;i<=n;i++){
printf("%lld ",vis[i]);
}
printf("\n");
}
return ;
}
/* 3 6
1 3 4 9 10
1 2 3 4 5
5 1 2 4 3
4 4 4 1 4
*/

C1:

题意:求大于n的m,m有不同的3的次幂。

想到进制,即可知道符合的数字3进制转换后只有1和0. 暴力一下。

 #include<bits/stdc++.h>

 using namespace std;
#define int long long
int ans[]; signed main(){ int _;cin>>_;
while(_--){
int n;
scanf("%lld",&n);
if(n==){
cout<<""<<endl;continue;
}
if(n==){
cout<<<<endl;continue;
}
int i=n;
for(;;i++){
int temp=i;
int flag=;
while(temp){
int x=temp%;
if(x!=&&x!=){
flag=;
break;
}
temp/=;
}
if(flag){
cout<<i<<endl;
break;
}
}
}
return ;
}

C2:

思路:从左到右,找到第一个2的位置,然后开始模拟进位。第一个2后面的数全改为0。调了好久的BUG。

 /*
10212121111
11000000000
110121212211
111000000000
11212211221
10000000000
*/
#include<bits/stdc++.h>
using namespace std;
#define int long long
int fpow(int a,int b){
int res=;
while(b){
if(b%){
res*=a;
}
a*=a;
b/=;
}
return res;
}
signed main(){
int _;cin>>_;
while(_--){
int n;
cin>>n;
vector<int> v;
int temp;
temp=n;
while(temp){
v.push_back(temp%);
temp/=;
}
int flag1=-;
int flag2=;
int cnt=;
/*
for(int i=v.size()-1;i>=0;i--){ }
cout<<endl;
*/
for(int i=v.size()-;i>=;i--){
if(v[i]==){
flag1=i;
break;
}
if(v[i]==){
flag2=i;
}
}
if(flag1==-){
cout<<n<<endl;
continue;
}
if(!flag2){
int x=v.size();
cout<<fpow(,x)<<endl;
continue;
}else{
int ans[];
int cnt=;
for(int i=v.size()-;i>=;i--)
ans[i]=v[i];
int j;
for( j=flag1;j<v.size();j++){ if(ans[j]==){
ans[j]=;
ans[j+]=ans[j+]+;
}
}/*
for(int i=v.size()-1;i>=0;i--){
cout<<v[i]<<" ";
}
cout<<endl;
for(int i=0;i<j;i++){
cout<<ans[i]<<" ";
}
cout<<endl;*/
int X=;
// cout<<j<<" "<<endl;
for(int i=j-;;i--){
if(i<=flag1){
break;
}
if(ans[i])
X+=fpow(,i);
// cout<<fpow(3,i)<<" ";
}
cout<<X<<endl;
}
}
return ;
}

【补题...................................】

D1,D2题:

题意:给出n个线段,要求同一个点不能有超过k条线段覆盖。求最少要删多少条线段。

思路:r从小到大排序。r相等的时候l从小到大排序。然后进行区间的最值和区间修改。用线段树维护。

然后在网上找了一个板子 套了一下。

 #include <map>
#include <set>
#include <list>
#include <cmath>
#include <deque>
#include <queue>
#include <stack>
#include <cctype>
#include <cstdio>
#include <bitset>
#include <string>
#include <vector>
#include <complex>
#include <cstring>
#include <iomanip>
#include <iostream>
#include <algorithm>
#include <functional> #define l(x) t[x].l
#define r(x) t[x].r
#define dat(x) t[x].dat
#define sum(x) t[x].sum
#define add(x) t[x].add
#define clean(x, y) memset(x, y, sizeof(x))
const int maxn = 1e5 + ;
const int inf = 0x3f3f3f3f;
typedef long long LL;
using namespace std; template <typename T>
inline void read(T &s) {
s = ;
T w = , ch = getchar();
while (!isdigit(ch)) { if (ch == '-') w = -; ch = getchar(); }
while (isdigit(ch)) { s = (s << ) + (s << ) + (ch ^ ); ch = getchar(); }
s *= w;
} template<typename T>
inline void write(T s) {
if (s < ) putchar('-'), s = -s;
if (s > ) write(s / );
putchar(s % + '');
} int n;
int a[maxn];
struct tree {
int l, r;
LL dat, sum, add;
} t[maxn << ]; void build(int p, int l, int r) {
l(p) = l, r(p) = r;
if (l == r) { sum(p) = a[l]; return ; }
int mid = (l + r) >> ;
build(p << , l, mid);
build(p << | , mid + , r);
dat(p) = dat(p << ) + dat(p << | );
// sum(p) = sum(p << 1) + sum(p << 1 | 1);
} void spread(int p) {
if (add(p)) {
// sum(p << 1) = add(p) * (r(p << 1) - l(p << 1) + 1);
// sum(p << 1 | 1) = add(p) * (r(p << 1 | 1) - l(p << 1 | 1) + 1);
add(p << ) += add(p);
add(p << | ) += add(p);
dat(p << ) += add(p);
dat(p << | ) += add(p);
add(p) = ;
}
} void change(int p, int l, int r, int d) {
if (l <= l(p) && r >= r(p)) {
sum(p) += (LL) d * (r(p) - l(p) + );
add(p) += d;
dat(p) += d;
return ;
}
spread(p);
int mid = (l(p) + r(p)) >> ;
if (l <= mid) change(p << , l, r, d);
if (r > mid) change(p << | , l, r, d);
sum(p) = sum(p << ) + sum(p << | );
dat(p) = max(dat(p << ), dat(p << | ));
} LL ask(int p, int l, int r) {
if (l <= l(p) && r >= r(p)) return dat(p);
spread(p);
int mid = (l(p) + r(p)) >> ;
LL val = ;
if (l <= mid) val = max(val, ask(p << , l, r));
if (r > mid) val = max(val, ask(p << | , l, r));
return val;
} int main() {
read(n);
build(, , n);
for (int i = ; i <= n; ++i) {
int opt, x, y;
read(opt), read(x), read(y);
if (opt == )
change(, x, y, );
else{
int T=ask(, x, y);
write(T); putchar('\n');
}
}
return ;
}

E题待补。

最新文章

  1. oracle临时表空间操作
  2. 微软2017校招笔试题3 registration day
  3. SQLSERVER 数据库性能的基本
  4. java web环境配置类型问题
  5. 【转】PHP网站常见安全漏洞,及相应防范措施总结
  6. UVA 10763 Foreign Exchange
  7. oracle死锁模拟
  8. 有关va_list和vsnprintf输出函数的问题
  9. String to Integer (atoi) leetcode
  10. leetcode — partition-list
  11. Spring @Qualifier
  12. Windows批量修改文件夹及子文件夹下文件的扩展名
  13. CentOS 7.X 关闭SELinux
  14. Asp.net Vnext 调试源码
  15. ExampleConfigurationSectionHandler
  16. tensorflow训练线性回归模型
  17. 【Django】Django迁移数据库
  18. mysql 索引 大于等于 走不走索引 最左前缀
  19. 特殊用途语言特性(默认实参/内联函数/constexpr函数/assert预处理宏/NDEBUG预处理变量)
  20. Spring MVC集成Log4j

热门文章

  1. Word 插入目录的 5 种方法
  2. python对影评进行评论分析,形成词云图
  3. docker相关--dockerd日志设置
  4. SpringBoot 第一篇:HelloWorld 跑起来
  5. 怎样理解new命令的执行过程
  6. 线段树 面积并问题 hdu 1255 1542
  7. Java Web 修改请求参数
  8. Node在Sublime Text3下环境搭建(node02)
  9. 菜鸡之NetCore 使用EF操作数据库 Oracle &amp; Sqlserver (一)
  10. 前端编译原理 简述-jison