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 ...
随机推荐
- ubuntu16.04 CUDA, CUDNN 安装
这次介绍的是使用 tensorflow1.8, cuda9.0, cudnn7.0的版本 https://developer.nvidia.com/cuda-90-download-archive 下 ...
- OSSEC 架构
OSSEC由很多部分组成,它有一个集中的管理端,用于监控.并接收来自代理.syslog.数据库或无代理设备的日志. 管理端(服务器) 管理端属于OSSEC部署中的中心部分.它存储了文件完整性检测数据库 ...
- tomcat安装及使用详解
常用软件安装及使用目录 资料链接:https://pan.baidu.com/s/1XOUlneFqt-_1tOLSmc-E1g 网盘分享的文件在此 1. Tomcat简介 Tomcat是一个 ...
- Windows搭建python开发环境
python你不去认识它,可能没什么,一旦你认识了它,你就会爱上它 基本概念Python(英语发音:/ˈpaɪθən/), 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum ...
- linux安装nginx并配置负载均衡
linux上安装nginx比较简单: 前提是需要有gcc或者g++ 1.yum需要的依赖 yum -y install openssl openssl-devel 2.解压pcre库.zlib库 ...
- java实验二实验报告
一.实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计模式 二.实验过程(本次试验都 ...
- 找"1"
题目:给定一个十进制的正整数,写下从1开始,到N的所有整数,然后数一下其中出现“1”的次数. 要求:1.写一个函数f(N),返回1到N之间出现“1”的个数.例如f(12)=5. 2.在32位整数范围内 ...
- 进阶系列(10)—— C#元数据和动态编程
一.元数据的介绍 元数据是用来描述数据的数据(Data that describes other data).单单这样说,不太好理解,我来举个例子.下面是契诃夫的小说<套中人>中的一段,描 ...
- [转帖]常见USB种类
随着 USB Type-C 接口被苹果推上热门话题,那么对于我们普通的消费者来说,各种 USB 接口类型我们知道多少?买一个设备回来我们是否会遇到各种接口各种线用不了的情况呢? 那么我们泪雪网新开的一 ...
- C#基础知识(base、this、new、override、abstract、virtual、static)
前言 本文主要来讲解一下C#中,自己觉得掌握的不怎么样或者用的不多,不太熟悉的关键字,主要包括base.this.new.override.abstract.virtual以及针对static字段和s ...