ZROIDay3-比赛解题报告
ZROIDay3-比赛解题报告
瞎扯
从今天开始考试有点不在状态,可能是因为不太适应题目的原因,T1已经接近了思想但是没有想到状态转移,T2思考方向错误,T3不会打LCT,还是太菜了
A
考场上想到要么不用亵渎要么最后用亵渎,如果最后用亵渎就要满足所有随从血量是从1一直到某个数x的不下降连续序列,于是可以状态转移\(f[i][j]\)表示前i小的数变成\([1,j]\)每一个整数的最小代价,那么我们枚举第i-1小的数是j-1还是j就好了。最后对所有\(f[n][i]\)取min就好了.当然还要考虑不用亵渎的情况,这个就非常好处理
代码:
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <cctype>
#define ll long long
#define ri register int
using std::min;
using std::sort;
template <class T>inline void read(T &x){
x=0;int ne=0;char c;
while(!isdigit(c=getchar()))ne=c=='-';
x=c-48;
while(isdigit(c=getchar()))x=(x<<3)+(x<<1)+c-48;
x=ne?-x:x;return ;
}
const int maxn=5005;
const ll inf=1e18-1;
ll f[maxn][maxn],a[maxn];
ll ans=0;
ll p,q,r;
int n;
ll cost(ll x,ll y){
if(x>y)return (x-y)*q;
return (y-x)*p;
}
int main(){
read(n);
for(ri i=1;i<=n;i++){
read(a[i]);
}
sort(a+1,a+1+n);
read(p),read(q),read(r);
a[0]=0;
for(ri i=0;i<=n;i++){
ans+=q*a[i];
for(ri j=0;j<=n;j++){
f[i][j]=inf;
}
}
f[0][0]=0;
for(ri i=1;i<=n;i++){
for(ri j=1;j<=i;j++){
f[i][j]=min(f[i][j],min(f[i-1][j],f[i-1][j-1])+cost(a[i],j));
}
}
for(ri i=1;i<=n;i++)ans=min(ans,f[n][i]+r);
printf("%lld\n",ans);
return 0;
}
B
这题主要是思路没想到,我们把两个相邻的字符断开,这样原串就变成了许多段,显然我们想要的就是段中的一部分,但是糟糕的是头尾两个字符相同也不行。然后容易发现,我们用KMP求出fail数组,按照定义易知,\(i-fail[i]+1\)与第一个字符是相同的,于是我们对每一条段跑KMP记录可行答案就好了。然而按这个思路做前面小数据都WA了。。。也不知道怎么回事
代码:
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cctype>
#include <algorithm>
#include <cctype>
#include <cmath>
#define ll long long
#define ri register int
using namespace std;
template <class T>inline void read(T &x){
x=0;int ne=0;char c;
while(!isdigit(c=getchar()))ne=c=='-';
x=c-48;
while(isdigit(c=getchar()))x=(x<<3)+(x<<1)+c-48;
x=ne?-x:x;return ;
}
const int maxn=2000005;
const int inf=0x7fffffff;
char a[maxn],b[maxn];
bool ok[maxn],ans[maxn];
int fail[maxn],tot=0,len=0;
inline void solve(){
int x,y;
for(ri i=1;i<=tot;i++)fail[i]=0,ok[i]=1;
for(ri i=2,j=0;i<=tot;i++){
while(j&&b[i-1]!=b[j])j=fail[j];
if(b[i-1]==b[j])j++;
fail[i]=j;
}
for(ri i=fail[tot];i;i=fail[i])ok[tot-i+1]=0;
for(ri i=1;i<=tot;i++)if(ok[i])ans[i]=1;
return ;
}
int main(){
int T;
while(scanf("%s",a+1)!=EOF){
T++;
printf("Case %d:",T);
len=strlen(a+1);
for(ri i=1;i<len;i++)a[len+i]=a[len];
len=(len<<1)-1,tot=0;
for(ri i=1;i<=len;i++){
b[tot++]=a[i];
if(a[i]==a[i+1]){
solve();
tot=0;
}
}
solve();
len=(len+1)>>1;
for(ri i=0;i<len;i++){
printf("%d",ans[len-i]);
}
puts("");
memset(ans,0,sizeof(ans));
}
return 0;
}
C
不会LCT,太菜了
ZROIDay3-比赛解题报告的更多相关文章
- ZROI Day1 比赛解题报告
ZROI Day1 比赛解题报告 版权原因不提供题面相关信息 序 前天晚上搞得比较晚,然后早上做题很没状态,刚看到T1发现没什么思路就有点慌,赶紧看了看T2,T3, 发现T3暴力很好打,T2想了一想可 ...
- ZROI-Day2比赛解题报告
ZROIDay2-比赛解题报告 版权原因不提供题面信息 序 这几天作息有点鬼畜,虽然昨晚很晚睡但是早上精神还不错,看到题发现T1很友好?T2woc这暴力都好难打?T3多项式?!这样下去比赛会不会出现更 ...
- 「BZOJ1722」「Usaco2006 Mar」Milk Team Select产奶比赛 解题报告
Milk Team Select 产奶比赛 Description Farmer John's N (\(1 \le N \le 500\)) cows are trying to select th ...
- 杭州电子科技大学Online Judge 之 “确定比赛名次(ID1285)”解题报告
杭州电子科技大学Online Judge 之 "确定比赛名次(ID1285)"解题报告 巧若拙(欢迎转载,但请注明出处:http://blog.csdn.net/qiaoruozh ...
- CH Round #56 - 国庆节欢乐赛解题报告
最近CH上的比赛很多,在此会全部写出解题报告,与大家交流一下解题方法与技巧. T1 魔幻森林 描述 Cortana来到了一片魔幻森林,这片森林可以被视作一个N*M的矩阵,矩阵中的每个位置上都长着一棵树 ...
- Codeforces Round #382 (Div. 2) 解题报告
CF一如既往在深夜举行,我也一如既往在周三上午的C++课上进行了virtual participation.这次div2的题目除了E题都水的一塌糊涂,参赛时的E题最后也没有几个参赛者AC,排名又成为了 ...
- Mutual Training for Wannafly Union #1解题报告
---恢复内容开始--- q神等人组织的vjudge上的多校训练,题目基本上都来自于CF,#1是上周进行的,参加后感觉收获很多,因为上周准备期中比较忙,解题报告现在补上. 比赛地址(兼题目地址) A题 ...
- Facebook Hacker Cup 2014 Qualification Round 竞赛试题 Square Detector 解题报告
Facebook Hacker Cup 2014 Qualification Round比赛Square Detector题的解题报告.单击这里打开题目链接(国内访问需要那个,你懂的). 原题如下: ...
- Codeforces Round #378 (Div. 2) D题(data structure)解题报告
题目地址 先简单的总结一下这次CF,前两道题非常的水,可是第一题又是因为自己想的不够周到而被Hack了一次(或许也应该感谢这个hack我的人,使我没有最后在赛后测试中WA).做到C题时看到题目情况非常 ...
- 【NOIP2015】提高day2解题报告
题目: P1981跳石头 描述 一年一度的“跳石头”比赛又要开始了!这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好了两块岩石作为比赛起点和终点.在起点和终点之间,有 N ...
随机推荐
- Notepad++格式化xml(转)
转自:http://www.herongyang.com/XML/NPP-XML-Tools-Plugin-Download-and-Install.html Downloading and inst ...
- jetbrains 2019 激活 error 1653219 解决办法
我以前用PyCharm按照http://idea.lanyus.com/上的激活码直接可激活. 后来用到IDEA(最新版)了之后激活报错.错误代码为1653219. 后参考博客 解决办法: 把host ...
- java序列化与反序列化操作redis
笔者在使用SSM框架项目部分功能进行测试需要使用到对象的序列化与反序列化 第一种方式:jackson Demo package com.dznfit.service; import com.dznf ...
- Centos7.4 下cobbler安装及配置
1.背景介绍 作为运维,在公司经常遇到一些机械性重复工作要做,例如:为新机器装系统,一台两台机器装系统,可以用光盘.U盘等介质安装,1小时也完成了,但是如果有成百台的服务器还要用光盘.U盘去安装,就显 ...
- Java 泛型,你了解类型擦除吗?
泛型,一个孤独的守门者. 大家可能会有疑问,我为什么叫做泛型是一个守门者.这其实是我个人的看法而已,我的意思是说泛型没有其看起来那么深不可测,它并不神秘与神奇.泛型是 Java 中一个很小巧的概念,但 ...
- c99数组稀疏初始化
#include <stdio.h> #include <stdlib.h> int main() { ] = {[]=,,[] =}; ; i < ; i++) { p ...
- Python实现计算圆周率π的值到任意位的方法示例
Python实现计算圆周率π的值到任意位的方法示例 本文实例讲述了Python实现计算圆周率π的值到任意位的方法.分享给大家供大家参考,具体如下: 一.需求分析 输入想要计算到小数点后的位数,计算圆周 ...
- Java泛型(10):泛型与异常
由于擦除的原因,将泛型运用于异常是非常受限的.catch语句不能捕获泛型类型的异常,因为在编译期和运行期都必须知道异常的确切类型.但是,类型参数可能会在一个方法的throw子句中用到.这使得你可以编写 ...
- centos7安装kvm及kvm管理
一.安装kvm 查看CPU是否支持虚拟化 grep -E 'svm|vmx' /proc/cpuinfo - vmx is for Intel processors - svm is for AMD ...
- 用shader实现流动的水面(webgl)
这段时间一直在看如何用shader绘制一个流动的水面,直接用贴图(高度图.法向贴图)实现的方法,这里就不讨论了. 搜了一大波博客资料,感觉存在如下一些问题: 1⃣️大多数资料都是基于opengl实现( ...