A -- 生是脂肪的人

Time Limit:2s Memory Limit:128MByte

Submissions:263Solved:97

DESCRIPTION

给定一个整数n,输出[(10^n)/7]的个位数。
其中 abs(n) ≤ 1e18

INPUT
第一行是一个正整数T (1 ≤ T ≤ 100),表示数据组数。
接下来每一行一个整数n。
OUTPUT
T行,每行一个整数。
SAMPLE INPUT
3
1
2
3
SAMPLE OUTPUT
1
4
2
A和/7的小数一样啊,也是142857循环的,直接做,但是本来说是正数,然后有负数很不厚道啊,数据范围锅了一次
#include<bits/stdc++.h>
using namespace std;
string s="";
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
long long n;
cin>>n;
n--;
if(n<)
printf("0\n");
else
printf("%c\n",s[n%]);
}
B -- 死是脂肪的鬼

Time Limit:2s Memory Limit:128MByte

Submissions:127Solved:86

DESCRIPTION

给定一个99的数独,判断该数独是否合法。
如果合法输出Yes,否则输出No。
数独当且仅当每行每列以及9个33的小方格都是1〜9的9个数才合法。

INPUT
第一行是一个正整数T (1 ≤ T ≤ 100)表示数据组数,每组数据中:一共9行,每行9个正整数。
两组数据之间没有空行。
保证输入的数独中的数都在1~9中。
OUTPUT
一共T行,每行Yes或者No。
SAMPLE INPUT
1
4 8 3 9 2 1 6 5 7
9 6 7 3 4 5 8 2 1
2 5 1 8 7 6 4 9 3
5 4 8 1 3 2 9 7 6
7 2 9 5 6 4 1 3 8
1 3 6 7 9 8 2 4 5
3 7 2 6 8 9 5 1 4
8 1 4 2 5 3 7 6 9
6 9 5 4 1 7 3 8 2
SAMPLE OUTPUT
Yes

B直接暴力判断

#include<bits/stdc++.h>
using namespace std;
int a[][];
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int f=;
for(int i=; i<; i++)
for(int j=; j<; j++)
scanf("%d",&a[i][j]);
for(int i=; i<; i+=)
for(int j=; j<; j+=)
{
int b[]= {};
for(int k=i-; k<=i; k++)
for(int l=j-; l<=j; l++)
if(a[k][l]>&&a[k][l]<)b[a[k][l]]++;
for(int i=; i<; i++)
if(!b[i])f=;
}
printf("%s\n",f?"Yes":"No");
}
}
C -- 你居然不吃巧克力

Time Limit:2s Memory Limit:128MByte

Submissions:131Solved:66

DESCRIPTION

给定一个正整数n,现在有n个石头,每个单独成一堆。
现在可以每次合并两堆石头,产生的能量为两堆石头个数的min。
你现在要将所有的石头合并成一堆,并且获得的能量最大。
输出这个最大值。
1 ≤ n ≤ 1e7。

INPUT
第一行是一个正整数T (1 ≤ T ≤ 10)表示数据组数,接下来T行每行一个正整数。
数据满足一个测试点中,最多只有1个n超过1e6。
OUTPUT
T行,每行一个正整数。
SAMPLE INPUT
3
1
3
5
SAMPLE OUTPUT
0
2
5

C太暴力了我,用的是合并

