第一次打codechef。。。不太会用这oj。

A:

 #include <bits/stdc++.h>
#define mk(a,b) make_pair(a,b)
#define pii pair<int,int>
using namespace std;
inline int read() {
int X=,w=; char c=getchar();
while (c<''||c>'') { if (c=='-') w=-; c=getchar(); }
while (c>=''&&c<='') X=(X<<)+(X<<)+c-'',c=getchar();
return X*w;
}
typedef long long ll;
const int N = 1e5+;
int t,n,b,p,w,h;
int main(){
t=read();
while (t--){
int ans=-;
n=read();b=read();
while (n--){
w=read();h=read();p=read();
if(p<=b){
ans=max(ans,w*h);
}
}
if(ans==-)
printf("no tablet\n");
else
printf("%d\n",ans);
}
}

B:

 #include <bits/stdc++.h>
#define mk(a,b) make_pair(a,b)
#define pii pair<int,int>
using namespace std;
inline int read() {
int X=,w=; char c=getchar();
while (c<''||c>'') { if (c=='-') w=-; c=getchar(); }
while (c>=''&&c<='') X=(X<<)+(X<<)+c-'',c=getchar();
return X*w;
}
typedef long long ll;
const int N = 1e5+;
int t,n,a[N];
int main(){
t=read();
while (t--){
n=read();
for(int i=;i<=n;i++)a[i]=read();
sort(a+,a++n);
int ans=;
for(int i=;i<=n;i++){
if(ans<a[i])
break;
else{
ans++;
}
}
printf("%d\n",ans);
}
}

C:找一个字符串的前缀,使得这个前缀在字符串里出现次数最多,如果一样多,找最长的前缀,怎么找哇。|S|<=1e6,只包含小写字母

做法很多,说说我的。 首先首字母确定了,最多的出现次数也确定了,保存每个首字母的后继首字母,二分长度。

 #include <bits/stdc++.h>
#define mk(a,b) make_pair(a,b)
#define pii pair<int,int>
using namespace std;
inline int read() {
int X=,w=; char c=getchar();
while (c<''||c>'') { if (c=='-') w=-; c=getchar(); }
while (c>=''&&c<='') X=(X<<)+(X<<)+c-'',c=getchar();
return X*w;
}
typedef long long ll;
const int N = 1e5+;
int t,n;
char s[N];
int nxt[N];
int check(int len){
int tmp=;
int st=;
while (st<len)
st=nxt[st];
for(;st<n;st=nxt[st]){
bool f=;
for(int i=;i<len;i++){
if(s[st+i]!=s[i]){
f=;
break;
}
}
if(f) tmp++;
}
return tmp;
}
int main() {
t = read();
while (t--) {
memset(nxt,, sizeof(nxt));
n=read();scanf("%s",&s);
int mx=;
int pre=;
for (int i=;i<n;i++){
if(s[i]==s[]){
mx++;
nxt[pre]=i;
pre=i;
}
}
nxt[pre]=n;
int l=,r=n;
while (l<=r){
int mid=l+r>>;
if(check(mid)==mx){
l=mid+;
} else{
r=mid-;
}
}
for(int i=;i<r;i++)
printf("%c",s[i]);
printf("\n");
}
}

D:感觉比C简单多了。。。怎么印度友人也不太擅长这种沙比题啊。

就求个前缀,然后枚举删掉的是哪一步操作。。。就没了啊。。。

 #include <bits/stdc++.h>
#define mk(a,b) make_pair(a,b)
#define pii pair<int,int>
using namespace std;
inline int read() {
int X=,w=; char c=getchar();
while (c<''||c>'') { if (c=='-') w=-; c=getchar(); }
while (c>=''&&c<='') X=(X<<)+(X<<)+c-'',c=getchar();
return X*w;
}
typedef long long ll;
const int N = 1e5+;
const int M = 1e5;
int t,n,k,l[N],r[N];
int pre[N],a1[N],a2[N];
int main(){
t=read();
while (t--){
n=read();
k=read();
memset(pre,, sizeof(pre));
memset(a1,, sizeof(a1));
memset(a2,, sizeof(a2));
for(int i=;i<=n;i++){
l[i]=read();r[i]=read();
pre[l[i]]++;
pre[r[i]+]--;
}
for(int i=;i<=M;i++){
pre[i]+=pre[i-];
if(pre[i]==k)
a1[i]++;
if(pre[i]==k+)
a2[i]++;
}
for(int i=;i<=M;i++){
a1[i]+=a1[i-];
a2[i]+=a2[i-];
}
int ans=;
for(int i=;i<=n;i++){
ans=max(ans,a1[M]-a1[r[i]]+a1[l[i]-]+a2[r[i]]-a2[l[i]-]);
}
printf("%d\n",ans);
}
}

E:原根+一些神奇的战法,没做出来。

首先判f是不是0

非零的话求原根然后求出来每个数是原根的几次幂,

这个时候可以dp,但是我不会。

也可以不dp,我也不会。

就是我们随便选一个可以留下的数,那么这个数和他的倍数们都可以留下。然后更新ans。

代码抄别人的。我也看不懂。  我正在努力试图看懂。

 #include <bits/stdc++.h>
