A.winners总数为(k+1)diplomas。

#include<bits/stdc++.h>
using namespace std; long long n,k; int main()
{
ios::sync_with_stdio();
cin >> n >> k;
long long t = n//(k+);
cout << t << " " << t*k << " " << n-t*(+k) << endl;
return ;
}

B.一步步确定每个a值,若冲突,则不存在。

#include<bits/stdc++.h>
using namespace std; int n,m,a[],ans[] = {};
map<int,int> used; int main()
{
ios::sync_with_stdio();
cin >> n >> m;
for(int i = ;i <= m;i++) cin >> a[i];
for(int i = ;i <= m;i++)
{
if(ans[a[i-]])
{
if((a[i-]+ans[a[i-]]-)%n+ != a[i])
{
cout << - << endl;
return ;
}
}
else
{
int t = a[i]-a[i-];
if(t <= ) t += n;
if(used.count(t))
{
cout << - << endl;
return ;
}
ans[a[i-]] = t;
used[t] = ;
}
}
int now = ;
for(int i = ;i <= n;i++)
{
if(ans[i]) cout << ans[i] << " ";
else
{
while(used.count(now)) now++;
cout << now << " ";
used[now] = ;
}
}
return ;
}

C.统计每个横坐标,纵坐标的4个方向的前缀后缀和,暴力比较每个沙发,注意减去自己。

#include<bits/stdc++.h>
using namespace std; int d,n,m,ll,rr,tt,bb,x[],xx[],y[],yy[],l[] = {},r[] = {},t[] = {},b[] = {}; int main()
{
ios::sync_with_stdio();
cin >> d >> n >> m;
for(int i = ;i <= d;i++)
{
cin >> x[i] >> y[i] >> xx[i] >> yy[i];
l[min(x[i],xx[i])]++;
r[max(x[i],xx[i])]++;
t[min(y[i],yy[i])]++;
b[max(y[i],yy[i])]++;
}
cin >> ll >> rr >> tt >> bb;
for(int i = ;i <= max(n,m);i++)
{
l[i] += l[i-];
t[i] += t[i-];
}
for(int i = max(n,m);i >= ;i--)
{
r[i] += r[i+];
b[i] += b[i+];
}
for(int i = ;i <= d;i++)
{
int cntl = l[max(x[i],xx[i])-];
int cntr = r[min(x[i],xx[i])+];
int cntt = t[max(y[i],yy[i])-];
int cntb = b[min(y[i],yy[i])+];
if(x[i] != xx[i])
{
cntl--;
cntr--;
}
else
{
cntt--;
cntb--;
}
if(cntl == ll && cntr == rr && cntt == tt && cntb == bb)
{
cout << i << endl;
return ;
}
}
cout << - << endl;
return ;
}

D.只要累加当前符合要求的颜色数量就可以了。

#include<bits/stdc++.h>
using namespace std; int n,c,a[] = {}; int main()
{
ios::sync_with_stdio();
cin >> n >> c;
for(int i = ;i <= n;i++)
{
int x;
cin >> x;
if(a[x] >= a[c]) a[x]++;
}
for(int i = ;i <= ;i++)
{
if(a[i] >= a[c] && i != c)
{
cout << i << endl;
return ;
}
}
cout << - << endl;
return ;
}

E.相乘整除一个数可以用相乘取模为0表示,从左往右找整除的一段,然后从右往左缩小这一段到最小,把两边的情况乘起来,因为一直重复这种操作会有重复的情况多计算了,所以每一次计算后更新首位置。

#include<bits/stdc++.h>
using namespace std; int n,k,a[]; int main()
{
ios::sync_with_stdio();
cin >> n >> k;
for(int i = ;i <= n;i++) cin >> a[i];
int b = ;
long long now = ,ans = ;
for(int r = ;r <= n;r++)
{
now = now*a[r]%k;
if(!now)
{
int l = r+;
long long t = ;
while(--l)
{
t = t*a[l]%k;
if(!t) break;
now = t;
}
ans += (long long)(n-r+)*(l-b);
b = l;
}
}
cout << ans << endl;
return ;
}

F.n个点中,选k个组成一个连通图,其他n-k个连出去,因为n-k ≥ 连通图的边数,因此k个组成的连通图的边为

最后答案为,二分确定k的临界,把临界点两边的两个点都算一下。

#include<bits/stdc++.h>
using namespace std; int q;
long long n; int main()
{
ios::sync_with_stdio();
cin >> q;
while(q--)
{
cin >> n;
long long l = ,r = n;
while(l < r)
{
long long mid = (l+r+)/;
if(n-mid < mid*(mid-)/) r = mid-;
else l = mid;
}
cout << max(n-l+l*(l-)/,n-(l+)+n-(l+)) << endl;
}
return ;
}

最新文章

  1. Marvel – 将图像和源文件转换成互动,共享的原型
  2. ORA-00911: 无效字符
  3. Merge Sort
  4. 静态链表 C语言描述
  5. SAP实施方法与过程——ASAP
  6. CoreAnimation 核心动画一 (一些常用属性 和 方法)
  7. Js中的运算符
  8. Java中的局部代码块、构造代码块、静态代码块
  9. 2013.7.19 STL库的学习
  10. Deep learning:三十八(Stacked CNN简单介绍)
  11. win10 DVWA下载安装配置(新手学渗透)
  12. poj1456 Supermarket 贪心+并查集
  13. AspNetCore.AsyncInitialization库源码分析
  14. 第11章 使用OpenID Connect添加用户身份验证 - Identity Server 4 中文文档(v1.0.0)
  15. python3列表(list)
  16. java控制台连接数据库
  17. SQL-59 按照salary的累计和running_total,其中running_total为前两个员工的salary累计和,其他以此类推。
  18. Python 装饰器(笔记,非原创)
  19. 关于 Image Caption 中测试时用到的 beam search算法
  20. .Net调用QQ邮箱发送邮件

热门文章

  1. 1089 狼人杀-简单版 (20 分)C语言
  2. 并发编程的基石——CAS机制
  3. WIN10高清壁纸
  4. Git 合并多次提交
  5. KnockoutJs官网教程学习(一)
  6. 通过VS2019使用Web部署发布.net core程序
  7. IDEA中springboot的热部署
  8. moco响应中文乱码
  9. 深入学习MySQL 02 日志系统:bin log,redo log,undo log
  10. 1. RevitAPI 基础(上)