Anastasia and pebbles

题意:你有两种框,每个框可以最多装k重量的物品,但是你每个框不能装不一样的物品。现在地面上有n个物品,问你最少多少次,可以把这n个物品全部装回去。

题解:其实就是问你得用多少次框,然后把多少次除以2就好了。每次装k的物品装回去就好了。

代码:

#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+7;
int a[maxn],n,k;
int main(){
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++)
cin>>a[i];
sort(a+1,a+1+n);
long long ans = 0;
for(int i=1;i<=n;i++){
ans+=(a[i]+k-1)/k;
}
cout<<(ans+1)/2LL<<endl;
}

Masha and geometric depression

题意:给你一个b1,q,再给你一个l,m,和m个数a[i]。然后你需要把不等于a[i],且小于等于l的数记录下来。

题解:直接暴力就好了,因为等比数列跑得特别快,如果要超过l的话,会很快的超过l了,而且如果答案有限的话,显然不会超过200?所以直接暴力吧。

代码:

#include<bits/stdc++.h>
using namespace std; set<long long> S;
long long b,q,l,m;
map<long long,int>H;
int main(){
cin>>b>>q>>l>>m;
for(int i=0;i<m;i++){
long long k;
cin>>k;
S.insert(k);
}
int time = 0;
int ans = 0;
long long now = b;
while(time<500000){
time++;
if(abs(now)>l)break;
if(S.find(now)==S.end()){
ans++;
}
now=now*q;
}
if(ans>30000){
cout<<"inf"<<endl;
}else{
cout<<ans<<endl;
}
}

Functions again

题意:定义f(l,r)=sigma(abs(a[i]-a[i+1)*(-1)^(i-l)),给你n个数,找到最大的f(l,r)

题解:跑一个前缀和,然后你要奇数位置开头的,那么就正常做。如果是偶数位置开始的话,那么就乘上一个-1就好了嘛。掏个set算前缀的最小值和最大值。

代码:

#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+7;
long long a[maxn],b[maxn],c[maxn];
int n;
set<long long>A,B;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++)
cin>>a[i];
if(n==2){
cout<<abs(a[1]-a[2])<<endl;
return 0;
}
for(int i=1;i<n;i++){
b[i]=abs(a[i]-a[i+1]);
if(i%2==1)c[i]=c[i-1]+b[i];
else c[i]=c[i-1]-b[i];
}
A.insert(c[1]);
B.insert(c[2]);
long long ans = max(c[1],c[2]);
ans=max(ans,abs(a[2]-a[3]));
for(int i=3;i<n;i++){
ans=max(ans,c[i]);
ans=max(ans,c[i]-*B.begin());
ans=max(ans,c[i]-*--B.end());
ans=max(ans,-(c[i]-*A.begin()));
ans=max(ans,-(c[i]-*--A.end()));
if(i%2==1)A.insert(c[i]);
else B.insert(c[i]);
}
cout<<ans<<endl;
}

D. Weird journey

题意: 给你一个图,这个图有自环,现在问你有多少个路径满足可以经过m-2条边两次,剩下两条边一次。

题解:答案为 自环与自环相组合,自环和其他边组合,其他边和其他边组合。其中其他边和其他边组合的时候,必须要挨在一起。

代码:

#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e6+7;
int n,m;
vector<int>E[maxn];
int Cnt,flag[maxn],vis[maxn],d[maxn];
void dfs(int x){
vis[x]=1;
for(int i=0;i<E[x].size();i++){
Cnt++;
if(E[x][i]==0){
Cnt++;
continue;
}
if(vis[E[x][i]])continue;
dfs(E[x][i]);
}
}
int main(){
scanf("%d%d",&n,&m);
int st = 1,cnt = 0,cnt2 = 0;
for(int i=0;i<m;i++){
int a,b;
scanf("%d%d",&a,&b);
if(a==b){
cnt ++;
flag[a]++;
E[a].push_back(0);
E[0].push_back(a);
}else{
st=a;
cnt2++;
d[a]++;d[b]++;
E[a].push_back(b);
E[b].push_back(a);
}
}
dfs(st);
if(Cnt!=m*2){
cout<<"0"<<endl;
return 0;
}
long long ans = 0;
ans=ans+1ll*cnt*cnt2;
ans=ans+1ll*cnt*(cnt-1)/2;
for(int i=1;i<=n;i++){
ans=ans+1ll*d[i]*(d[i]-1)/2;
}
cout<<ans<<endl;
}

E. The Great Mixing

题意:现在有k个物品xi/1000,你现在可以任意挑选,并随便使用,你需要调制出n/1000的物品,问你最少使用多少个。

题解:首先去重,那么k最多只有1001了。然后我们让所有的xi减去n,然后就可以理解为凑0了,然后就可以跑完全背包。第一维的个数最多1000个,第二维的范围就是[-1000,1000]。

代码:

#include<bits/stdc++.h>
using namespace std;
int n,k;
const int maxn = 1e6+7;
int a[maxn];
vector<int>v;
map<int,int> dp[2003];
int main(){
scanf("%d%d",&n,&k);
for(int i=1;i<=k;i++){
scanf("%d",&a[i]);
a[i]-=n;
v.push_back(a[i]);
}
sort(v.begin(),v.end());
v.erase(unique(v.begin(),v.end()),v.end());
dp[0][0]=1;
map<int,int>::iterator it;
for(int i=1;i<=1002;i++){
for(it=dp[i-1].begin();it!=dp[i-1].end();it++){
for(int j=0;j<v.size();j++){
if(abs(it->first+v[j])>1000)continue;
dp[i][it->first+v[j]]=1;
}
}
if(dp[i].count(0)){
printf("%d\n",i);
return 0;
}
}
printf("-1\n");
//ax+by+...+t=n*1000(a+b+c+..+);
}

