闲来无事呆在寝室打打题,没有想到还有中奖这种操作,超开心的

Start Time:2017-06-24 12:00:00 End Time:2017-06-24 14:30:00 Refresh Time:2017-06-24 14:48:00 Private

A -- Sin your life

Time Limit:1s Memory Limit:128MByte

Submissions:529Solved:76

DESCRIPTION

给一个正整数nn,求下列表达式的最大值:
(sin(x)+sin(y)+sin(z))[x+y+z=n][x≥1][y≥1][z≥1](sin(x)+sin(y)+sin(z))[x+y+z=n][x≥1][y≥1][z≥1]
为了降低难度,这里的x,y,zx,y,z皆为整数

INPUT
输入只有一行,包含一个正整数n(3≤n≤3∗106)n(3≤n≤3∗106)
OUTPUT
输出一行表示答案,请恰好保留99位小数.(你的答案必须和标准答案完全一样才算通过)
SAMPLE INPUT
3
SAMPLE OUTPUT
2.524412954
这个题用拉格朗日乘数法很快可以得到3sin(n/3),可是这个题是都是整数啊,取一个最近的也不对,所以我就暴力求解,暴力超时了,怎么改都过不了,所以我采用了打表的方法,发现有两个数冰然相同,所以直接搓一下代码就可以了#include <stdio.h>
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
double d=-3.0;
for(int i=n/3+1;i;i--)
if(n-*i>)
d=max(*sin(i)+sin(n-*i),d);
printf("%.9f\n",d);
return ;}
B -- 震惊,99%+的中国人都会算错的问题

Time Limit:4s Memory Limit:128MByte

Submissions:196Solved:47

DESCRIPTION

众所周知zhu是一个大厨,zhu一直有自己独特的咸鱼制作技巧.
tang是一个咸鱼供应商,他告诉zhu在他那里面有NN条咸鱼(标号从1到N)可以被用来制作.
每条咸鱼都有一个咸鱼值KiKi,初始时所有KiKi都是00.
zhu是一个特别的人,他有MM个咸数(咸鱼数字), 对于每个咸数xx,他都会让所有满足标号是xx倍数的咸鱼的咸鱼值异或上11.
zhu现在想知道经过了这MM个咸数的筛选之后,最终有多少条的咸鱼的咸鱼值是11?

INPUT
输入的第一行包含一个整数T(1≤T≤1000)T(1≤T≤1000),表示有TT组数据.
对于每组数据:
输入第一行只有两个整数N(1≤N≤109)N(1≤N≤109),M(1≤M≤15)M(1≤M≤15).
接下来一行有MM个整数,依次对应zhu的每个咸数(1≤咸数≤2∗1051≤咸数≤2∗105).
OUTPUT
对于每组数据,输出答案.
SAMPLE INPUT
2
10 1
3
10 1
1
SAMPLE OUTPUT
3
10

这个题是很经典的容斥啊,不过我以前做的是容斥是统计所有格子的,这个容斥需要统计奇数个的数字个数,两个相同的数异或为0

所以我就要对之前的容斥进行修改,比如A BC,我以前是 A+B+C-AC-AB-BC+ABC,现在我需要做的是A+B+C-2AC-2AB-2BC+4ABC,和我当前id有关,2的几次幂,然后就可以过了

#include <stdio.h>
#include <bits/stdc++.h>
using namespace std;
long long ans,a[];
int n,m;
long long gcd(long long a,long long b){
return b==?a:gcd(b,a%b);
}
void DFS(int cur,long long lcm,int id){
lcm=a[cur]/gcd(a[cur],lcm)*lcm;
if(id&)
ans+=n/lcm*(<<(id-));
else
ans-=n/lcm*(<<(id-));
for(int i=cur+;i<m;i++)
DFS(i,lcm,id+);
}
int main(){
int t;
cin>>t;
while(t--){
cin>>n>>m;
ans=;
for(int i=;i<m;i++)
cin>>a[i];
for(int i=;i<m;i++)
DFS(i,a[i],);
cout<<ans<<endl;
}
return ;}
D -- 喵哈哈村的智慧大师丶).妩钶取玳°月

Time Limit:1s Memory Limit:256MByte

Submissions:156Solved:39

DESCRIPTION

丶).妩钶取玳°月是月大叔的ID,他是一个智商高达429的智力大师,最擅长的技能就是搞事。今天他又要开始搞事了。

现在有n个元素aiai

