Problem 1 无聊的gcd(gcd.c/cpp/pas)

话说出题人不会被查水表吧。

简单的问题描述:从N个正整数里面取出K个数的最大公因数最大是多少。(请将答案乘上k之后输出哦,谢谢合作。)

输入格式

第一行两个正整数N,K。

第二行n个正整数

输出格式

输出一个正整数表示最大的最大公因数。

样例输入

3 1

1 2 3

样例输出

3

数据说明

对于30%的数据,保证k≤n≤20。

对于50%的数据,保证输入中所有数小于5000。

对于100%的数据,保证输入中所有数小于500000,k≤n。


0表示不取 1表示取

用i的二进制表示状态  比如i=10101表示取1,3,5    i=00110表示取3,4

然后for一遍,tmp表示i的二进制当中1的数量
如果1有k个
那么i代表的状态选了k个数

for一遍把i表示的状态取了的数的gcd取出来

最后统计ans
#include <cstdio>
#include<iostream>
using namespace std;
const int Maxn = ; int a[Maxn],n,k,ans=; int gcd(int a,int b)
{
return b ? gcd(b,a%b) : a;
} int max(int a,int b)
{
return a < b ? b : a ;
} int main()
{
scanf("%d%d",&n,&k);
for(int i=;i<n;++i)scanf("%d",&a[i]);//读入
for(int i=;i<(<<n);++i)
{
int tmp = ;
for(int j=;j<n;++j)
{
if(i&(<<j)) ++tmp;
//tmp表示选了几个数
}
// printf("i = %d : tmp = %d\n",i,tmp);
if(tmp==k)//如果选了k个
{
tmp=-;
for(int j=;j<n;++j)
{
if(i&(<<j))
{
if(tmp==-) tmp=a[j];
else tmp=gcd(a[j],tmp);
}
}
ans = max(ans,tmp);
// printf("ans : %d\n",ans);
}
}
printf("%d",ans*k);
puts("");
return ;
}

QAQ数论好烦啊

如果i&(1<<j) == 1的话那么i的第j位就是1

因为1<<j是...001000...的形式存在,所以和 i 与起来,要是 i 这一位是 1 , 就是1,i 这一位是0,就是0

所以 i&(1<<j) 表示 i 在二进制下的第 j 位

因为1<<0 = 1 这时候j=0 如果从1存的话就变成1<<1 = 2 那就时间复杂度*2 所以从0开始读


首先所有输入数字不大于50W,那么我们开一个50W的数组,记下每个数字出现多少次

然后就有一些有意思的事情发生了

我们从小到大枚举答案 每个答案x,判定可行的方法就是遍历每一个x的倍数

那么只要把所有x的倍数统计一下有多少看看是不是大于等于k就好了

如果我选的是这k个x的倍数,那么我们不就知道答案至少是x了


Problem 2 虫洞(wormhole.cpp/c/pas)

【题目描述】

John在他的农场中闲逛时发现了许多虫洞。虫洞可以看作一条十分奇特的有向边,并可以使你返回到过去的一个时刻(相对你进入虫洞之前)。John的每个农场有M条小路(无向边)连接着N (从1..N标号)块地,并有W个虫洞(有向边)。其中1<=N<=500,1<=M<=2500,1<=W<=200。 现在John想借助这些虫洞来回到过去(出发时刻之前),请你告诉他能办到吗。 John将向你提供F(1<=F<=5)个农场的地图。没有小路会耗费你超过10000秒的时间,当然也没有虫洞回帮你回到超过10000秒以前。

【输入格式】

* Line 1: 一个整数 F, 表示农场个数。

* Line 1 of each farm: 三个整数 N, M, W。

* Lines 2..M+1 of each farm: 三个数(S, E, T)。表示在标号为S的地与标号为E的地中间有一条用时T秒的小路。

* Lines M+2..M+W+1 of each farm: 三个数(S, E, T)。表示在标号为S的地与标号为E的地中间有一条可以使John到达T秒前的虫洞。

【输出格式】

* Lines 1..F: 如果John能在这个农场实现他的目标,输出"YES",否则输出"NO"。

【样例输入】

2

3 3 1

1 2 2

1 3 4

2 3 1

3 1 3

3 2 1

1 2 3

2 3 4

3 1 8

【样例输出】

NO

YES


1.一个点如果经过一个环以后dis一直在变小,那么显然这个环是负环
2.如果没有负环一个点最多进队n次(每条只想j的边都维护一遍dis)

所以vis记成int,int vis[Maxn];

while(!q.empty()) 

Problem 3 机器人(robot.cpp/c/pas)

【题目描述】

早苗入手了最新的Gundam模型。最新款自然有着与以往不同的功能,那就是它能够自动行走,厉害吧。

早苗的新模型可以按照输入的命令进行移动,命令包括‘E’、‘S’、‘W’、‘N’四种,分别对应东南西北。执行某个命令时,它会向对应方向移动一个单位。作为新型机器人,它可以执行命令串。对于输入的命令串,每一秒它会按命令行动一次。执行完命令串的最后一个命令后,会自动从头开始循环。在0时刻时机器人位于(0,0)。求T秒后机器人所在位置坐标。

【输入格式】

第1行:一个字符串,表示早苗输入的命令串,保证至少有1个命令

第2行:一个正整数T

【输出格式】

2个整数,表示T秒时,机器人的坐标。

【样例输入】

NSWWNSNEEWN

12

【样例输出】

-1 3

【数据范围】

对于60%的数据 T<=500,000 且命令串长度<=5,000

对于100%的数据 T<=2,000,000,000 且命令串长度<=5,000

【注意】

向东移动,坐标改变改变为(X+1,Y);

向南移动,坐标改变改变为(X,Y-1);

