Codeforces Round #552 (Div. 3) EFG(链表+set,dp,枚举公因数)
E
https://codeforces.com/contest/1154/problem/E
题意
一个大小为n(1e6)的数组\(a[i]\)(n),两个人轮流选数,先找到当前数组中最大的数然后选择以这个数为半径k的所有数,问两个人的选数情况
题解
- set维护剩下数的最大
- 链表维护左右第一个存在的数的位置
代码
#include<bits/stdc++.h>
#define MAXN 200005
using namespace std;
int n,k,a[MAXN],p[MAXN],L[MAXN],R[MAXN],group=0,ans[MAXN];
set<int>S;
int main(){
cin>>n>>k;
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
p[a[i]]=i;
S.insert(a[i]);
L[i]=i-1;R[i]=i+1;
}
while(S.size()){
int x=*(--S.end());
int l=p[x],r=p[x],d=0;
while(d<=k&&l>=1){
//cout<<a[l]<<endl;
S.erase(a[l]);
ans[l]=group+1;
l=L[l];
d++;
}
d=0;
while(d<=k&&r<=n){
//cout<<a[r]<<endl;
S.erase(a[r]);
ans[r]=group+1;
r=R[r];
d++;
}
L[r]=l;
R[l]=r;
group^=1;
}
for(int i=1;i<=n;i++)printf("%d",ans[i]);
}
F
https://codeforces.com/contest/1154/problem/F
题意
有n个物品,你需要买k个,每个物品价格为\(a[i]\),然后m个优惠方式,买\(x[i]\)个的话最便宜的y[i]个免费
题解
- 贪心:买最便宜的k个,x相同取y最大
- 定义\(dp[i]\)为买前i个用的最少费用,\(dp[i]=min(dp[i],dp[j]+sum[i]-sum[j+of[i-j]]),0\leq j \leq i-1\)
代码
#include<bits/stdc++.h>
#define inf 0x3f3f3f3f3f3f3f3f
#define ll long long
using namespace std;
ll dp[2005],a[200005],sum[200005];
int n,m,k,x,y,of[200005];
int main(){
cin>>n>>m>>k;
for(int i=1;i<=n;i++)scanf("%lld",&a[i]);
for(int i=1;i<=m;i++){
scanf("%d%d",&x,&y);
of[x]=max(of[x],y);
}
sort(a+1,a+n+1);
k=min(n,k);
for(int i=1;i<=k;i++)sum[i]=sum[i-1]+a[i];
memset(dp,inf,sizeof(dp));
dp[0]=0;
for(int i=1;i<=k;i++)
for(int j=0;j<i;j++)
dp[i]=min(dp[i],dp[j]+sum[i]-sum[j+of[i-j]]);
cout<<dp[k];
}
G
https://codeforces.com/contest/1154/problem/G
题意
一个大小为n(1e6)的数组\(a[i]\)(1e7),问lcm(a[l],a[r])最小的l和r,l!=r
题解
- \(a[i]\)(1e7),枚举公因数位置,nlogn
代码
#include<bits/stdc++.h>
#define ll long long
using namespace std;
vector<int>G[10000005];
ll n,ans,a,b,y,A,B,x;
int main(){
cin>>n;
for(ll i=1;i<=n;i++){
scanf("%lld",&x);
if(G[x].size()<2)G[x].push_back(i);
}
ans=1e18;
a=b=0;
for(ll i=1;i<=1e7;i++){
x=y=a=b=0;
for(ll j=i;j<=1e7;j+=i){
if(a==0){
if(G[j].size()>=2){
a=G[j][0];
b=G[j][1];
x=y=j;
break;
}else if(G[j].size()){
a=G[j][0];
x=j;
}
}else if(b==0){
if(G[j].size()){
b=G[j][0];
y=j;
break;
}
}
}
if(x&&y&&a&&b&&ans>x/__gcd(x,y)*y){
ans=x/__gcd(x,y)*y;
A=a;B=b;
}
}
cout<<min(A,B)<<" "<<max(A,B);
}
Codeforces Round #552 (Div. 3) EFG(链表+set,dp,枚举公因数)的更多相关文章
- Codeforces Round #552 (Div. 3) A题
题目网址:http://codeforces.com/contest/1154/problem/ 题目意思:就是给你四个数,这四个数是a+b,a+c,b+c,a+b+c,次序未知要反求出a,b,c,d ...
- Codeforces Round #552 (Div. 3) 题解
Codeforces Round #552 (Div. 3) 题目链接 A. Restoring Three Numbers 给出 \(a+b\),\(b+c\),\(a+c\) 以及 \(a+b+c ...
- Codeforces Round #174 (Div. 1) B. Cow Program(dp + 记忆化)
题目链接:http://codeforces.com/contest/283/problem/B 思路: dp[now][flag]表示现在在位置now,flag表示是接下来要做的步骤,然后根据题意记 ...
- Codeforces Round #552 (Div. 3) F. Shovels Shop (前缀和预处理+贪心+dp)
题目:http://codeforces.com/contest/1154/problem/F 题意:给你n个商品,然后还有m个特价活动,你买满x件就把你当前的x件中最便宜的y件价格免费,问你买k件花 ...
- Codeforces Round #552 (Div. 3) F题
题目网址:http://codeforces.com/contest/1154/problem/F 题目大意:给出n,m,k,n是物体的个数,m是优惠方式的种数,k是需要购买的物体个数, 然后给出n个 ...
- Codeforces Round #552 (Div. 3) D题
题目网站:http://codeforces.com/contest/1154/problem/D 题目大意:给出n个数(0或1),还有a , b, a是蓄电池容量,b是电池容量,数为1时蓄电池可以充 ...
- Codeforces Round #552 (Div. 3) C题
题目网址:http://codeforces.com/contest/1154/problem/C 题目意思:小猫吃三种食物,A,B,C,一周吃食物的次序是,A,B,C,A,C,B,A,当小猫该天无食 ...
- Codeforces Round #552 (Div. 3) B题
题目链接:http://codeforces.com/contest/1154/problem/B 题目大意:给出n个数,每个数都可以加上或减去这个一个数D,求对这n个数操作之后当所有数都相等时,D的 ...
- Codeforces Round #552 (Div. 3)-1154E-Two Teams-(模拟+双指针)
http://codeforces.com/contest/1154/problem/E 解题: 举例n=10,k=1 1,2,10,4,7,6,9,8,5,3 第一次,1队先挑2,10,4这三个人 ...
随机推荐
- Codeforces Round #603 (Div. 2) A. Sweet Problem 水题
A. Sweet Problem the first pile contains only red candies and there are r candies in it, the second ...
- HTML连载45-浮动元素脱标、排序规则、贴靠现象
一.浮动元素脱标 1.什么是浮动元素脱标 脱标:脱离标准流. 当某一个元素浮动之后,那么这个元素看上去就像被从标准流中删除了一样 2.浮动元素脱标之后有什么影响 如果前面一个元素浮动了,而后面的一个元 ...
- RMAN详细教程(三):备份脚本的组件和注释
RMAN详细教程(一):基本命令代码 RMAN详细教程(二):备份.检查.维护.恢复 RMAN详细教程(三):备份脚本的组件和注释 RMAN详细教程(四):备份脚本实战操作 一.基本组件: 1.Ser ...
- Java设计模式:Flyweight(享元)模式
概念定义 享元(Flyweight)模式运用共享技术高效地支持大量细粒度对象的复用. 当系统中存在大量相似或相同的对象时,有可能会造成内存溢出等问题.享元模式尝试重用现有的同类对象,如果未找到匹配的对 ...
- Razor 页面解说
自己开始从头深造- 本是想将时间缩短,但发现自己还是很难呀.希望你理解吧,这里的知识 是 页面的基本信息.也页面的跳转关系和 Tag的帮助标签. Section PartView. @page ...
- 在Vue中使用i18n 国际化遇到 Uncaught TypeError: Cannot assign to read only property 'exports' of object '#<Object>'
最近用Vue在搭建前端框架,在引用i18n时,运行的时候报错:Uncaught TypeError: Cannot assign to read only property 'exports' of ...
- layui常用的验证
var LayVerifyExtend = { notnullNonnegativeInteger: function (value, item) { //value:表单的值.item:表单的DOM ...
- Xcode打印如下错误:Unbalanced calls to begin/end appearance transitions 解决办法
今天在做自己的项目时遇到如下错误,项目运行以后,打印台打印如下: Unbalanced calls to begin/end appearance transitions for <HomeVi ...
- vs code切换中英文界面
1. 在vs code的应用扩展中搜索这个插件: Chinese (Simplified) Language Pack for Visual Studio Code 这个插件,安装完毕重新加载即可生效 ...
- web网页利用JavaScript实现对摄像头的调用
实现效果: 代码如下: <!DOCTYPE html> <html lang="zh"> <head> <meta charset=&qu ...