然后现在有Q个询问,每次月大叔想问一共有多少对pair<i,j>,满足a[i]+a[j]>=k(其中 i<j)

INPUT
输入第一行包含一个正整数t(1≤t≤100)t(1≤t≤100) ,表示有t组数据 对于每组数据: 第一行两个整数n,q。表示有n(1≤n≤100000)n(1≤n≤100000)个元素,q(1≤q≤100000)q(1≤q≤100000)次询问 第二行n个整数aiai (1≤ai≤100000)(1≤ai≤100000),表示每个元素的大小。 接下来q行,每行一个k(1≤k≤200000)k(1≤k≤200000),表示询问。
OUTPUT
对于每组测试数据的询问,输出有多少对即可。
SAMPLE INPUT
1 5 5 1 2 3 4 5 1 2 3 4 5
SAMPLE OUTPUT
10 10 10 9 8
D我正在用二分去做,可是GG了,这个做法naive了,根本过不了的,要用FFT,网上找的模板一直wa啊,可能我的姿势不太对,是我最后统计的姿势出了偏差(吐血
以下为ac代码
#include <bits/stdc++.h>
#include <stdio.h>
#include <bits/stdc++.h>
using namespace std;
#define LL long long
const double pi=acos(-1.0);
struct Complex {
double x,y;
Complex(double _x=0.0,double _y=0.0) {
x=_x;
y=_y;
}
Complex operator -(const Complex &b)const {
return Complex(x-b.x,y-b.y);
}
Complex operator +(const Complex &b)const {
return Complex(x+b.x,y+b.y);
}
Complex operator *(const Complex &b)const {
return Complex(x*b.x-y*b.y,x*b.y+y*b.x);
}
};
void change(Complex y[],int len) {
int i,j,k;
for(i=,j=len/; i<len-; i++) {
if(i<j) swap(y[i],y[j]);
k=len/;
while(j>=k) {
j-=k;
k/=;
}
if(j<k) j+=k;
}
}
void fft(Complex y[],int len,int on) {
change(y,len);
for(int h=; h<=len; h<<=) {
Complex wn(cos(-on**pi/h),sin(-on**pi/h));
for(int j=; j<len; j+=h) {
Complex w(,);
for(int k=j; k<j+h/; k++) {
Complex u=y[k];
Complex t=w*y[k+h/];
y[k]=u+t;
y[k+h/]=u-t;
w=w*wn;
}
}
}
if(on==-) {
for(int i=; i<len; i++)
y[i].x/=len;
}
}
const int maxn=;
Complex x1[maxn];
int a[maxn];
LL num[maxn];
int main() {
int ncase;
scanf("%d",&ncase);
while(ncase--) {
memset(num,,sizeof(num));
int n,k;
scanf("%d%d",&n,&k);
for(int i=; i<n; i++) {
scanf("%d",&a[i]);
num[a[i]]++;
}
sort(a,a+n);
int len1=a[n-]+;
int len=;
while(len<*len1) len<<=;
for(int i=; i<len1; i++)
x1[i]=Complex(num[i],);
for(int i=len1; i<len; i++)
x1[i]=Complex(,);
fft(x1,len,);
for(int i=; i<len; i++)
x1[i]=x1[i]*x1[i];
fft(x1,len,-);
for(int i=; i<len; i++)
num[i]=(long long)(x1[i].x+0.5);
len=*a[n-];
for(int i=; i<n; i++)
num[a[i]+a[i]]--;
for(int i=; i<=len; i++) {
num[i]/=;
num[i]+=num[i-];
}
while(k--) {
int s;
scanf("%d",&s);
if(s>len) printf("0\n");
else
printf("%lld\n",num[len]-num[s-]);
}
}
return ;
}

“玲珑杯”线上赛 Round #17 河南专场的更多相关文章

  1. “玲珑杯”线上赛 Round #17 河南专场 B:震惊,99%+的中国人都会算错的问题(容斥计算)

    传送门 题意 略 分析 是一道稍微变形的容斥题目,容斥一般的公式 \[ans=\sum_iAi-\sum_{i<j}{Ai∩Aj}+\sum_{i<j<k}{Ai∩Aj∩Ak}+.. ...

  2. “玲珑杯”线上赛 Round #17 河南专场 A: Sin your life(和化积公式)

    传送门 题意 略 分析 首先将sin(x)+sin(y)+sin(z)h转化成\(2*sin(\frac{x+y}2)*cos(\frac{x-y}2)+sin(z)\),而cos(z)=cos(-z ...

  3. 2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 H题 Rock Paper Scissors Lizard Spock.(FFT字符串匹配)

    2018 ACM-ICPC 中国大学生程序设计竞赛线上赛:https://www.jisuanke.com/contest/1227 题目链接:https://nanti.jisuanke.com/t ...

  4. 2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 F题 Clever King(最小割)

    2018 ACM-ICPC 中国大学生程序设计竞赛线上赛:https://www.jisuanke.com/contest/1227 题目链接:https://nanti.jisuanke.com/t ...

  5. 2019第十二届全国大学生信息安全实践创新赛线上赛Writeup

    本文章来自https://www.cnblogs.com/iAmSoScArEd/p/10780242.html  未经允许不得转载! 1.MISC-签到 下载附件后,看到readme.txt打开后提 ...

  6. 2017CUIT校赛-线上赛

    2017Pwnhub杯-CUIT校赛 这是CUIT第十三届校赛啦,也是我参加的第一次校赛. 在被虐到崩溃的过程中也学到了一些东西. 这次比赛是从5.27早上十点打到5.28晚上十点,共36小时,中间睡 ...

  7. RCTF 2018线上赛 writeup

    苦逼的RCTF,只进行了两天,刚好第二天是5.20,出去xxx了,没法打比赛,难受.比赛结束了,还不准继续提交flag进行正确校验了,更难受. 下面是本次ctf解题思路流程 后面我解出的题会陆续更新上 ...

  8. 计蒜客 25985.Goldbach-米勒拉宾素数判定(大素数) (2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 B)

    若干年之前的一道题,当时能写出来还是超级开心的,虽然是个板子题.一直忘记写博客,备忘一下. 米勒拉判大素数,关于米勒拉宾是个什么东西,传送门了解一下:biubiubiu~ B. Goldbach 题目 ...

  9. ISCC 2018线上赛 writeup

    今天有机会去ISCC2018参加了比赛,个人的感受是比赛题目整体难度不高,就是脑洞特别大,flag形式不明确,拿到flag后也要猜测flag格式,贼坑 废话不多说,以下是本人的解题思路 MISC 0x ...

随机推荐

  1. GetRelativePath获取相对路径

    public static string GetRelativePath(string baseDirPath, string subFullPath) { // ForceBasePath to a ...

  2. python 遍历list

    #!/usr/bin/env python# -*- coding: utf-8 -*-if __name__ == '__main__':    list = ['html', 'js', 'css ...

  3. Python 生成器和协程

    Python3 迭代器与生成器 迭代器 迭代是Python最强大的功能之一,是访问集合元素的一种方式. 迭代器是一个可以记住遍历的位置的对象. 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访 ...

  4. Eclipse:Win10中设置Courier New字体

    问题:在Eclipse中设置字体的时候,没有找到Courier New字体.系统为Win10. 解决:Eclipse使用的字体为系统字体.在系统字体中有一部分是隐藏的.Courier New已经在系统 ...

  5. fiddler 模拟发送post请求

    打开fiddler,选择在右边的Composer工具栏,打开Parsed选项,然后数据发送协议,例如选择POST, POST右边输入框可以输入访问地址, 下方的输入框可以输入发送的输入操作,例如发送的 ...

  6. Android驱动开发读书笔记五

    第五章 本章介绍了S3C6410开发板的功能,开发板的不同主要是在烧录嵌入式系统的方式不同,以及如何在此开发板上安装Android. 1.安装串口调试工具minicom 首先需要一根USB转串口线,由 ...

  7. 消息队列之JMS和AMQP对比

    https://blog.csdn.net/hpttlook/article/details/23391967 AMQP & JMS对比 初次接触消息队列时,在网上搜索,总是会提到如JMS.A ...

  8. 201621123080《java程序设计》第14周实验总结

    201621123080<java程序设计>第14周实验总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结与数据库相关内容. 2. 使用数据库技术改造你的系统 2. ...

  9. linux 下 docker-compose安装

    docker和dockers-compose的版本兼容对照 以下是我的服务器的相关信息 linux版本 [root@izbp16fm097gaw3tdaog2wz bin]# cat /proc/ve ...

  10. APP客户端图片上传PHP接口

    1.客户端 file_get_contents($_FILES['img']['tmp_name']) //获取临时目录下的上传文件流,加密传给接口   2.接口处理端 $img = file_get ...