题解见:http://ecustacm.cn/contest/11/announcements

A

#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int maxn=;
int a[maxn],ans; char c[maxn];
int main()
{
int T,N,A,B,C,D,Ca=;
scanf("%d",&T);
while(T--){
scanf("%s",c+); N=strlen(c+);
A=B=C=D=;
rep(i,,N){
if(c[i]=='') A++;
if(c[i]=='') B++;
if(i<N&&c[i]==''&&c[i+]=='') C++;
if(i<N&&c[i]==''&&c[i+]=='') D++;
}
printf("Case %d: %d %d %d %d\n",++Ca,A,B,C,D);
}
return ;
}

B

#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int maxn=;
char c[maxn];
int main()
{
int T,A,B,C,D,Ca=;
scanf("%d",&T);
while(T--){
scanf("%d%d%d%d",&A,&B,&C,&D);
printf("Case %d: ",++Ca);
if(A<C||A<D||B<C||B<D||abs(C-D)>) { puts("-1"); continue;}
if(B==){
rep(i,,A) putchar(''); puts("");
}
else if(A==){
rep(i,,B) putchar(''); puts("");
}
else if(C==D){
int ta=C+,tb=D;
if(A<ta||B<tb){
ta=C,tb=C+;
if(A<ta||B<tb){ puts("-1"); continue;}
putchar('');
rep(i,,C){
putchar('');
if(i==){
rep(j,,A-ta) putchar('');
}
if(i==C){
rep(j,,B-tb) putchar('');
}
putchar('');
}
puts("");
}
else {
rep(i,,A-ta) putchar('');
rep(i,,C) putchar(''),putchar('');
rep(i,,B-tb) putchar('');
putchar('');
puts("");
}
}
else if(C==D+){
int ta=C,tb=C;
if(A<ta||B<tb){ puts("-1"); continue;}
rep(i,,A-ta) putchar('');
rep(i,,C) putchar(''),putchar('');
rep(i,,B-tb) putchar('');
puts("");
}
else if(D==C+){
int ta=D,tb=D;
if(A<ta||B<tb){ puts("-1"); continue;}
//cout<<D<<" "<<A-ta<<" "<<B-tb<<endl;
rep(i,,D){
putchar('');
if(i==) {
rep(j,,A-ta) putchar('');
}
if(i==D) {
rep(j,,B-tb) putchar('');
}
putchar('');
}
puts("");
}
}
return ;
}

C

#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int maxn=;
char c[maxn];
struct SAM
{
int ch[maxn][],fa[maxn],maxlen[maxn],cnt,last;
void init()
{
cnt=; last=; memset(ch[],,sizeof(ch[]));
}
void add(int x)
{
int np=++cnt,p=last;
last=np; maxlen[cnt]=maxlen[p]+;
memset(ch[np],,sizeof(ch[np]));
while(p&&!ch[p][x])ch[p][x]=np,p=fa[p];
if(!p) fa[np]=;
else {
int q=ch[p][x];
if(maxlen[q]==maxlen[p]+) fa[np]=q;
else {
int nq=++cnt; maxlen[nq]=maxlen[p]+;
memcpy(ch[nq],ch[q],sizeof(ch[q]));
fa[nq]=fa[q], fa[q]=fa[np]=nq;
while(p&&ch[p][x]==q) ch[p][x]=nq,p=fa[p];
}
}
}
}S;
int q[maxn],pos[maxn],pre[maxn],head;
int fcy,tail,ans[maxn];
int main()
{
int T,N,Ca=;
scanf("%d",&T);
while(T--){
scanf("%d%s",&N,c+);
S.init();
rep(i,,N) S.add(c[i]==''?:);
head=tail=;
q[++head]=; pos[head]=; pre[head]=;
while(tail<head){
int u=q[++tail];
q[++head]=S.ch[u][]; pos[head]=; pre[head]=tail;
if(!S.ch[u][]) {
fcy=head;
break;
}
q[++head]=S.ch[u][]; pos[head]=; pre[head]=tail;
if(!S.ch[u][]) {
fcy=head;
break;
}
}
int tot=;
while(fcy>){
ans[++tot]=pos[fcy];
fcy=pre[fcy];
}
printf("Case %d: %d\n",++Ca,tot);
for(int i=tot;i>=;i--)
putchar(ans[i]?'':'');
puts("");
}
return ;
}

