闲来无事呆在寝室打打题,没有想到还有中奖这种操作,超开心的
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; int a=n/3+1; double d=-3.0; int x,y,z; for(int i=a;i;i--) if(n-2*i>0) d=max(2*sin(i)+sin(n-2*i),d); printf("%.9f\n",d); return 0;}
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[30]; int n,m; long long gcd(long long a,long long b){ return b==0?a:gcd(b,a%b); } void DFS(int cur,long long lcm,int id){ lcm=a[cur]/gcd(a[cur],lcm)*lcm; if(id&1) ans+=n/lcm*(1<<(id-1)); else ans-=n/lcm*(1<<(id-1)); for(int i=cur+1;i<m;i++) DFS(i,lcm,id+1); } int main(){ int t; cin>>t; while(t--){ cin>>n>>m; ans=0; for(int i=0;i<m;i++) cin>>a[i]; for(int i=0;i<m;i++) DFS(i,a[i],1); cout<<ans<<endl; } return 0;}
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了,根本过不了的