向西移动,坐标改变改变为(X-1,Y);

向北移动,坐标改变改变为(X,Y+1);


由于t特别大然后操作序列最长只有5000

就先做一遍操作序列,看看做完一整个序列之后,x和y是变化量是多少,并记录这个变化量

用t除以长度,剩下的就是取模了就是t%长度  就知道要做到哪里了

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
char ch[];
int t,nn=;
int xx=,yy=;
int x=,y=;
int main()
{
scanf("%s%d",ch+,&t);
int n=strlen(ch+);
for(int i=;i<=n;++i)
{
if(ch[i]=='N')yy++;
if(ch[i]=='S')yy--;
if(ch[i]=='W')xx--;
if(ch[i]=='E')xx++;
}
nn=t/n;
t%=n;
for(int i=;i<=t;++i)
{
if(ch[i]=='N')y++;
if(ch[i]=='S')y--;
if(ch[i]=='W')x--;
if(ch[i]=='E')x++;
}
cout<<x+xx*nn<<" "<<y+yy*nn;
puts("");
return ;
}

模拟也要动脑子QAQ

套题T4的更多相关文章

  1. 第46套题【STL】【贪心】【递推】【BFS 图】

    已经有四套题没有写博客了.今天改的比较快,就有时间写.今天这套题是用的图片的形式,传上来不好看,就自己描述吧. 第一题:单词分类 题目大意:有n个单词(n<=10000),如果两个单词中每个字母 ...

  2. Educational Codeforces Round 15 套题

    这套题最后一题不会,然后先放一下,最后一题应该是大数据结构题 A:求连续最长严格递增的的串,O(n)简单dp #include <cstdio> #include <cstdlib& ...

  3. 【套题】qbxt国庆刷题班D1

    Day1 事实上D1的题目还是比较简单的= =然而D1T2爆炸了就十分尴尬--错失一波键盘 看题 T1 传送门 Description 现在你手里有一个计算器,上面显示了一个数\(S\),这个计算器十 ...

  4. Moscow Pre-Finals Workshop 2016. Japanese School OI Team Selection. 套题详细解题报告

    写在前面 谨以此篇题解致敬出题人! 真的期盼国内也能多出现一些这样质量的比赛啊.9道题中,没有一道凑数的题目,更没有码农题,任何一题拿出来都是为数不多的好题.可以说是这一年打过的题目质量最棒的五场比赛 ...

  5. Tarjan & LCA 套题题目题解

    刷题之前来几套LCA的末班 对于题目 HDU 2586 How far away 2份在线模板第一份倍增,倍增还是比较好理解的 #include <map> #include <se ...

  6. 套题 codeforces 361

    A题((Mike and Cellphone) 看起来好像需要模拟数字键位的运动,可是,只要判断出那些必然YES的数字组合不就好了么 #include <cstdio> #include ...

  7. 套题 codeforces 360

    A题:Opponents 直接模拟 #include <bits/stdc++.h> using namespace std; ]; int main() { int n,k; while ...

  8. 套题 codeforces 359

    A题:Free Ice Cream 注意要使用LL,避免爆int #include <bits/stdc++.h> #define scan(x,y) scanf("%d%d&q ...

  9. 套题 bestcoder 84

    A题:Aaronson 静下心来观察就会发现1.如果m大于等于n的位数,那么n直接写成二进制形式就是最优解形式2.如果m小于n的位数,那么贪心地使得高位尽可能地多消掉n的值,因为高位少写一个数就意味着 ...

随机推荐

  1. RHEL安装docker-compose

    Note that Compose 1.5.2 requires Docker 1.7.1 or later. pip install docker-compose==1.5.2 Note that ...

  2. 基于jQuery的判断iPad、iPhone、Android是横屏还是竖屏

    function orient() {if (window.orientation == 90 || window.orientation == -90) {//ipad.iphone竖屏:Andri ...

  3. How to change Form & Property & Report font for current User [AX2012]

    对于我们开发人员来说,系统默认的字体,本人实在不喜欢,尤其是属性字体[太小,太细,根本看不清],每次做一个新项目[AX2012]第一件事就是更改字体. 由于AX2012没有像AX2009那样,可以工具 ...

  4. jQuery实现分页

    转载地址 http://www.cnblogs.com/xiaoruoen/archive/2012/01/11/2318199.html ;( function($){ $.extend({ &qu ...

  5. 每日一“酷”之copy

    Copy – 复制对象 作用:提供一些函数,可以使用浅副本或深副本语义复制对象. copy模块包括两个函数copy()和deepcopy(),用于复制现有的对象 1.  浅副本 copy()创建的浅副 ...

  6. XAML 概述三

    通过对前面2节对XAML的介绍,我们对XAML有了一定的认识.这一节我们来简单了解一下部分XAML命名空间(x:)语言功能. x命名空间映射的是http://schemas.microsoft.com ...

  7. C#转换日期类型

    日期1999-5-31 11:20转换成 /Date(928120800000+0800)/ 其中928120800000实际上是一个1970 年 1 月 1 日 00:00:00至这个DateTim ...

  8. css的display属性小实验

    div与span是常用的盒子模型; 区别: div默认是垂直分布(独占一行)   span默认是水平分布(一行可以有多个) 通过float属性可以改变div容器的分布方式达到span容器的效果; 下面 ...

  9. CentOS6.5安装tomcat7

    把下载的apache-tomcat-7.0.19.tar.gz文件上传到服务器的根目录    #tar zxvf apache-tomcat-7.0.19.tar.gz    #mv apache-t ...

  10. Flash设置全屏后,放到网页中显示不正常

    stage.displayState = StageDisplayState.FULL_SCREEN;//全屏,注意当设置全屏后,放到网页中显示不正常