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