第一次打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. Wordpress页面只显示一篇文章

  2. centos安装系统全过程

    --查看系统 lsb_release -a --查看端口 netstat -lnp|grep 80 ps 进程ID #查看进程的详细信息 kill -9 进程ID --查看Java 版本 java - ...

  3. 卷积的三种模式:full, same, valid

    通常用外部api进行卷积的时候,会面临mode选择. 本文清晰展示三种模式的不同之处,其实这三种不同模式是对卷积核移动范围的不同限制. 设 image的大小是7x7,filter的大小是3x3 1,f ...

  4. too much recursion(太多递归)Uncaught RangeError: Maximum call stack size exceeded BootstrapValidator报错

    在BootstrapValidator中已默认遵守Bootstrap规则,form里的每个输入项目必需包含在类为form-group的标签里,否则BootstrapValidator中定义的field ...

  5. QGIS Server使用记录

    目录 0. 简述 1. 下载QGIS桌面64位版本 2. 下载安装QGIS Server程序 3. 下载安装Apache服务器 4.使用及问题处理 0. 简述 关于QGIS Server相关的文档很少 ...

  6. 深入理解Java String类(综合)

    在Java语言了中,所有类似“ABC”的字面值,都是String类的实例:String类位于java.lang包下,是Java语言的核心类,提供了字符串的比较.查找.截取.大小写转换等操作:Java语 ...

  7. 【C++】C++中的数组

    目录结构: contents structure [-] 一维数组 数组的定义和初始化 数组元素的访问 数组和指针 多维数组 数组是存放相同类型的容器,数组的大小确定不变,不能随意向数组中添加元素.因 ...

  8. Use Dynamic Data Masking to obfuscate your sensitive data

    Data privacy is a major concern today for any organization that manages sensitive data or personally ...

  9. glide引出恶心的git submodule

      起因 某一天一个同事,在看那个glide,然后我路过,看到他为何不编译“glide”项目(他说,编译中出错,反正都是看源码而已,所以就懒得搞,然后我出于“好心”,给他弄一下,我擦) 报错: Pro ...

  10. Delphi XE以后的版本 程序如何瘦身

    第一步:关闭debug infomation. 打开工程后,依次点击project--option--delphi compiler--linking 将右边Debug information改为Fa ...