cf round#598 CDEF
C:模拟:未跳到目的地之前先贪心放板子,能到达目的地后紧贴着放板子
先判能不能跳到目的地,能跳到再考虑是否需要将后面的板子往前移动
#include<bits/stdc++.h>
using namespace std;
#define N 20005 int sum,n,m,d,c[N],ans[N],ans1[N]; int main(){
cin>>n>>m>>d;
for(int i=;i<=m;i++)cin>>c[i],sum+=c[i]; if(sum>n){puts("NO");return ;} int pos=,id,R=;
for(id=;id<=m;id++){
if(pos+d>=n+){//直接贴着放板子即可
for(int i=R+;i<=R+c[id];i++)
ans[i]=id;
R+=c[id];
}
else {//贪心放板子
pos+=d;//跳到pos+d去
for(int i=pos;i<=pos+c[id]-;i++)
ans[i]=id;
pos+=c[id]-;
R=pos;
}
} if(pos+d<n+){puts("NO");return ;}
if(pos+d>=n+ && R<=n){
puts("YES");
for(int i=;i<=n;i++)
cout<<ans[i]<<" ";
return ;
} int ind=n;
for(int i=R;i>=;i--){
ind=min(ind,i);
if(ans[i]){
ans1[ind]=ans[i];
ind--;
}
}
puts("YES");
for(int i=;i<=n;i++)
cout<<ans1[i]<<" ";
return ;
}
D:贪心往前移动0即可,注意k是long long
#include<bits/stdc++.h>
using namespace std;
#define N 1000006
#define ll long long
long long n,k;
char s[N]; int main(){
int q;cin>>q;
while(q--){
scanf("%lld%lld",&n,&k);
scanf("%s",s+); ll tot=,len=;
for(int i=;i<=n;i++){
if(s[i]==''){
tot++;
}
else {
if(tot<=k){
k-=tot;
++len;
swap(s[i],s[len]);
}
else {//只能往前移动k格
swap(s[i],s[i-k]);
break;
}
}
} printf("%s\n",s+);
} }
E:贪心,肯定是分队伍越多越好,六个人的队显然没有两只三人队优
先排序,dp[i]表示取前i人的最优解,
枚举3<=j<=5,dp[i]=min(dp[i-j]+a[i]-a[i-j+1]);
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define N 200005 struct Node{
ll id,a;
}p[N];
ll n,ans[N],dp[N],pre[N];
int cmp(Node a,Node b){
return a.a<b.a;
} int main(){
cin>>n;
for(int i=;i<=n;i++){
cin>>p[i].a;
p[i].id=i;
}
sort(p+,p++n,cmp); dp[]=p[].a-p[].a;
pre[]=;
dp[]=p[].a-p[].a;
pre[]=;
dp[]=p[].a-p[].a;
pre[]=;
for(int i=;i<=n;i++){
dp[i]=dp[i-]+p[i].a-p[i-].a;
pre[i]=i-;
for(int j=;j<=;j++){
if(i-j<)continue;
if(dp[i]>dp[i-j]+p[i].a-p[i-j+].a){
dp[i]=dp[i-j]+p[i].a-p[i-j+].a;
pre[i]=i-j;
}
}
} cout<<dp[n]<<' ';
int pos=n,now=;
while(pos){
++now;
int tmp=pre[pos];
for(int i=tmp+;i<=pos;i++)
ans[p[i].id]=now;
pos=tmp;
}
cout<<now<<'\n';
for(int i=;i<=n;i++)cout<<ans[i]<<' ';
}
F:将一长段逆转转换成每次只逆转相邻两个字符,如果字符集不同,显然不行
字符集相同:分成两种情况:
1,某种字符出现>=2次,那么这种情况必然有解:先将这两个字符挨在一起,然后就可以随便搞了
2,每种字符出现1次,那么求出s转换成t的步数,偶数有解,奇数无解
#include<bits/stdc++.h>
using namespace std;
#define N 200005 char s[N],t[N];
int n,cnt1[],cnt2[],pos1[],pos2[]; int main(){
int T;cin>>T;
while(T--){
for(int i=;i<;i++)
cnt1[i]=cnt2[i]=pos1[i]=pos2[i]=; cin>>n;
cin>>s>>t;
for(int i=;i<n;i++)
cnt1[s[i]-'a']++,cnt2[t[i]-'a']++; int flag=;
for(int i=;i<;i++)
if(cnt1[i]!=cnt2[i])
flag=;
if(flag){puts("NO");continue;} flag=;
for(int i=;i<;i++)
if(cnt1[i]>=)
flag=;
if(flag){puts("YES");continue;} int sum=;
for(int i=;i<n;i++){
int pos=i;
while(s[pos]!=t[i])pos++;
for(int j=pos;j>i;j--){
swap(s[j],s[j-]);
sum++;
}
} if(sum%==)cout<<"YES\n";
else puts("NO");
}
}
cf round#598 CDEF的更多相关文章
- CF Round #551 (Div. 2) D
CF Round #551 (Div. 2) D 链接 https://codeforces.com/contest/1153/problem/D 思路 不考虑赋值和贪心,考虑排名. 设\(dp_i\ ...
- CF Round #510 (Div. 2)
前言:没想到那么快就打了第二场,题目难度比CF Round #509 (Div. 2)这场要难些,不过我依旧菜,这场更是被\(D\)题卡了,最后\(C\)题都来不及敲了..最后才\(A\)了\(3\) ...
- UOJ #30. [CF Round #278] Tourists
UOJ #30. [CF Round #278] Tourists 题目大意 : 有一张 \(n\) 个点, \(m\) 条边的无向图,每一个点有一个点权 \(a_i\) ,你需要支持两种操作,第一种 ...
- 竞赛题解 - CF Round #524 Div.2
CF Round #524 Div.2 - 竞赛题解 不容易CF有一场下午的比赛,开心的和一个神犇一起报了名 被虐爆--前两题水过去,第三题卡了好久,第四题毫无头绪QwQ Codeforces 传送门 ...
- 【前行&赛时总结】◇第4站&赛时9◇ CF Round 513 Div1+Div2
◇第4站&赛时9◇ CF Round 513 Div1+Div2 第一次在CF里涨Rating QWQ 深感不易……作blog以记之 ( ̄▽ ̄)" +Codeforces 的门为你打 ...
- CF Round #600 (Div 2) 解题报告(A~E)
CF Round #600 (Div 2) 解题报告(A~E) A:Single Push 采用差分的思想,让\(b-a=c\),然后观察\(c\)序列是不是一个满足要求的序列 #include< ...
- Codeforces Round #598 (Div. 3)- E. Yet Another Division Into Teams - 动态规划
Codeforces Round #598 (Div. 3)- E. Yet Another Division Into Teams - 动态规划 [Problem Description] 给你\( ...
- CF Round #580(div2)题解报告
CF Round #580(div2)题解报告 T1 T2 水题,不管 T3 构造题,证明大约感性理解一下 我们想既然存在解 \(|a[n + i] - a[i]| = 1\) 这是必须要满足的 既然 ...
- CF round #622 (div2)
CF Round 622 div2 A.简单模拟 B.数学 题意: 某人A参加一个比赛,共n人参加,有两轮,给定这两轮的名次x,y,总排名记为两轮排名和x+y,此值越小名次越前,并且对于与A同分者而言 ...
随机推荐
- SQL Server 2008性能故障排查(三)——IO
接着上一章:CPU瓶颈 I/O瓶颈(I/O Bottlenecks): SQLServer的性能严重依赖I/O子系统.除非你的数据库完全加载到物理内存中,否则SQLServer会不断地把数据库文件从缓 ...
- 「树的直径」BFS方法证明
选定任意一个点u,从u开始BFS求出距离u最大的点s,再从s点出发BFS到距离s最大的点t,则dis(s,t)即为树的直径 证明 其实只要找到了树的直径的一个端点,再BFS找到最远点就一定是直径的另一 ...
- java 节点流(字符流,字节流)和包装流(缓冲流,转换流)
结点流:直接对File类进行操作的文件流 package stream; import java.io.File; import java.io.FileNotFoundException; impo ...
- BSGS算法(模板)
BSGS (大步小步算法) 已知\(a.b. c\),求\(x\).令\(a^x \equiv b \pmod c\). 步骤 \[m = \lceil \sqrtc\ \rceil \]\[x = ...
- ElasticSearch学习文档2018.11
1 Elasticsearch安装 1.1 ES6.0版本安装head插件 1.1 下载head插件 下载地址:https://github.com/mobz/elasticsear ...
- 10.16 ln软硬链接的创建等
ln make links between files 无参数 创建硬链接 -s 创建软连接 ln option 源文件 目标文件 #相反的: tar 目标文件 源文件 [root@wen test ...
- textarea 根据光标位置添加内容
// 获取焦点 let txt = document.getElementById("countRule"); let temp = txt.value; txt.focus(); ...
- STM32 入门之 GPIO
入手STM32有一段时间了,感觉刚入门时很难,无处下手,现在学到了点皮毛,写出来和大家分享一下. 首先,什么叫GPIO?这个问题,答案是我也不知道!至少目前我没有必要知道,我只要知道他其实就是51单片 ...
- python 3.x上安裝web.py
python 3.x上安裝web.py 查询之后,安装时使用pip3 install web.py==0.40.dev0 最終可以运行 app.py import weburls=( '/',' ...
- 测开之路二十三:python常用模块
os模块 sys模块 hashlib shutil对文件和目录进行操作 random和随机相关 json