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同分者而言 ...
随机推荐
- ldd3 第12章 PCI驱动程序
PCI接口 PCI寻址 引导阶段 配置寄存器和初始化 MODULE_DEVICE_TABLE 注册PCI驱动程序 佬式PCI探测 激活PCI设备 访问配置空间 访问I/O和内存空间 PCI中断 硬件抽 ...
- EDA课设-交通灯-Verilog版----FPGA--004
分得到析四个状态: S1: 主干道(绿灯亮) ,支干道(亮红灯):--40S S1: 主干道 (黄灯亮) ,支干道(亮红灯):--4S S1: 主干道 (亮红灯),支干道(绿灯亮):--20S S1: ...
- Unity Shader之模板测试
Unity Shader之模板测试 一沙一世界,一花一天堂 一.Stencil testing 渲染管线 当片段着色器处理完一个片段之后,模板测试(Stencil Test)会开始执行,和深度 ...
- mongodbdriver 的C# 驱动findasync变成列表的方法
IAsyncCursorExtensions.ToList(返回的Task<IAsyncCursor<T>>实例). 也有他的异步版本.可以参见 https://mongodb ...
- 关于css3 Animation动画
在介绍animation之前有必要先来了解一个东西,那就是“keyframes”,我们把他叫做“关键帧”: 在使用transition制作一个简单的transition效果时,包括了初始属性,最终属性 ...
- python导入自定义模块和包
参考资料 https://blog.csdn.net/gvfdbdf/article/details/52084144 http://www.runoob.com/python/python-modu ...
- leetcode-解题记录 206. 反转链表
题目 反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶: 你可 ...
- 哈希算法和字典类的定义,DataSet中数据遍历的几种方法
哈希算法的基本操作: 1. 哈希表(HashTable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似 ...
- ---搭建springMvc框架,希望对初学者有所参考
Spring Mvc ==> Struts2 spring 无法替代 myBatis 工作量大 要自己操作sql语句 ==> hibernate Spring Mvc 取代St ...
- win8.1安装Python提示缺失api-ms-win-crt-runtime-l1-1-0.dll问题
Windows下安装python成功之后,运行python,提示缺少api-ms-win-crt-runtime-l1-1-0.dll.很显然,安装上这个dll文件不就可以了吗.于是就开始百度,找资料 ...