codechef cook 103 div2
第一次打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的更多相关文章
- CodeForces比赛总结表
Codeforces A B C D ...
- CodeChef March Lunchtime 2018 div2
地址https://www.codechef.com/LTIME58B?order=desc&sortBy=successful_submissions 简单做了一下,前三题比较水,第四题应该 ...
- codechef MAY18 div2 部分题解
T1 https://www.codechef.com/MAY18B/problems/RD19 刚开始zz了,其实很简单. 删除一个数不会使gcd变小,于是就只有0/1两种情况 T2 https:/ ...
- 【CodeChef】August Challenge 2019 Div2 解题报告
点此进入比赛 \(T1\):Football(点此看题面) 大致题意: 求\(max(20a_i-10b_i,0)\). 送分题不解释. #include<bits/stdc++.h> # ...
- CF&&CC百套计划2 CodeChef December Challenge 2017 Penalty Shoot-out
https://www.codechef.com/DEC17/problems/CPLAY #include<cstdio> #include<algorithm> using ...
- contest0 from codechef
A CodeChef - KSPHERES 中文题意 Mandarin Chinese Eugene has a sequence of upper hemispheres and another ...
- Counting The Important Pairs CodeChef - TAPAIR
https://vjudge.net/problem/CodeChef-TAPAIR 合法的删除方法: 第一种:桥边与其余任意边(1)桥*(桥-1)/2(两条桥边)(2)桥*(m-桥)(桥边+其他边) ...
- Entity Framework 6 Recipes 2nd Edition(10-3)译 -> 返回结果是一个标量值
10-3. 返回结果是一个标量值 问题 想取得存储过程返回的一个标量值. 解决方案 假设我们有如Figure 10-2所示的ATM机和ATM机取款记录的模型 Figure 10-2. 一个ATM机和A ...
- 【BZOJ-3514】Codechef MARCH14 GERALD07加强版 LinkCutTree + 主席树
3514: Codechef MARCH14 GERALD07加强版 Time Limit: 60 Sec Memory Limit: 256 MBSubmit: 1288 Solved: 490 ...
随机推荐
- django之Ajax续
接上篇随笔.继续介绍ajax的使用. 上篇友情连接:http://www.cnblogs.com/liluning/p/7831169.html 本篇导航: Ajax响应参数 csrf 跨站请求伪造 ...
- Arcmap内容列表刷新
Arcmap内容列表刷新ILayer pLayer = pFDOGLayer as ILayer; if (!pLayer.Visible) ...
- AXURE插件在 Chrome 浏览器中用不了怎么办?
使用Chrome浏览器打开axure设计的原型的时候可能无法正常显示,这时Chrome会提示你安装axure rp for Chrome插件.此前,我们只需要简单的点击install.2013年12月 ...
- python接口自动化29-requests-html支持JavaScript渲染页面
前言 requests虽好,但有个遗憾,它无法加载JavaScript,当访问一个url地址的时候,不能像selenium一样渲染整个html页面出来. requests-html终于可以支持Java ...
- NLP第9章 NLP 中用到的机器学习算法——基于统计学(文本分类和文本聚类)
- git中提示 please tell me who you are
提示也就是需要你登录一下,确认你的身份,但是不要按照其提示输入,先输入命令git config user.name “username”,换行输入git config user.email “emai ...
- iOS NSDictionary 转Json 去掉换行去掉空格
//dic 转json 如果用系统自带的会出现空格. + (NSString *)returnJSONStringWithDictionary:(NSDictionary *)dictionary{ ...
- kuda 了解片
本来上个月想去了解一下kuda的,结果一直没有抽出时间去搞,现在大致先开个头,方便后面深入! Apache Kudu是开源Apache Hadoop生态系统的新成员,它完善了Hadoop的存储层,可以 ...
- 表表达式,Substring, CharIndex, 多行数据变同一行的用法
参考: https://www.cnblogs.com/cnki/p/9561427.html https://www.cnblogs.com/johnwood/p/6386613.html 1.表1 ...
- Atitit 关于处理环保行动联盟和动物解放阵线游击队的任命书 委任状
Atitit 关于处理环保行动联盟和动物解放阵线游击队的任命书 委任状 Uke 集团文化部部长兼emir 大酋长圣旨到!! In god we trust ,Emir Decree大酋长圣旨:: En ...