cgp的辣鸡比赛题解
cgp的gcd
题目链接
思路
首先看到这题的时间限制就应该明白,直接爆力没有前途
来考虑一个问题:
如何一个数a(a$!=$1),想找到一个数和他的gcd是a,那是不是只要是a 的倍数都可以
就利用这一点,跑个筛法就好了
代码
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<map>
#include<string>
#include<cstring>
#define ll long long int
#define MAXN 100000
using namespace std;
const int maxn=999999999;
const int minn=-999999999;
inline int read() {
char c = getchar();
int x = 0, f = 1;
while(c < '0' || c > '9') {
if(c == '-') f = -1;
c = getchar();
}
while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
return x * f;
}
/*
1<=m<=100000
1<=a[i]<=10000
*/
int n,a[MAXN];
int ans=minn;
int main() {
cin>>n;
for(int i=1; i<=n; ++i) {
int k=read();
a[k]++;/*记录出现的次数*/
}
for(int i=2; i<=10000; ++i) { /*注意要从2开始循环,因为gcd!=1*/
int k=0;
for(int j=i; j<=10000; j+=i) { /*每次加i确保gcd始终是i*/
k+=a[j];
}
if(k>ans) {
ans=k;
}
}
cout<<ans;
return 0;
}
cgp调戏妹子
题目链接
思路
比较水的题,用拓扑排序+快速幂就行了,这里推荐一下\(lyq\)大佬的简单做法
\(lyq\)大佬已经离去....
代码
#include <iostream>
#include <cmath>
using namespace std;
int n,m,k,x,y,ok=true,next[1001];
bool check(int x) {
int i=x;
while (next[i]!=0) {
i=next[i];
if (i==x)return false;
}
return true;
}
int quick_pow_mod (int a,int b,int c) {
int s=1;
while (b) {
if (b%2) {
s%=c;
a%=c;
s*=a;
}
a%=c;
a*=a;
b=b>>1;
}
return s%c;
}
int main () {
cin>>n>>m>>k;
for (int i=0; i<m; i++) {
cin>>x>>y;
next[x]=y;
ok=check(x);
if (!ok)break;
}
if (ok)cout<<"Yes"<<endl<<k*k;
else cout<<"No"<<endl<<quick_pow_mod(2,k,9997);
return 0;
}
cgp的序列
题目链接
思路
ST表的模板题目
可以看这篇博客:点这里
代码
#include<iostream>
#include<cstring>
#include<string>
#include<cstdlib>
#include<cstdio>
#include<ctime>
#include<cmath>
#include<cctype>
#include<iomanip>
#include<algorithm>
using namespace std;
const int maxn=50010;
const int logn=15;
int n,m,a[maxn],minn[maxn][logn+1],maxx[maxn][logn+1];
int logg[maxn],l,r,minans,maxans,ans,k;
int main()
{
//freopen("lx.in","r",stdin);
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
logg[0]=-1;
for(int i=1;i<=n;i++)
{
minn[i][0]=maxx[i][0]=a[i];
logg[i]=logg[i>>1]+1;//预处理1~n对应的log
}
for(int j=1;j<=logn;j++)
for(int i=1;i+(1<<j)-1<=n;i++)
{
minn[i][j]=min(minn[i][j-1],minn[i+(1<<(j-1))][j-1]);
maxx[i][j]=max(maxx[i][j-1],maxx[i+(1<<(j-1))][j-1]);
}
for(int i=1;i<=m;i++)
{
scanf("%d%d",&l,&r);
k=logg[r-l+1];
maxans=max(maxx[l][k],maxx[r-(1<<k)+1][k]);
minans=min(minn[l][k],minn[r-(1<<k)+1][k]);
ans=maxans-minans;
printf("%d\n",ans);
}
return 0;
}
cgp的背包
题目链接
思路
用3维数组f[i][j][0/1]表示放i件物品,j的题解,是否吞噬物品的最大价值
\[\begin{cases}
f[i][j][0] = f[i - 1][j - c[i]][0] + w[i]\\
f[i][j][1] = f[i - 1][j - c[i]][1] + w[i]\\
\end{cases}\]
代码
来自wxy学长
#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<queue>
#include<vector>
#include<ctime>
using namespace std;
typedef long long ll;
const int N = 1010,M = 13000,INF = 1e9;
ll read() {
ll x=0,f=1;
char c=getchar();
while(c<'0'||c>'9') {
if(c=='-') f=-1;
c=getchar();
}
while(c>='0'&&c<='9') {
x=x*10+c-'0';
c=getchar();
}
return x*f;
}
int g[M];
int f[N][M][2],w[M],c[M],n,m;
int main() {
n = read(),m = read();
for(int i = 1; i <= n; ++i) c[i] = read(),w[i] = read();
int P = read();
for(int i = 0; i <= m; ++i) f[0][i][1] = -INF;
for(int i = 1; i <= n; ++i) {
for(int j = 0; j <= m; ++j) {
if(j >= c[i]) {
f[i][j][0] = f[i - 1][j - c[i]][0] + w[i];
f[i][j][1] = f[i - 1][j - c[i]][1] + w[i];
if(c[i] >= P) f[i][j][1] = max(f[i][j][1],f[i - 1][j][0]);
}
f[i][j][1] = max(f[i][j][1],f[i - 1][j][1]);
f[i][j][0] = max(f[i][j][0],f[i - 1][j][0]);
}
}
int ans = 0;
for(int i = 0; i <= m; ++i) ans = max(ans,f[n][i][1]);
cout<<ans;
return 0;
}
cgp的辣鸡比赛题解的更多相关文章
- [NOIP模拟测试10]辣鸡(ljh) 题解
首先计算块内贡献,很显然是$(x_2-x_1)*(y_2-y_1)*2$. 然后考虑矩形之间的贡献,sort一遍分类讨论$n^2$暴力即可. 注意考虑边界情况是否能多两个,以及角对角的情况. 另外,排 ...
- [CSP-S模拟测试]:辣鸡(ljh) (暴力)
题目描述 辣鸡$ljh\ NOI$之后就退役了,然后就滚去学文化课了.然而在上化学课的时候,数学和化学都不好的$ljh$却被一道简单题难住了,受到了大佬的嘲笑.题目描述是这样的:在一个二维平面上有一层 ...
- JVM 辣鸡回收
垃圾回收算法 标记清除法 先标记出需要回收的对象,然后一次性回收.缺点:会产生内存碎片,并且效率也不高. 标记压缩法 先标记出需要回收的对象,然后让存活对象向一端移动,移动的过程中进行回收辣鸡.避免了 ...
- 纪中OJ 2019.02.15【NOIP提高组】模拟 B 组 梦回三国 比赛题解(第一个)
声明 旁边的同学小 H(胡)对我说: “哟,比赛拿了 140,强!要知道,如果哥第三题 AC 了,哥就 230 了,你个废柴!!!(比赛实际分数 130 额呵)” 顿时,千万草泥马从我心中奔腾而过:你 ...
- 7.29 NOIP模拟测试10 辣鸡(ljh)+模板(ac)+大佬(kat)
T1 辣鸡(ljh) 就是一道分类讨论的暴搜,外加一丢丢的减枝,然而我挂了,为啥呢,分类讨论变量名打错,大于小于号打反,能对才怪,写了sort为了调试就注释了,后来忘了解开,小减枝也没打.但是这道题做 ...
- [比赛题解]CWOI2019-1
[比赛题解]CWOI2019-1 比赛日期:2019.10.12 T1 一道神仙DP题. 我们考虑\(dp[i][j][k]\)表示最后\(i\)位数,\(i-1\)位都是9,最后一位为\(j\),最 ...
- 洛谷P2460 [SDOI2007]科比的比赛(题解)(贪心+搜索)
科比的比赛(题解)(贪心+搜索) 标签:算法--贪心 阅读体验:https://zybuluo.com/Junlier/note/1301158 贪心+搜索 洛谷题目:P2460 [SDOI2007] ...
- noip模拟6[辣鸡·模板·大佬·宝藏]
这怕不是学长出的题吧 这题就很迷 这第一题吧,正解竟然是O(n2)的,我这是快气死了,考场上一直觉得aaaaa n2过不了过不了, 我就去枚举边了,然后调了两个小时,愣是没调出来,然后交了个暴力,就走 ...
- NOIP模拟测试10「大佬·辣鸡·模板」
大佬 显然假期望 我奇思妙想出了一个式子$f[i]=f[i-1]+\sum\limits_{j=1}^{j<=m} C_{k \times j}^{k}\times w[j]$ 然后一想不对得容 ...
随机推荐
- (二)Django自定义标签
1.创建自定义标签 在项目的APP中新建一个Python Package-->blog_tags.py 代码: from django import template from ..models ...
- Luogu3214 HNOI2011 卡农 组合、DP
传送门 火题qwq 我们需要求的是满足元素个数为\(M\).元素取值范围为\([1,2^n-1]\).元素异或和为\(0\)的集合的数量. 首先我们可以计算元素有序的方案数(即计算满足这些条件的序列的 ...
- 微信公众号 分享接口 签名通过 分享无效果(JSSDK自定义分享接口的策略调整)
为规范自定义分享链接功能在网页上的使用,自2017年4月25日起,JSSDK“分享到朋友圈”及“发送给朋友”接口,自定义的分享链接,其域名或路径必须与当前页面对应的公众号JS安全域名一致,否则将调用失 ...
- Hadoop 系列(六)—— HDFS 常用 Shell 命令
一.基本命令 打开 Hbase Shell: # hbase shell 1.1 获取帮助 # 获取帮助 help # 获取命令的详细信息 help 'status' 1.2 查看服务器状态 stat ...
- backpropagation algorithm
搞卷积神经网络的时候突然发现自己不清楚神经网络怎么训练了,满脸黑线,借此机会复习一下把. 首先放一位知乎大佬的解释.https://www.zhihu.com/question/27239198?rf ...
- c#连接Access数据库及增删改查作
access:版本2003(后缀.mdb,新版access可另存为2003兼容版) using: using System;using System.Data;using System.Windows ...
- System.Data.Entity.Core.EntityException: 可能由于暂时性失败引发了异常。如果您在连接到 SQL Azure 数据库,请考虑使用 SqlAzureExecutionStrategy。
代码异常描述 ************** 异常文本 **************System.Data.Entity.Core.EntityException: 可能由于暂时性失败引发了异常.如果 ...
- Android 低功耗蓝牙BLE 开发注意事项
基本概念和问题 1.蓝牙设计范式? 当手机通过扫描低功耗蓝牙设备并连接上后,手机与蓝牙设备构成了客户端-服务端架构.手机通过连接蓝牙设备,可以读取蓝牙设备上的信息.手机就是客户端,蓝牙设备是服务端. ...
- MyBatis之Oracle、Mysql批量插入
Mybatis中Dao层 public interface UsersMapper { public void insertEntitys(List<UserEntity> users); ...
- 阿里云SOP
阿里云SOP 摘要 注册阿里云账号. 领取及配置ECS. 领取及配置RDS. 部署网站. 注册阿里云账号 在主页点击注册 填入相应的信息 领取及配置ECS 注册后领取免费的ECS,RDS. 打开控制台 ...