2018 ACM-ICPC 中国大学生程序设计竞赛暨丝绸之路程序设计竞赛
三道大水题,其它题都不会做,真是尴尬和无奈啊……
有想法,但是解决不了,感觉个人不会一些基本解法,终究还是个人学习的内容太少了
B. Goldbach
/*
数值较小,<2^63,分解的两个素数较小,其中一个小于xxx(etc. 1e5)
生成1~x的素数:O(n)
判断素数不能只用已求出的素数相除,这样结果不对。而且这个方法速度太慢。 Code largely studys from https://paste.ubuntu.com/p/JmDk43TTPB/ 米勒拉宾素数测试
https://www.cnblogs.com/cons/p/5188910.html 用unsigned long long 不明觉厉……
*/ #include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <list>
#include <stack>
#include <vector>
#include <set>
#include <map>
#include <queue>
#include <algorithm>
#include <iostream>
using namespace std;
#define ll unsigned long long
const long maxn=1e6;
//const ll mod=1e9+7; bool vis[maxn];
long sum=;
ll zhi[maxn]; //由于考虑到取模数很大 快速幂会溢出
ll add_mod(ll a,ll b,ll mod) //a*b = a*x1 + a*x2 + …
{
ll ans=;
while (b)
{
if (b & )
ans=(ans+a)%mod;
a=(a<<)%mod;
b>>=;
}
return ans;
} ll pow_mod(ll a,ll b,ll mod) //a^b =a^(b/2)*a^(b/2) *a(if b%2==1)
{
if (b>)
{
ll tmp=pow_mod(a,b>>,mod);
tmp=add_mod(tmp,tmp,mod);
if (b & )
tmp=add_mod(tmp,a,mod);
return tmp;
}
return a; // ll r=1;
// while (b)
// {
// if (b & 1)
// r=r*a%mod;
// a=a*a%mod;
// b>>=1;
// }
// return r;
} bool Miller_Rabbin(ll s,ll chu)
{
long ci=,i;
ll d=s-; //ll
while (!(d & )) //除成奇数
{
d>>=;
ci++;
}
ll k=pow_mod(chu,d,s);
if (k==) //第一个为奇数
return ;
for (i=;i<ci;i++,k=k*k%s)
if (k==s-) //以后的为偶数
return ;
return ;
} bool pan(ll s)
{
long i,g=;
ll chu[]={,,,,};
for (i=;i<g;i++)
if (s==chu[i])
return ;
for (i=;i<g;i++)
if (s%chu[i]==)
return ;
for (i=;i<g;i++)
if (!Miller_Rabbin(s,chu[i]))
return ;
return ; // if (s<maxn)
// return vis[s];
// else
// {
// long i;
// for (i=1;i<=ans;i++)
// if (s%zhi[i]==0)
// return false;
// return true;
// }
} int main()
{
long i,j,t;
ll n;
for (i=;i<maxn;i++)
vis[i]=true;
for (i=;i<maxn;i++)
{
if (vis[i])
{
sum++;
zhi[sum]=i;
}
for (j=;j<=sum;j++)
{
if (i*zhi[j]>=maxn)
break;
vis[i*zhi[j]]=false;
if (i%zhi[j]==)
break;
}
} scanf("%ld",&t);
while (t--)
{
scanf("%llu",&n);
for (i=;i<=sum;i++)
if (pan(n-zhi[i]))
{
printf("%llu %llu\n",zhi[i],n-zhi[i]);
break;
}
}
return ;
}
/*
126
146
22222222222
*/
E. Copy and Submit II
运行题目程序一遍就知道了
内存超限(没删原程序的a数组) -> 编译错误(只删了原程序的a数组,没删其它a变量) -> 运行超时(按照题目的代码用cin) -> 运行超时(scanf没用EOF) -> 正确通过
满满的泪水………………………………………………………………………………………………………………………………………………………………………
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <list>
#include <stack>
#include <vector>
#include <set>
#include <map>
#include <queue>
#include <algorithm>
#include <iostream>
using namespace std;
#define ll long long
const long maxn=1e6+;
const ll mod=1e9+; int main()
{
int n,i;
long long r,a;
while (scanf("%ld",&n)!=EOF)
{
r=;
for (i=;i<n;i++)
{
scanf("%lld",&a);
r=r*(a+)%mod;
}
printf("%lld\n",r);
}
return ;
}
I. Reversion Count
//找个样例从头到尾调试一次,查看变量
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <list>
#include <stack>
#include <vector>
#include <set>
#include <map>
#include <queue>
#include <algorithm>
#include <iostream>
using namespace std;
#define ll long long
const long maxn=1e6+;
const ll mod=1e9+; long a[],b[],n; bool pan()
{
long i;
//从高位到低位,之前写错了 ,其实无关紧要,结果能被9整除
for (i=n;i>=;i--)
if (a[i]>b[i])
return true;
else if (a[i]<b[i])
return false;
return false;
} int main()
{
long i,t,x;
char s[];
// while (scanf("%s",s)!=EOF)
while (cin>>s)
{
n=strlen(s);
for (i=;i<=n;i++)
a[i]=s[n-i]-;
for (i=;i<=n;i++)
b[i]=a[n+-i];
if (!pan())
{
for (i=;i<=n;i++)
{
t=a[i];
a[i]=b[i];
b[i]=t;
}
}
for (i=;i<=n;i++)
{
a[i]-=b[i];
if (a[i]<)
{
a[i+]--;
a[i]+=;
}
}
x=;
for (i=n;i>=;i--)
{
x=x*+a[i];
a[i]=x/;
x=x%;
}
while (n> && a[n]==)
n--;
//只使用一位数字,之前写错了
while (n> && a[n]==a[n-])
n--;
if (n==)
printf("YES\n");
else
printf("NO\n");
}
return ;
}
L. Nise-Anti-AK Problem
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <list>
#include <stack>
#include <vector>
#include <set>
#include <map>
#include <queue>
#include <algorithm>
#include <iostream>
using namespace std;
#define ll long long
const long maxn=1e6+;
const ll mod=1e9+; long a[]; int main()
{
long t,n,i;
// for (i=1;i<=100;i++)
// {
// long sum=0;
// for (int j=0;j<=i;j++)
// sum+= (i | j);
// printf("%ld\n",sum);
// } scanf("%ld",&t);
while (t--)
{
scanf("%ld",&n);
for (i=;i<=n;i++)
scanf("%ld",&a[i]);
sort(a+,a+n+);
printf("%ld\n",a[n]);
}
return ;
}
2018 ACM-ICPC 中国大学生程序设计竞赛暨丝绸之路程序设计竞赛的更多相关文章
- 2018 ACM ICPC 南京赛区 酱油记
Day 1: 早上6点起床打车去车站,似乎好久没有这么早起床过了,困到不行,在火车上睡啊睡就睡到了南京.南航离南京南站很近,地铁一站就到了,在学校里看到了体验坐直升机的活动,感觉很强.报道完之后去吃了 ...
- 2018 ACM/ICPC 南京 I题 Magic Potion
题解:最大流板题:增加两个源点,一个汇点.第一个源点到第二个源点连边,权为K,然后第一个源点再连其他点(英雄点)边权各为1,然后英雄和怪物之间按照所给连边(边权为1). 每个怪物连终点,边权为1: 参 ...
- 2018中国大学生程序设计竞赛 - 网络选拔赛 1001 - Buy and Resell 【优先队列维护最小堆+贪心】
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6438 Buy and Resell Time Limit: 2000/1000 MS (Java/O ...
- 2018中国大学生程序设计竞赛 - 网络选拔赛 1010 YJJ's Salesman 【离散化+树状数组维护区间最大值】
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6447 YJJ's Salesman Time Limit: 4000/2000 MS (Java/O ...
- 2014嘉杰信息杯ACM/ICPC湖南程序设计邀请赛暨第六届湘潭市程序设计竞赛
比赛链接: http://202.197.224.59/OnlineJudge2/index.php/Contest/problems/contest_id/36 题目来源: 2014嘉杰信息杯ACM ...
- 2018 ACM 国际大学生程序设计竞赛上海大都会部分题解
题目链接 2018 ACM 国际大学生程序设计竞赛上海大都会 下午午休起床被同学叫去打比赛233 然后已经过了2.5h了 先挑过得多的做了 .... A题 rand x*n 次点,每次judge一个点 ...
- 2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 H题 Rock Paper Scissors Lizard Spock.(FFT字符串匹配)
2018 ACM-ICPC 中国大学生程序设计竞赛线上赛:https://www.jisuanke.com/contest/1227 题目链接:https://nanti.jisuanke.com/t ...
- 2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 F题 Clever King(最小割)
2018 ACM-ICPC 中国大学生程序设计竞赛线上赛:https://www.jisuanke.com/contest/1227 题目链接:https://nanti.jisuanke.com/t ...
- 2018中国大学生程序设计竞赛 - 网络选拔赛 1009 - Tree and Permutation 【dfs+树上两点距离和】
Tree and Permutation Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Oth ...
随机推荐
- gzip命令详解
基础命令学习目录首页 好文链接:https://blog.csdn.net/m0_38132420/article/details/78577247 原文链接:http://www.cnblogs.c ...
- XSS攻击防御篇
前言 上篇文章中提到了 XSS 攻击,而且,也从几个方面介绍了 XSS 攻击带来的严重影响.那么,这篇文章中,主要是针对 XSS 攻击做一个基本的防御,看看可以通过几种方式来修复这个特别常见的安全 ...
- Ubuntu 1804 本地显示远程服务器文件
本地是 Ubuntu 1804 最近想查看服务器上的图片,之前都是scp到本地,感觉太麻烦,于是查到有一种方法,ssh图形界面那种: 1.在File 界面下,左侧文件栏的最后一列有 “+ Other ...
- js最简单的动画
$(document).ready(function(){ //�ֶ�����ҳ��Ԫ�� $("#reset").click(function(){ $("*" ...
- C++ 类 析构函数
一.析构函数的定义 析构函数为成员函数的一种,名字与类名相同,在前面加‘~’没有参数和返回值在C++中“~”是位取反运算符.一个类最多只能有一个析构函数.析构函数不返回任何值,没有函数类型,也没有函数 ...
- android实战开发02
正如我之前提到的,我想的是网页来进行测试发布是有较大难度的,但是我高兴的看到我的好友limary已经熬出头了,之后我会关注他的进度的,感谢他给我的鼓励和启发.现在我要讲讲我的天才运算器V2.0版. 在 ...
- 项目Beta冲刺(团队)随笔集
凡事预则立 项目Beta冲刺准备 第一天 项目Beta冲刺(团队)第一天 第二天 项目Beta冲刺(团队)第二天 第三天 项目Beta冲刺(团队)第三天 第四天 项目Beta冲刺(团队)第四天 第五天 ...
- 在CANopen网络中通过LSS服务设置节点地址和网络波特率
CANopen专有个子协议用来描述怎样去通过网络设置节点地址和波特率,就是CiA DSP-305,大伙都叫LSS协议,是Layer Setting Services的缩写,不太好翻译,也许可以翻译成底 ...
- C++编译与链接(0)-.h与.cpp中的定义与声明
C++中有的东西需要放在可以在.h文件中定义,有的东西则必须放在.cpp文件中定义,有的东西在不同的cpp文件中的名字可以一样,而有的则不能一样 那么究竟哪些东西可在头文件中定义,声明,哪些东西又必须 ...
- Error: Unable to access jarfile D:\Apache\apache-jmeter-3.0\bin\ApacheJMete.jar
双击jmeter.bat后,在cmd窗口显示Error: Unable to access jarfile D:\Apache\apache-jmeter-3.0\bin\ApacheJMete.ja ...