using namespace std;
inline int read() {
int X=,w=; char c=getchar();
while (c<''||c>'') { if (c=='-') w=-; c=getchar(); }
while (c>=''&&c<='') X=(X<<)+(X<<)+c-'',c=getchar();
return X*w;
}
typedef long long ll;
int mod;
int qpow(int a,int x){
int res=;
while (x){
if(x&)
res=1ll*res*a%mod;
a=1ll*a*a%mod;
x/=;
}
return res;
}
const int N = 1e5+;
int t,n,f,p[N],st[N<<];
vector<int> v;//
int root(){
v.clear();
int tmp=mod-;
for(int i=;i*i<=tmp;i++){
if(tmp%i==){
v.push_back(i);
while (tmp%i==)
tmp/=i;
}
}
if(tmp!=)v.push_back(tmp);
for(int i=;i<=mod-;i++){
bool f=;
for(auto c:v) {
if (qpow(i, (mod - ) / c) == ) {
f=;
break;
}
}
if(f)
return i;
}
return -;
}
int main(){
t=read();
while (t--){
n=read();
mod=read();
f=read();
for(int i=;i<=n;i++)
p[i]=read();
if(f==){
int ans=;
for(int i=;i<=n;i++)
ans+=(p[i]==);
printf("%d\n",ans);
} else{
int g=root();
for(int i=,cur=;i<mod-;i++,cur=cur*g%mod){
st[cur]=i;
}
int ans=n;
for(int i=;i<=mod-;i++){
if(st[f]%i==)continue;
if((mod-)%i)continue;
int tmp=;
for(int j=;j<=n;j++){
if(p[j]==||st[p[j]]%i==)continue;
tmp++;
}
ans=min(ans,tmp);
}
printf("%d\n",ans);
}
}
}

codechef cook 103 div2的更多相关文章

  1. CodeForces比赛总结表

    Codeforces A                     B                        C                             D            ...

  2. CodeChef March Lunchtime 2018 div2

    地址https://www.codechef.com/LTIME58B?order=desc&sortBy=successful_submissions 简单做了一下,前三题比较水,第四题应该 ...

  3. codechef MAY18 div2 部分题解

    T1 https://www.codechef.com/MAY18B/problems/RD19 刚开始zz了,其实很简单. 删除一个数不会使gcd变小,于是就只有0/1两种情况 T2 https:/ ...

  4. 【CodeChef】August Challenge 2019 Div2 解题报告

    点此进入比赛 \(T1\):Football(点此看题面) 大致题意: 求\(max(20a_i-10b_i,0)\). 送分题不解释. #include<bits/stdc++.h> # ...

  5. CF&&CC百套计划2 CodeChef December Challenge 2017 Penalty Shoot-out

    https://www.codechef.com/DEC17/problems/CPLAY #include<cstdio> #include<algorithm> using ...

  6. contest0 from codechef

    A  CodeChef - KSPHERES 中文题意  Mandarin Chinese Eugene has a sequence of upper hemispheres and another ...

  7. Counting The Important Pairs CodeChef - TAPAIR

    https://vjudge.net/problem/CodeChef-TAPAIR 合法的删除方法: 第一种:桥边与其余任意边(1)桥*(桥-1)/2(两条桥边)(2)桥*(m-桥)(桥边+其他边) ...

  8. Entity Framework 6 Recipes 2nd Edition(10-3)译 -> 返回结果是一个标量值

    10-3. 返回结果是一个标量值 问题 想取得存储过程返回的一个标量值. 解决方案 假设我们有如Figure 10-2所示的ATM机和ATM机取款记录的模型 Figure 10-2. 一个ATM机和A ...

  9. 【BZOJ-3514】Codechef MARCH14 GERALD07加强版 LinkCutTree + 主席树

    3514: Codechef MARCH14 GERALD07加强版 Time Limit: 60 Sec  Memory Limit: 256 MBSubmit: 1288  Solved: 490 ...

随机推荐

  1. getParameter() getInputStream()和getReader() 区别 这三种方法是有冲突的,因为流只能被读一次。

    我们经常用servlet和jsp, 经常用request.getParameter() 来得到数据. request.getParameter()request.getInputStream()req ...

  2. Zip文件和RAR文件解压

    直接上工具类: package com.ksource.pwlp.util; import java.io.File; import java.io.FileOutputStream; import ...

  3. Eclipse (indigo) 中安装jdk包并执行Maven

    为安装Eclipsejdk. windows->preferences->java->install jre->add sdk 假设在eclipse里增加M2 Maven 执行 ...

  4. oracle无效索引重建

    问题描述: 执行失败!错误信息[Exception message:无效的列索引 解决思路: 分析是表索引,大部分都是表索引失效导致的,只需要花重建表索引即可! 00.查看此表归属账户select * ...

  5. Unable to find vcvarsall.bat

    windows下pip安装各种包时,经常会遇到此错误.本文介绍解决方案. 第一步:安装visual studio 第二步:安装everything 打开everything,搜索vcvarsall.b ...

  6. [转]你可能不知道的五个强大HTML5 API

    一.全屏 // 找到适合浏览器的全屏方法 function launchFullScreen(element) { if(element.requestFullScreen) { element.re ...

  7. Rabbit五种消息队列学习(一) – 总述

    RabbitMQ支持五种消息传递类型,分别如下图所示: 上图中显示6中消息队列分别为: 1.简单队列 一个生产者将消息放到队列中,一个消费者监听队列 2.工作队列(Work queues) 一个生产者 ...

  8. npm 发布包和删除包(2019最新攻略)

  9. Xilinx的ISE14.7和PlanAhead与win10系统的兼容性问题解决方案

    Xilinx的ISE14.7和PlanAhead与win10系统的兼容性问题解决方案 2018年07月03日 18:27:57 feq123 阅读数:4495   今天在新电脑的win10系统上安装I ...

  10. TypeScript和JavaScript的一些小技巧记录

    项目里使用到的技巧,记录一下,会持续更新. JS的技巧完全可以使用到TS上哦. JS 向下取整 Math.floor(4.5); 简写: var num = 4.5; ~~num; num <& ...