(6/11)施工施工...

A.口算训练

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6287

题解给的根号的分解素因子,其实能够做到log,然后维护每个因子在序列中出现的位置,每次二分查找就好了,zz的我最开始写了个3个log的线段树,被卡成狗了

跑得飞快系列233333

代码:

#include<bits/stdc++.h>
#define pb push_back
using namespace std;
const int MAXN=1e5+5;
int a[MAXN],nxt[MAXN];
bool vis[MAXN];
vector<int> pos[MAXN];
void init()
{nxt[1]=1;for(int i=2;i<MAXN;i++){if(vis[i]) continue;nxt[i]=i;for(int j=i+i;j<MAXN;j+=i){vis[j]=true;if(nxt[j]==0) nxt[j]=i;}}
}
inline char nc()
{static char buf[100000],*p1=buf,*p2=buf;return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;
}
inline void rea(int &x)
{char c=nc();x=0;for(;c>'9'||c<'0';c=nc());for(;c>='0'&&c<='9';x=x*10+c-'0',c=nc());
}
void solve()
{int n,m;rea(n);rea(m);for(int i=1;i<MAXN;i++) pos[i].clear();for(int i=1;i<=n;i++){rea(a[i]);int x=a[i];while(x!=1){pos[nxt[x]].pb(i);x/=nxt[x];}}while(m--){int l,r,d;rea(l);rea(r);rea(d);int now=nxt[d],cnt=0;bool flag=true;while(d!=1&&flag){while(nxt[d]==now) cnt++,d/=nxt[d];int left=lower_bound(pos[now].begin(),pos[now].end(),l)-pos[now].begin();int right=upper_bound(pos[now].begin(),pos[now].end(),r)-pos[now].begin();int val=right-left;if(val<cnt) flag=false;now=nxt[d],cnt=0;}if(flag) puts("Yes");else puts("No");}
}
int main()
{//freopen("in.txt","r",stdin);//freopen("out.txt","w",stdout);int T;init();rea(T);while(T--){solve();}return 0;
}

B.缺失的数据范围

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6288

直接int128暴力就行了

代码:

#include<bits/stdc++.h>
#define xx first
#define yy second
#define mp make_pair
#define pb push_back
using namespace std;
typedef long long ll;
ll a,b,k;
bool judge(ll x)
{ll cnt=0;ll now=1;while(now<x){cnt++;now<<=1;}__int128 tot=1;for(int i=1;i<=a;i++){tot*=x;if(tot>k) return false;}for(int i=1;i<=b;i++){tot*=cnt;if(tot>k) return false;}return true;
}
void solve()
{scanf("%lld%lld%lld",&a,&b,&k);ll l=0,r=1000000000000000000LL;ll ans=0;while(l<=r){ll mid=(l+r)>>1;if(judge(mid)){ans=mid;l=mid+1;}else{r=mid-1;}}printf("%lld\n",ans);
}
int main()
{//freopen("in.txt","r",stdin);//freopen("out.txt","w",stdout);int T;scanf("%d",&T);while(T--){solve();}return 0;
}

D.奢侈的旅行

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6290

将所有的花费相加之后,发现最终的花费只和到达终点的等级有关,所以我们只要保证到达终点的等级越低越好就行,然后我们发现,经过每条边有一个最高等级,所以只要在最短路的过程中,判断某条边能不能经过即可

代码:

#include<bits/stdc++.h>
#define xx first
#define yy second
#define mp make_pair
#define pb push_back
using namespace std;
typedef long long ll;
const ll INF=0x3f3f3f3f3f3f3f3f;
const int MAXN=100010;
const double eps=1e-8;
int cnt=0;
int sgn(double x)
{if(fabs(x)<eps) return 0;return x>0?1:-1;
}
struct qnode
{int v;ll c;qnode(int _v=0,ll _c=0):v(_v),c(_c){}bool operator <(const qnode &r)const{return c>r.c;}
};
struct Edge
{int u,v,nxt;double lim;ll cost;Edge(){}Edge(int _u,int _v,ll _cost,int _nxt,double _lim):u(_u),v(_v),cost(_cost),nxt(_nxt),lim(_lim){}
};
Edge E[MAXN*4];
bool book[MAXN],vis[MAXN];
int head[MAXN];
ll dist[MAXN];
void init()
{cnt=0;memset(head,-1,sizeof(head));
}
void Dijkstra(int n,int start)//点的编号从0开始
{memset(vis,false,sizeof(vis));for(int i=1;i<=n;i++)dist[i]=INF;priority_queue<qnode>que;while(!que.empty())que.pop();dist[start]=1;que.push(qnode(start,1));qnode tmp;while(!que.empty()){tmp=que.top();que.pop();int u=tmp.v;if(vis[u])continue;vis[u]=true;for(int i=head[u];~i;i=E[i].nxt){int v=E[i].v;int cost=E[i].cost;if(sgn(dist[u]-E[i].lim)>0) continue;if(!vis[v]&&dist[v]>dist[u]+cost){dist[v]=dist[u]+cost;que.push(qnode(v,dist[v]));}}}
}
void addedge(int u,int v,ll w,double lim)
{E[cnt]=Edge(u,v,w,head[u],lim);head[u]=cnt++;
}
void solve()
{int n,m;init();scanf("%d%d",&n,&m);for(int i=1;i<=m;i++){int u,v,a,b;double lim;scanf("%d%d%d%d",&u,&v,&a,&b);if(b==0) lim=INF; else lim=1.0*a/((1LL<<b)-1);addedge(u,v,a,lim);}Dijkstra(n,1);int ans=-1;ll tot=dist[n];if(tot==INF){puts("-1");return ;}while(tot){tot>>=1;ans++;}printf("%d\n",ans);
}
int main()
{//freopen("in.txt","r",stdin);//freopen("out.txt","w",stdout);int T;scanf("%d",&T);while(T--){solve();}return 0;
}

