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 ...
随机推荐
- Daily Scrumming* 2015.10.26(Day 7)
一.总体情况总结 今天我们开会具体讨论了一下接下来的任务.还详细讨论了一下分数的分配,具体分数分配我们会在下一篇博客中详细说明. 我们下一周大致的工作安排如下: 1.UI:完成社团后台界面的设计,以及 ...
- 在Windows下制作静态库和动态库
一:静态库的创建 VC++6.0中new一个的为win32 static library工程,之后有二个选项.根据需求选吧. 具体的类或者函数的添加过程和标准的工程一样,直接创建新的类或者添加新 的. ...
- beat冲刺(4/7)
目录 摘要 团队部分 个人部分 摘要 队名:小白吃 组长博客:hjj 作业博客:beta冲刺(4/7) 团队部分 后敬甲(组长) 过去两天完成了哪些任务 整理博客 ppt模板 接下来的计划 做好机动. ...
- HDU 4568 Hunter 最短路+TSP
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4568 Hunter Time Limit: 2000/1000 MS (Java/Others)Me ...
- 使用 java 实现一个简单的 markdown 语法解析器
1. 什么是 markdown Markdown 是一种轻量级的「标记语言」,它的优点很多,目前也被越来越多的写作爱好者,撰稿者广泛使用.看到这里请不要被「标记」.「语言」所迷惑,Markdown 的 ...
- 10_Java面向对象_第10天(继承、抽象类)_讲义
今日内容介绍 1.继承 2.抽象类 3.综合案例---员工类系列定义 01继承的概述 *A:继承的概念 *a:继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系 *b:在Jav ...
- Enterprise Library 6.0 参考源码索引
http://www.projky.com/entlib/6.0/Diagnostics/Tracing/DiaLib.cs.htmlhttp://www.projky.com/entlib/6.0/ ...
- js 算法
var str=‘abscdf’; function solution(str){ var arr=new Array(); if(str.length%2==0){ for(i=0;i<str ...
- 关闭SSD(固态硬盘)节能功能 提搞SSD性能
此方法可以缓解比如QQ聊天时能明显感觉到打字过程不连续,0.1s左右的间歇停顿,操作系统并不会锁死,系统突然停止响应,硬盘灯狂闪,鼠标指针成为圆圈,点什么都没反应,这种状况可能会持续1-2分钟, ...
- Windows10 桌面显示 我的电脑
桌面上面有我的电脑还是非常方便的 但是 不激活有时候没法选择: 方法 桌面空白处右键---个性化 然后在 个性化- 主题- 桌面图标设置 增加即可.