博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
你有多少胜算把我困在里面/周六省赛模拟大概想到了一些//ZOJ - 3787/ZOJ - 3785 费马,,??
阅读量:4144 次
发布时间:2019-05-25

本文共 3128 字,大约阅读时间需要 10 分钟。

首先.......对那种过的很少的- -...别期待自己能暴力过!!!!!这么少人是有理由的- -

别期待自己暴力过了!..(举例,1e6的数据,你觉得1e3的复杂能过啊,....但是其实比的时候是1e6-1e3,再乘上,一下子就超时了呀)

链接https://vjudge.net/contest/224185#status/000_/-/0/

大概就是,题其实不难,省赛可能都是这样的,但是就是写不对

(我感觉)【尤其是复制的时候会有各种各样的问题】

多简单的题啊,我竟然可以搞这么久

https://vjudge.net/contest/224185#problem/G

这个就是模拟加减法..反正当时错的时候是错在减法的运算律....

真的是- -

还有cin>>的时候的错 ,以及复制的时候可能没改全,s1s2什么的,还有a1+a2,最后如果是先算的话,后面用运算律

后面先算,那么应该是a1-temp而不是temp-a1

最后还错在如果前面是减法后面也是减法的话,是不能结合着算的,不能先算后面的再算前面的,这些地方想想就好后怕啊!。。。。脑子清醒真的是挺可怕的事情- -。。

对了...贴个图(吓死了)

以及,下面那个也不难的但是自己写。。。明明十五分钟可以完全搞定的,后面简直心态崩了,WA得。。

3787哦,https://vjudge.net/problem/ZOJ-3787、

cmp写反了!。。大小的比较,写的时候就要注意一下

但是有个好地方,就是给的三个地方的时间,时分秒,其实可以优化成3600*hour+60*min+s;

(可以节省很多地方)

用个ID存一下就好啦。

【这个题还有个坑,就是第一个人肯定要先开门,但是给你的顺序,就是你要记录的顺序可能是无序的!》。。】

啊,就是你输出的时候也要重新排序一下- -

按照我的写法好像还要先输出最开始那个,结果哦还是换成i从1开始好一点

然后最可怕的地方来了。。。。

if (t > q[i].num);			else			{				record[cnt++]=q[i].id ;//				cnt++;				t = q[i].num+par;}

一个是,没事的话直接;了,还有就是最开始是t+=par嘛,应该是q[i].num的,但是改的时候

最开始是+=...  改成=才对啊,猛然没发现,样例骗了过去,....多可怕的事实啊0.0代码能力真的还需要增强!!!!

就是说嘛,其实这个题里没什么东西。。。但是就是会错

真·我还差多远

#include
#include
#include
#include
using namespace std;typedef long long ll;struct node{ int id; int num; node(int _id, int _hour) :id(_id), num(_hour){} node(){}}q[20005];bool cmp(node a, node b) { return a.num < b.num;}int time(int a, int b, int c) { return a * 3600 + b * 60 + c;}int record[20005];int main() { int aaa; cin >> aaa; while (aaa--) { //memset(record, 0, sizeof(record)); int n; int par; cin >> n >> par; int hour, min, s; int temp; for (int i = 1; i <= n; i++) { scanf("%d:%d:%d", &hour, &min, &s); temp=time(hour, min, s); q[i].num=temp; q[i].id=i; } sort(q+1, q + n+1, cmp); int t; t = q[1].num + par; int cnt = 0; record[cnt++] = q[1].id; for (int i = 2; i <= n; i++) { if (t > q[i].num); else { record[cnt++]=q[i].id ;// cnt++; t = q[i].num+par; //????????? }} sort(record, record + cnt); cout << cnt << endl; for (int i = 0; i < cnt-1; i++) cout << record[i] << " "; cout << record[cnt - 1] << endl;for(int i=0;i

然后3785,也不复杂...

感觉着里面有规律的,隐隐约约发现好像平方就跟没平方一样?

比如8%7=1,8*8=64,64%7=1; 9*9=81%7

6*6=36 (1) 5*5=25 (4)

....

然而!大家表示:打个表吧,发现有294这个神器的数,然后就简单了!...

(最开始我想的是%7就没了,仔细想想其实没任何理由会没掉的)

"通guo打表发现周期是294,那么就简单了"/

打表i的i次方%7后的值,就可以发现42一循环

然后用公式计算出结果

http://www.cnblogs.com/njczy2010/p/3930688.html

这个写的有点意思...

感觉今天奇奇怪怪的-.- 不知道在写什么

*******************

然后发现里面藏着一个费马小引理- -...

https://blog.csdn.net/zcy_2016/article/details/55054146

(以下为粘贴代码)

费马小定理:假如p是质数,且gcd(a,p)=1,那么 a(p-1)≡1(mod p)。即:假如a是整数,p是质数,且a,p互质(即两者只有一个公约数1),那么a的(p-1)次方除以p的余数恒等于1。

同余证法:

任意取一个质数,比如13。考虑从1到12的一系列整数1,2,3,4,5,6,7,8,9,10,11,12,给这些数都乘上一个与13互质的数,比如3,得到3,6,9,12,15,18,21,24,27,30,33,36。对于模13来说,这些数同余于3,6,9,12,2,5,8,11,1,4,7,10。这些余数实际上就是原来的1,2,3,4,5,6,7,8,9,10,11,12,只是顺序不同而已。
把1,2,3,…,12统统乘起来,乘积就是12的阶乘12!。把3,6,9,…,36也统统乘起来,并且提出公因子3,乘积就是312×12!。对于模13来说,这两个乘积都同余于1,2,3,…,12系列,尽管顺序不是一一对应,即312×12!≡12!mod 13。两边同时除以12!得312≡1 mod 13。如果用p代替13,用x代替3,就得到费马小定理xp-1≡1 mod p。

(上面的是3^12....)

然后还有就是,好像写成a(p-1)%p=1一样的-.-...

https://blog.csdn.net/piekey1994/article/details/38436511

你可能感兴趣的文章
Android自动关机代码
查看>>
Android中启动其他Activity并返回结果
查看>>
2009年33所高校被暂停或被限制招生
查看>>
GlassFish 部署及应用入门
查看>>
iWatch报错: Authorization request cancled
查看>>
iWatch报错: Authorizationsession time out
查看>>
X-code7 beta error: warning: Is a directory
查看>>
Error: An App ID with identifier "*****" is not avaliable. Please enter a different string.
查看>>
iTunes Connect 上传APP报错: Communication error. please use diagnostic mode to check connectivity.
查看>>
3.5 YOLO9000: Better,Faster,Stronger(YOLO9000:更好,更快,更强)
查看>>
iOS菜鸟学习--如何避免两个按钮同时响应
查看>>
iOS菜鸟学习—— NSSortDescriptor的使用
查看>>
hdu 3790 hdoj 3790
查看>>
zju 1005 zoj 1005
查看>>
C语言8
查看>>
Qt实现简单延时
查看>>
qml有关矩形说明
查看>>
在qt中使用QSplitter设置初始比例setStretchFactor失效的解决方法
查看>>
repeater的使用
查看>>
qt msvc编译中文乱码解决
查看>>