F.赛题分析

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6292

非常适合老年选手水平的输入输出题目

代码:

#include<bits/stdc++.h>
#define xx first
#define yy second
#define mp make_pair
#define pb push_back
using namespace std;
typedef long long ll;
const int MAXN=505;
int a[MAXN],b[MAXN];
void solve()
{int n,m;scanf("%d%d",&n,&m);for(int i=1;i<=n;i++)scanf("%d",&a[i]);for(int i=1;i<=m;i++)scanf("%d",&b[i]);printf("Shortest judge solution: ");if(n>=1) printf("%d bytes.\n",*min_element(a+1,a+1+n));else printf("N/A bytes.\n");printf("Shortest team solution: ");if(m>=1) printf("%d bytes.\n",*min_element(b+1,b+1+m));else printf("N/A bytes.\n");}
int main()
{//freopen("in.txt","r",stdin);//freopen("out.txt","w",stdout);int T;scanf("%d",&T);for(int _=1;_<=T;_++){printf("Problem %d:\n",_+1000);solve();}return 0;
}

H.SA-IS后缀数组

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6294

直接从后往前扫就行了,如果相邻的两个字母相等,本质上就是比较上一次相比较的两个后缀,然后就有线性的做法了

代码:

#include<bits/stdc++.h>
#define xx first
#define yy second
#define mp make_pair
#define pb push_back
using namespace std;
typedef long long ll;
const int MAXN=1e6+5;
char s[MAXN];
int ans[MAXN];
void solve()
{int n;scanf("%d",&n);scanf("%s",s+1);ans[n]=1;for(int i=n-1;i>=1;i--){if(s[i]<s[i+1]) ans[i]=0;else if(s[i]>s[i+1]) ans[i]=1;else ans[i]=ans[i+1];}for(int i=1;i<n;i++)if(ans[i]) printf(">");else printf("<");puts("");
}
int main()
{//freopen("in.txt","r",stdin);//freopen("out.txt","w",stdout);int T;scanf("%d",&T);while(T--){solve();}return 0;
}

K.CCPC直播

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6297

超高校级输出输出题目

代码:

#include<bits/stdc++.h>
#define xx first
#define yy second
#define mp make_pair
#define pb push_back
using namespace std;
typedef long long ll;
const string Running="Running";
const string FB="FB";
int main()
{//freopen("in.txt","r",stdin);//freopen("out.txt","w",stdout);int T;scanf("%d",&T);while(T--){string rk,name,id,st;cin>>rk;for(int i=0;i<3-rk.size();i++)printf(" ");cout<<rk;printf("|");cin>>name;cout<<name;for(int i=name.size();i<16;i++)printf(" ");printf("|");cin>>id;cout<<id;printf("|");cin>>st;printf("[");if(st==Running){int cnt;scanf("%d",&cnt);for(int i=1;i<=cnt;i++)printf("X");for(int i=cnt;i<10;i++)printf(" ");}else if(st==FB){for(int i=0;i<4;i++)printf(" ");printf("AC*");for(int i=7;i<10;i++)printf(" ");}else{for(int i=0;i<4;i++)printf(" ");cout<<st;for(int i=4+st.size();i<10;i++)printf(" ");}printf("]\n");}return 0;
}