#include<bits/stdc++.h>
using namespace std;
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
map<int,int>M;
int n,a,b,c,d;
scanf("%d",&n);
M[]=n;
long long ans=;
for(;;)
{
a=M.begin()->first,b=M.begin()->second;
if(b>)
{
ans+=b/*a;
M[a+a]=b/;
if(b&)M[a]=;
else M.erase(M.begin());
}
else if(b==)
{
if(M.size()==)break;
else
{
c=(++M.begin())->first,d=(++M.begin())->second;
ans+=a;
M[a+c]=;
M.erase(M.begin());
M[c]=d-;
}
}
else M.erase(M.begin());
if(!M.size())break;
}
printf("%lld\n",ans);
}
}

蓝金爷的直接分堆

#include<bits/stdc++.h>
using namespace std;
long long ans;
void dfs(int x)
{
if(x==)return;
ans+=x/,dfs(x/);
if(x&)dfs(x/+);
else dfs(x/);
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int n;
cin>>n;
ans=;
dfs(n);
cout<<ans<<"\n";
}
}

TLE的直接优先队列(1e7我电脑要2s,优化下可以1s跑完,但是OJ没那么快啊

#include<bits/stdc++.h>
using namespace std;
priority_queue<int, vector<int>, greater<int> > Q;
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
while(!Q.empty())Q.pop();
int n;
scanf("%d",&n);
for(int i=;i<n;i++)
Q.push();
long long ans=;
while(Q.size()>=)
{
int a=Q.top();Q.pop();
int b=Q.top();Q.pop();
ans+=a;
Q.push(a+b);
}
printf("%lld\n",ans);
}
}
D -- 别不好意思,都是脂肪的人

Time Limit:2s Memory Limit:128MByte

Submissions:25Solved:20

DESCRIPTION

给定两个正整数 nn 和 kk, 请求出

∑x1=0 ∑x2=0...∑xn=0 x1+x2+...+xnkx1+x2+...+xn∑x1=0 ∑x2=0...∑xn=0 x1+x2+...+xnkx1+x2+...+xn

(如果公式看不懂,请看图)

数据保证答案是一个有理数,我们假设它为 pqpq , 你只需输出它对 1e9+71e9+7 的模即可。(即 p∗q−1p∗q−1 对 1e9+71e9+7 的模数)。

INPUT
第一行一个正整数 TT 表示数据组数。
对于每组数据:
一行两个正整数,表示 nn 和 kk 。
OUTPUT
一共 TT 行,每行一个正整数,表示答案。
SAMPLE INPUT
1
7
3
SAMPLE OUTPUT
457031313
HINT
数据范围:
数据满足 1<=T<=1000,1<=n<=1e9,2<=k<=1e91<=T<=1000,1<=n<=1e9,2<=k<=1e9 。
妈耶,看看他们的结论还差点啊
n=1的时候
k=1 
k=2 2
k=3 3/4
k=4 4/9
k=5 5/16
k=6 6/25
k=7 7/36
这个我是直接用数据暴力的啊,很明显的,拿高数硬算也是可以的
规律很明显 k / (k-1)^2
最后是ans=n*k^n/(k-1)^(n+1),这个我没有搞出来
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int MD=1e9+;
LL po(LL a, LL n)
{
LL ans = ;
while(n)
{
if(n&) ans=(ans*a)%MD;
a=(a*a)%MD;
n>>=;
}
return(ans+MD)%MD;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
LL n,k,a,b;
scanf("%lld%lld",&n,&k);
a=po(k,n)*n%MD;
b=po(k-,n+)%MD;
LL bn=po(b,MD-);
printf("%lld\n",(a*bn)%MD);
}
return ;
}
 

“玲珑杯”ACM比赛 Round #23的更多相关文章

  1. “玲珑杯”ACM比赛 Round #12题解&源码

    我能说我比较傻么!就只能做一道签到题,没办法,我就先写下A题的题解&源码吧,日后补上剩余题的题解&源码吧!                                     A ...

  2. “玲珑杯”ACM比赛 Round #19题解&源码【A,规律,B,二分,C,牛顿迭代法,D,平衡树,E,概率dp】

    A -- simple math problem Time Limit:2s Memory Limit:128MByte Submissions:1599Solved:270 SAMPLE INPUT ...

  3. “玲珑杯”ACM比赛 Round #19 B -- Buildings (RMQ + 二分)

    “玲珑杯”ACM比赛 Round #19 Start Time:2017-07-29 14:00:00 End Time:2017-07-29 16:30:00 Refresh Time:2017-0 ...

  4. “玲珑杯”ACM比赛 Round #1

    Start Time:2016-08-20 13:00:00 End Time:2016-08-20 18:00:00 Refresh Time:2017-11-12 19:51:52 Public ...

  5. “玲珑杯”ACM比赛 Round #18

    “玲珑杯”ACM比赛 Round #18 Start Time:2017-07-15 12:00:00 End Time:2017-07-15 15:46:00 A -- 计算几何你瞎暴力 Time ...

  6. “玲珑杯”ACM比赛 Round #1 题解

    A:DESCRIPTION Eric has an array of integers a1,a2,...,ana1,a2,...,an. Every time, he can choose a co ...

  7. 玲珑杯”ACM比赛 Round #4 1054 - String cut 暴力。学到了扫描的另一种思想

    http://www.ifrog.cc/acm/problem/1054 问删除一个字符后的最小循环节是多少. 比赛的时候想不出,不知道怎么暴力. 赛后看了别人代码才晓得.唉,还以为自己字符串还不错, ...

  8. “玲珑杯”ACM比赛 Round #18--最后你还是AK了(搜索+思维)

    题目链接   DESCRIPTION INPUT OUTPUT SAMPLE INPUT 1 4 2 1 2 5 2 3 5 3 4 5 5 5 SAMPLE OUTPUT 35 HINT 对于样例, ...

  9. “玲珑杯”ACM比赛 Round #22 E 贪心,脑洞

    1171 - 这个E大概是垃圾桶捡来的 Time Limit:2s Memory Limit:128MByte Submissions:138Solved:45 DESCRIPTION B君在做 CO ...

随机推荐

  1. WebClient UI和Tomcat的启动器

    WebClient UI 我们在WebClient UI的开发工具里点了Test按钮, 会在浏览器以测试模式打开选中的view.这背后发生了什么事?注意浏览器地址栏的bspwd_cmp_test,这是 ...

  2. Android内核剖析(1)

    Linux的启动过程 开机上电执行bootloader,将内核的前n条指令加载到系统内存中------>系统内核的初始化----------->启动应用程序. bootloader的位置装 ...

  3. cdoj 414 八数码 (双向bfs+康拓展开,A*)

    一道关乎人生完整的问题. DBFS的优越:避免了结点膨胀太多. 假设一个状态结点可以扩展m个子结点,为了简单起见,假设每个结点的扩展都是相互独立的. 分析:起始状态结点数为1,每加深一层,结点数An ...

  4. bzoj3209:3209: 花神的数论题

    觉得还是数位dp的那种解题形式但是没有认真的想,一下子就看题解.其实还是设置状态转移.一定要多思考啊f[i][j]=f[i-1][j]+g[i-1][j] g[i][j]=f[i-1][j-1]+g[ ...

  5. 剑指offer46 求1+2+...+n 以及& &&区别

    参考代码: class Solution { public: int Sum_Solution(int n) { int result = n; result && (result + ...

  6. 【转】在MAC下使用ISO制作Linux的安装USB盘

    http://www.linuxidc.com/Linux/2013-04/82973.htm 在Mac环境下,将Linux的ISO镜像生成一个Linux的安装盘,和Linux下差不多,只是Mac下有 ...

  7. linux基本命令及使用方法

    shell环境: shell:命令解释器,是Linux 系统的用户界面,提供了用户与内核进行交互操作的一种接口,它接收用户输入的命令并把它送入内核去执行. bash:是GNU 计划中重要的工具软件之一 ...

  8. PAT 乙级 1077

    题目 题目地址:PAT 乙级 1077 题解 本题没什么难度,但是要注意细节问题,下面简单来说一下: vector 把输入的学生打分存起来,直接用算法库中的 sort 函数给它们排个序,之后直接剔除首 ...

  9. java的一些相关介绍(2013-10-07-163 写的日志迁移

    java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, Jav ...

  10. PHP网站实现地址URL重定向

    网站建设中,通常会用到网站地址URL的重定向,这样的好处是有利于你网站的SEO优化,也就是让你的网站实现伪静态,下面简单介绍一下实现的两种方法: 1.在Apache配置文件中设置重定向 首先找到Apa ...