D

#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int maxn=;
int main()
{
int T,N,M,Ca=,ans;
scanf("%d",&T);
while(T--){
scanf("%d%d",&N,&M);
ans=max(N,M);
ans=max(ans,(N*M+)/);
if(N>M) swap(N,M);
if(N==) {
int res=M/*;
if(M%==) res+=;
if(M%>=) res+=;
ans=max(ans,res);
}
printf("Case %d: %d\n",++Ca,ans);
}
return ;
}

E

#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int maxn=;
bitset<maxn>A,B;
int main()
{
int N,L,R,x,ans; A[]=;
scanf("%d",&N);
rep(i,,N){
scanf("%d%d",&L,&R);
B.reset();
rep(j,L,R){
x=j*j;
B|=(A<<x);
}
A=B;
}
ans=A.count();
printf("%d\n",ans);
return ;
}

F

#include<bits/stdc++.h>
#define rep(i,w,v) for(int i=w;i<=v;i++)
using namespace std;
const int maxn=;
const int maxm=;
int N,M,K,ans,a[maxn][maxn];
int Laxt[maxn],Next[maxm],To[maxm],cnt;
int linke[maxn],vis[maxn];
void add(int u,int v)
{
Next[++cnt]=Laxt[u]; Laxt[u]=cnt;To[cnt]=v;
}
bool find(int u)
{
for(int i=Laxt[u];i;i=Next[i]){
int v=To[i];if(vis[v]) continue;
vis[v]=;
if(!linke[v]||find(linke[v])){
linke[v]=u;
return true;
}
}
return false;
}
bool check(int Mid)
{
int res=; cnt=;
memset(Laxt,,sizeof(Laxt));
memset(linke,,sizeof(linke));
rep(i,,N) rep(j,,M)
if(a[i][j]<=Mid) add(i,j);
rep(i,,N){
memset(vis,,sizeof(vis));
if(find(i)) res++;
}
return res>=K;
}
int main()
{
scanf("%d%d%d",&N,&M,&K); K=N+-K;
rep(i,,N) rep(j,,M) scanf("%d",&a[i][j]);
int L=,R=;
while(L<=R){
int Mid=(L+R)>>;
if(check(Mid)) ans=Mid,R=Mid-;
else L=Mid+;
}
printf("%d\n",ans);
return ;
}

ECUST Div2 训练赛3 (只有代码)的更多相关文章

  1. 10.0.0.55_12-16训练赛部分writeup

    0x1 - MISC MISC100 一张帅行的照片 目测是图片隐写,但是binwalk并没有出来,应该是对文件头进行了修改 010editor查看一下,发现在jpg文件尾之后还有大量的数据 而且在灰 ...

  2. Contest1592 - 2018-2019赛季多校联合新生训练赛第二场(部分题解)

    Contest1592 - 2018-2019赛季多校联合新生训练赛第二场 D 10248 修建高楼(模拟优化) H 10252 组装玩具(贪心+二分) D 传送门 题干 题目描述 C 市有一条东西走 ...

  3. Contest1585 - 2018-2019赛季多校联合新生训练赛第一场(部分题解)

    Contest1585 - 2018-2019赛季多校联合新生训练赛第一场 C 10187 查找特定的合数 D 10188 传话游戏 H 10192 扫雷游戏 C 传送门 题干: 题目描述 自然数中除 ...

  4. 7.30 正睿暑期集训营 A班训练赛

    目录 2018.7.30 正睿暑期集训营 A班训练赛 T1 A.蔡老板分果子(Hash) T2 B.蔡老板送外卖(并查集 最小生成树) T3 C.蔡老板学数学(DP NTT) 考试代码 T2 T3 2 ...

  5. HDU6578 2019HDU多校训练赛第一场 1001 (dp)

    HDU6578 2019HDU多校训练赛第一场 1001 (dp) 传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6578 题意: 你有n个空需要去填,有 ...

  6. HDU6579 2019HDU多校训练赛第一场1002 (线性基)

    HDU6579 2019HDU多校训练赛第一场1002 (线性基) 传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6579 题意: 两种操作 1.在序列末 ...

  7. Liblinear and Libsvm-rank训练数据的bash代码

    Liblinear and Libsvm-rank训练数据的bash代码: for j in "amazon_mp3" "video_surveillance" ...

  8. 2018天梯赛第一次训练题解和ac代码

    随着评讲的进行代码和题解会逐步放上来 2018天梯赛第一次训练 1001 : 进制转换 Time Limit(Common/Java):1000MS/10000MS     Memory Limit: ...

  9. 2018省赛赛第一次训练题解和ac代码

    第一次就去拉了点思维很神奇的CF题目 2018省赛赛第一次训练 # Origin Title     A CodeForces 607A Chain Reaction     B CodeForces ...

随机推荐

  1. 微服务之SpringCloud基础

    SpringCloud微服务基础 微服务架构--SpringCloud网站架构模式 单点应用/分布式系统面向于服务架构(SOA) /微服务架构web项目三层架构1.控制层2.业务逻辑层3.数据访问层传 ...

  2. 统计一行文本的单词个数 (15 分) 本题目要求编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。 输入格式: 输入给出一行字符。 输出格式: 在一行中输出单词个数。 输入样例: Let's go to room 209. 输出样例: 5

    MD,一开始就想着怎么 用空格和结尾前判断字母 来计算写的头的爆了, 反过来判断空格后面是否有 =‘ ’就尼玛容易多了 #include<stdio.h> #include<stdl ...

  3. spring boot 入门 使用spring.profiles.active来分区配置

    很多时候,我们项目在开发环境和生成环境的环境配置是不一样的,例如,数据库配置,在开发的时候,我们一般用测试数据库,而在生产环境的时候,我们是用正式的数据,这时候,我们可以利用profile在不同的环境 ...

  4. Win10系列:VC++数据绑定

    数据绑定是一种将后台数据绑定到前台控件的机制,通常用于动态地将对象或集合中所保存的数据显示到前台界面中.本节通过一个具体的示例来说明在Windows应用商店应用中如何通过数据绑定将保存在集合中的数据显 ...

  5. Vue + Element UI 实现权限管理系统(动态加载菜单)

    动态加载菜单 之前我们的导航树都是写死在页面里的,而实际应用中是需要从后台服务器获取菜单数据之后动态生成的. 我们在这里就用上一篇准备好的数据格式Mock出模拟数据,然后动态生成我们的导航菜单. 接口 ...

  6. TTL特殊门电路

    集电极开路(OC)门:主要作用实现线与功能:用做驱动器:实现电平转换 三态输出(TS)门:应用于计算机总线结构,通过分时控制三态门始轮端使得cpu与不同的外设通信:应用于双向传输,实现门电路与总线实现 ...

  7. PC/FORTH定点原理

    body, table{font-family: 微软雅黑} table{border-collapse: collapse; border: solid gray; border-width: 2p ...

  8. Pamulinawen--IPA--菲律宾伊洛卡诺语

    这是一首菲律宾的民谣(不是他加禄语/Tagalog, 而是伊洛卡诺语/Ilokano), 我们国家的著名歌手朱明瑛也翻唱过, 歌曲中文名为<<田野之歌>>.

  9. 阶段01Java基础day13常见对象02

    13.01_常见对象(StringBuffer类的概述) A:StringBuffer类概述 通过JDK提供的API,查看StringBuffer类的说明 线程安全的可变字符序列 B:简述安全问题 线 ...

  10. chmod +x 和 chmod u+x的区别

    常用: chmod a+x tomcat u 代表用户. g 代表用户组. o 代表其他. a 代表所有. 这意味着chmod u+x somefile 只授予这个文件的所属者执行的权限 而 chmo ...