字节跳动杯2018中国大学生程序设计竞赛-女生专场相关推荐

  1. 字节跳动杯2018中国大学生程序设计竞赛-女生专场题解

    以下所有AC题解程序来自"仙客传奇"团队. A. 口算训练 题解链接: ABDFHK "字节跳动杯"2018中国大学生程序设计竞赛-女生专场 B. 缺失的数据范 ...

  2. “字节跳动杯“2018中国大学生程序设计竞赛-女生专场

    A-口算训练 题目大意 判断区间[l,r]内的数组元素乘积是否为d的倍数 思路:分解质因数+二分(upper_bound.lower_bound) ==>若区间[l,r]中所有数的每一个质因数的 ...

  3. 巴卡斯杯 中国大学生程序设计竞赛 - 女生专场(重现)解题思路

    此文章可以使用目录功能哟↑(点击上方[+]) 经过这么一次女生赛,告诉我们千万不要小瞧女生,不然会死得很惨,orz... 链接→"巴卡斯杯" 中国大学生程序设计竞赛 - 女生专场( ...

  4. 计算机竞赛女生,我校组队参加 CCPC-WFINAL中国大学生程序设计竞赛女生专场

    6月1日至6月2日,为期两天的"CCPC-WFINAL"中国大学生程序设计竞赛女生专场在南京晓庄学院如期举行.中国大学生程序设计竞赛是由中国大学生程序设计竞赛协会主办的面向世界大学 ...

  5. 2021年中国大学生程序设计竞赛 女生专场 - 热身赛 Problem C. 口算训练(质因子分解)

    题目分析:判断 xxx 是 yyy 的倍数,等价于质因子分解后, yyy 中的每个质因子的出现次数都小于等于其在 xxx 中的出现次数. 那么对于每次询问 [l,r,d][l,r,d][l,r,d], ...

  6. 2019中国大学生程序设计竞赛-女生专场(重现赛)

    题目链接 B:Gcd: 题意: 将1-n这n个数字分成两组,每组至少有一个数字,然后求两组的数的总和的最大公约数. 第一点,要想到分成两组,就是他们两组要够分 第二点,可以通过第一点联想到1–n的总和 ...

  7. 2021年中国大学生程序设计竞赛女生专场 gym103389F 地图压缩

    F. 地图压缩 你正在参与一款2D游戏的地图绘制,你拥有的美术素材是一张 n×n 的像素图片,从上到下依次编号为第 1 行到第 n 行,从左往右依次编号为第 1 列到第 n 列,其中第 i 行第 j ...

  8. 2021年中国大学生程序设计竞赛女生专场 K. 音乐游戏

    题目链接:Problem - K - Codeforces 小Q最近一直在练习osu!mania的4键下落式模式,现在给出一张4键下落式模式的谱面,你需要帮他计算这张谱面中有多少个音符. Input ...

  9. 2021CCPC中国大学生程序设计竞赛女生专场 K 音乐游戏

    题目链接 题目描述 解题思路 这是一个签到题,只要统计_的个数就行了 代码: #include<iostream> #include<stdio.h> #include< ...

最新文章

  1. 【文本分类】基于改进CHI和PCA的文本特征选择
  2. iRank: 基于互联网类脑架构的阿尔法鹰眼发展趋势评估
  3. 记一次关于mock Systemc.currentTimeMillis的实践
  4. 【数据结构与算法】循环队列和链队列的比较
  5. Android睡眠唤醒机制--Kernel态
  6. hdu 2295(DLX+二分)
  7. 【修复版】ONE兔3.0版本社交社区交友婚恋视频即时通讯双端APP原生源码
  8. 天涯明月刀7月5号服务器维护,天涯明月刀7月5日更新_天刀7月5日版本改动_3DM网游...
  9. javascript 字符串的排列与组合
  10. 红米NOTE3 双网通(2015617)刷机包 解账户锁
  11. neo4j-入门---学习复杂关系使用CQL语句操作图数据库(二)
  12. Android VideoView播放avi格式视频有声音无图像问题
  13. 最新解决谷歌浏览器崩溃的方法
  14. cut out数据增强_数据增强:Mixup,Cutout,CutMix | Mosaic
  15. 数据归一化 minmax_scale()函数解析
  16. P7456 [CERC2018] The ABCD Murderer (ac自动机+线段树优化dp/反向st)
  17. 区块链入门教程(8)--WeBASE-Front节点前置服务
  18. 文章阅读统计php,WordPress博客统计文章阅读次数及访客数并刷访问数
  19. 盘一盘那些开设了大数据专业的中国高校
  20. Cypress 元素定位

热门文章

  1. Photoshop简单案例(9)——利用PS去水印的四种方法
  2. Nature:首次发现逆转胰腺癌的扩散的关键调节因子|鹰谷靶点
  3. 蚁群算法解决TSP问题
  4. win10校验MD5,SHA1,SHA256
  5. (1Gb)S28HS01GTGZBHA030/ S28HS01GTGZBHV033/ S28HS01GTGZBHA033 FLASH - NOR闪存器件
  6. 美国创新问题研究​专家范宁:中国科技正在挑战全世界
  7. 轮子四:QT保存数据到 office word文档
  8. 你不在是一个人的世界,对最爱的人说:我爱你
  9. 1.4 19:简单计算器
  10. android 广播 onreceive能干什么,android BroadcastReceiver 广播 onReceive()执行多次