Codeforces Round #407 div2 题解【ABCDE】的更多相关文章

  1. [Codeforces Round #461 (Div2)] 题解

    [比赛链接] http://codeforces.com/contest/922 [题解] Problem A. Cloning Toys          [算法] 当y = 0 ,   不可以 当 ...

  2. CodeForces round 967 div2 题解(A~E)

    本来准备比完赛就写题解的, 但是一拖拖了一星期, 唉 最后一题没搞懂怎么做,恳请大神指教 欢迎大家在评论区提问. A Mind the Gap 稳定版题面 https://cn.vjudge.net/ ...

  3. Codeforces Round #467(Div2)题解

    凌晨起来打CF,0:05,也是我第一次codeforces 第一题: 我刚开始怀疑自己读错题了,怎么会辣么水. 判除了0的数字种类 #include <cstdio> ; ]; int m ...

  4. Codeforces Round#704 Div2 题解(A,B,C,D,E)

    FST ROUND !!1 A Three swimmers: 直接整除一下向上取整就好了: #include <bits/stdc++.h> using namespace std; t ...

  5. Codeforces Round#687 Div2 题解

    打这场的时候迷迷糊糊的,然后掉分了( A Prison Break: 题面很复杂,但是题意很简单,仅需求出从这个点到四个角的最大的曼哈顿距离即可 #include <bits/stdc++.h& ...

  6. CodeForces Round #516 Div2 题解

    A. Make a triangle! 暴力... 就是给你三个数,你每次可以选一个加1,问最少加多少次能构成三角形 #include <bits/stdc++.h> #define ll ...

  7. Codeforces Round #539 div2

    Codeforces Round #539 div2 abstract I 离散化三连 sort(pos.begin(), pos.end()); pos.erase(unique(pos.begin ...

  8. Codeforces Round #543 Div1题解(并不全)

    Codeforces Round #543 Div1题解 Codeforces A. Diana and Liana 给定一个长度为\(m\)的序列,你可以从中删去不超过\(m-n*k\)个元素,剩下 ...

  9. Codeforces Round #545 Div1 题解

    Codeforces Round #545 Div1 题解 来写题解啦QwQ 本来想上红的,结果没做出D.... A. Skyscrapers CF1137A 题意 给定一个\(n*m\)的网格,每个 ...

随机推荐

  1. Expm 1_3 数组中逆序对个数问题

    有一个数的序列A[1].A[2] .A[3] .…… .A[n],若i<j,并且A[i]>A[j],则称A[i]与A[j]构成了一个逆序对,设计算法求数列A中逆序对的个数. package ...

  2. Log4j maven依赖配置

    做项目的时候,经常需要给应用打印日志,LOG4J是我们的不二选择,项目管理使用maven构建时,pom.xml配置如下 <!--日志 start--> <dependency> ...

  3. Day6------------磁盘用满的两种情况

    1.文件包含元数据和写入的内容 元数据:存在硬盘中的inode ls -i /etc/passwd.bak 查看inode df -i 查看inode 2.磁盘用满的两种情况 1).内容太多 2).空 ...

  4. Android 项目中文件夹作用(res文件夹详细介绍)

    1. src:存放所有的*.Java源程序. 2. gen:为ADT插件自动生成的代码文件保存路径,里面的R.java将保存所有的资源ID. 3. assets:可以存放项目一些较大的资源文件,例如: ...

  5. window 命令大全

    运行操作 CMD命令:开始->运行->键入cmd或command(在命令行里可以看到系统版本.文件系统版本) CMD命令锦集       1. gpedit.msc-----组策略 2. ...

  6. form总结

    在Javascript 中,页面上的每一对<form> 标记都解析为一个对象,即form 对象. 可以通过document.forms 获取以源顺序排列的文档中所有form 对象的集合. ...

  7. python 全栈开发,Day109(客户管理之动态"二级"菜单)

    昨日内容回顾 1. 权限有几张表? 2. 简述权限流程? 3. 为什么要把权限放入session? 4. 静态文件和模块文件 5. 相关技术点 - orm查询 - 去空 - 去重 - 中间件 - in ...

  8. Python实现进度条功能

    Python实现进度条功能 import sys, time def progress(percent, width=50): # 设置进度条的宽度 if percent >= 100: # 当 ...

  9. 开发同学的福利--mysql监控工具sqlprofiler,类似sqlserver的profiler工具

    最近无意发现了mysql的客户端监控工具“Nero Profile SQL”,刚开始还不知道怎么使用,经过半小时摸索,现将使用步骤写下来. 背景:开发的时候,如果数据存储层这块使用EF,或者其他orm ...

  10. .NetCore源码阅读笔记系列之Security (三) Authentication & AddOpenIdConnect

    通过第二篇文章我们已经知道了授权的内部实现通过自定义的授权Handler来的,同样的道理 OpenIdConnect 同样是通过 OpenIdConnectHandler来请求授权的 那么它内部又是怎 ...