第一次打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. 3、css初识

    前端内容就分三部分html.css.javascript(js),对一个网页来说html相当于是一个裸体的人,css相当于给这个人穿上了衣服,javascript相当于给这个人赋予动作行为,今天我们要 ...

  2. CoordinatorLayout使用详解: 打造折叠悬浮效果

    1.简介 CoordinatorLayout遵循Material 风格,包含在 support Library中,结合AppbarLayout, CollapsingToolbarLayout等 可 ...

  3. Jmeter压力测试(简单的http请求)-实例

    服务端系分提供的某接口样例为: 评估后可采用使用jmeter进行压力测试的步骤为: 启动jmeter:在bin下点击jmeter.bat,运行jmeter 2. 创建测试计划: 默认启动jmeter时 ...

  4. 具有相同名称 的类/接口已在使用。请使用类定制设置来解决此冲突。java调用第三方的webservice应用实例

    WSDLToJava Error: http://10.96.84.124:81/BTRPWebServiceForSMB/OnSMBOrderService.svc?xsd=xsd0 [0,0]: ...

  5. Mongo 常用操作

    1.查询 [基本形式]db.col.find().pretty():pretty() 方法以格式化的方式来显示所有文档. [获取记录条数]:db.users.find().count(); [读取指定 ...

  6. 【转载】SpringCloud-Eurek 心跳阈值说明

    在使用eureka过程中,查看监控界面,出现: EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE ...

  7. 单表40G,不要吃惊,还能往里面插入数据,哈哈

    单表40G,不要吃惊,还能往里面插入数据,哈哈 上图:

  8. CentOS 7.5 安装KVM虚拟机(Linux)

    1.认识理解KVM虚拟机 Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中.它使用Linu ...

  9. 关于asyncio知识(四)

    一.使用 asyncio 总结 最近在公司的一些项目中开始慢慢使用python 的asyncio, 使用的过程中也是各种踩坑,遇到的问题也不少,其中有一次是内存的问题,自己也整理了遇到的问题以及解决方 ...

  10. CentOS5.9 编译Emacs 24

    从Emacs官方网站下载最新版解压后,执行 ./configure 得到错误信息: configure: error: The following required libraries were no ...