第一次打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. 4、css属性操作

    前面说的主要是css的使用规则和选择器等,这篇主要讲解css的具体使用. 本篇导航: css text 背景属性 边框属性 列表属性 dispaly属性 外边距(margine)和内边距(paddin ...

  2. [转]mysql使用关键字作为列名的处理方式

    转自:https://blog.csdn.net/xpnidaye/article/details/52388669 下面是一个创建表的语句,而其中key是一个关键字,所以不能直接写key. crea ...

  3. 安装bootcamp时提示“找不到$winpedriver$文件夹,请验证该文件夹是否和bootcamp处于同一文件夹内?”

    问题:我苹果系统是10.8.3的 装的win7 64位的! 这个bootcamp是我在别人那里拷贝的,我装的时候就这样了,但是别人装是好好的,还有我在MAC系统下载bootcamp的时候我的U盘格式是 ...

  4. AssemblyInfo.cs文件详解

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq395537505/article/details/49661555 一.前言 .net工程的Pr ...

  5. 毕业论文Word格式技巧

    word利用多级列表功能实现章节标题自动编号 坑:在选择级别1后,直接在当前对话框直接继续设置级别2:然后选中级别2,设置相应的格式,主要在将级别链接到样式处选择为标题2,然后要在库中显示的级别选择级 ...

  6. 初学vue出现空格警告的原因及其解决办法

    初学vue自己新建一个vue项目来做学习demo.不过在编写代码时一直出现空格不规范的警告.严重影响初学者的热情.错误如下图所示.(这样的错误很多,但大概翻译成中文的意思都是说空格使用不规范.) 这是 ...

  7. c#中@标志的作用 C#通过序列化实现深表复制 细说并发编程-TPL 大数据量下DataTable To List效率对比 【转载】C#工具类:实现文件操作File的工具类 异步多线程 Async .net 多线程 Thread ThreadPool Task .Net 反射学习

    c#中@标志的作用   参考微软官方文档-特殊字符@,地址 https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/toke ...

  8. Autohotkey window 下宏键盘、宏命令开发入门

  9. Mac 开发必备 利器 iterm2 oh-my-zsh

    推荐终端神器 iterm2 以及 oh-my-zsh,可以研究一下怎么用,好的开发环境是可以提高效率的,以及alias 的使用. https://www.zhihu.com/question/2744 ...

  10. ExtJS6 根据Value设置单元格颜色

    renderer : function(value, meta) { if(parseInt(value) > 0) { meta.style = ""; } else { ...