Solved:3

rank:405.................................

B. Harvest of Apples

知道了S(n,m) 可以o(1)的求S(n - 1, m),S(n + 1,m),S(n,m - 1),S(n,m + 1)  天秀莫队

#include <stdio.h>
#include <algorithm>
#include <iostream>
using namespace std;
typedef long long ll;
const ll mod = 1e9 + ; int blo = ;
ll ans;
ll f[];
ll inv[];
ll anss[]; ll pow_mod(ll x, ll y)
{
ll res = ;
while(y)
{
if(y & ) res = res * x % mod;
x = x * x % mod;
y >>= ;
}
return res;
} void prework()
{
f[] = ; inv[] = ;
for(int i = ; i <= ; i++) f[i] = f[i - ] * 1LL * i % mod;
for(int i = ; i <= ; i++) inv[i] = pow_mod(f[i], mod - 2LL);
} struct node
{
int n, m, id;
}E[]; bool cmp(node A, node B)
{
int a = (A.n - ) / blo;
int b = (B.n - ) / blo;
if(a == b) return A.m < B.m;
else return a < b;
} int main()
{
ans = ;
prework();
int T;
scanf("%d", &T);
for(int i = ; i <= T; i++)
{
scanf("%d%d", &E[i].n, &E[i].m);
E[i].id = i;
}
sort(E + , E + + T, cmp); ll n = , m = ;
for(int i = ; i <= T; i++)
{
while(n < E[i].n)
{
ans *= 2LL;
ll tmp = f[n] * inv[m] % mod * inv[n - m] % mod;
ans = (ans - tmp + mod) % mod;
n++;
}
while(m > E[i].m)
{
ll tmp = f[n] * inv[m] % mod * inv[n - m] % mod;
ans = (ans - tmp + mod) % mod;
m--;
}
while(n > E[i].n)
{
ll tmp = f[n - ] * inv[m] % mod * inv[n - - m] % mod;
ans += tmp;
ans = ans * inv[] % mod;
n--;
}
while(m < E[i].m)
{
ll tmp = f[n] * inv[m + ] % mod * inv[n - m - ] % mod;
ans = (ans + tmp) % mod;
m++;
}
anss[E[i].id] = ans;
}
for(int i = ; i <= T; i++) printf("%lld\n", anss[i]);
return ;
}

D. Nothing is Impossible

题意出锅 秒变签到题

#include <stdio.h>
#include <algorithm>
#include <iostream>
#include <string.h>
using namespace std;
typedef long long ll; struct node
{
int a, b;
}E[]; bool cmp(node A, node B)
{
return A.b < B.b;
} int main()
{
int T;
scanf("%d", &T);
while(T--)
{
int n, m;
scanf("%d%d", &n, &m);
for(int i = ; i <= n; i++) scanf("%d%d", &E[i].a, &E[i].b);
sort(E + , E + + n, cmp); ll tmp = ;
int ans = n;
for(int i = ; i <= n; i++)
{
if(tmp * (E[i].b + 1LL) <= m)
{
tmp *= (E[i].b + 1LL);
}
else
{
ans = i - ;
break;
}
}
printf("%d\n", ans);
}
return ;
}

J. Let Sudoku Rotate

玄学剪纸 把一个矩阵翻转的话就考虑换一种方法遍历 转四次相当于转一圈 dfs回来的时候要恢复状态

#include <stdio.h>
#include <algorithm>
#include <iostream>
#include <cmath>
#include <string.h>
using namespace std; int ans;
int num[][];
int tmp[][];
int vis[]; int cal(char x)
{
if(x - '' >= && x - '' <= ) return x - '';
else return + x - 'A';
} void rotate(int x, int y)
{
int ix = x * - ;
int iy = y * - ;
for(int i1 = ix, i2 = iy; i2 <= iy + ; i2++, i1++)
for(int j1 = iy, j2 = ix + ; j2 >= ix; j1++, j2--)
tmp[i1][j1] = num[j2][i2];
for(int i = ix; i <= ix + ; i++)
for(int j = iy; j <= iy + ; j++)
num[i][j] = tmp[i][j];
} bool check(int x, int y)
{
int ix = x * - ;
int iy = y * - ; for(int i = ix; i <= ix + ; i++)
{
memset(vis, , sizeof(vis));
for(int j = ; j <= y * ; j++)
{
if(vis[num[i][j]]) return false;
vis[num[i][j]] = ;
}
}
for(int j = iy; j <= iy + ; j++)
{
memset(vis, , sizeof(vis));
for(int i = ; i <= x * ; i++)
{
if(vis[num[i][j]]) return false;
vis[num[i][j]] = ;
}
}
return true;
} void dfs(int x, int y, int st)
{
if(x == )
{
ans = min(ans, st);
return;
} for(int i = ; i <= ; i++)
{
if(i != ) rotate(x, y);
if(check(x, y))
{
if(y != ) dfs(x, y + , st + i);
else dfs(x + , , st + i);
}
}
rotate(x, y);
} int main()
{
int T;
scanf("%d", &T);
while(T--)
{
ans = ;
for(int i = ; i <= ; i++)
{
char s[]; scanf("%s", s + );
for(int j = ; j <= ; j++) num[i][j] = cal(s[j]);
}
dfs(, , );
printf("%d\n", ans);
}
return ;
}

K. Expression in Memories

#include <stdio.h>
#include <algorithm>
#include <iostream>
#include <string.h>
using namespace std; char s[];
int vis[];
int main()
{
int T;
scanf("%d", &T);
while(T--)
{
memset(vis, , sizeof(vis));
scanf("%s", s);
int len = strlen(s);
bool f = true; for(int i = ; i < len; i++)
{
if(s[i] == '+')
{
if(i == || i == len - ) f = false;
if(i + < len && s[i + ] == '+') f = false;
if(i + < len && s[i + ] == '*') f = false;
}
else if(s[i] == '*')
{
if(i == || i == len - ) f = false;
if(i + < len && s[i + ] == '+') f = false;
if(i + < len && s[i + ] == '*') f = false;
}
else if(s[i] - '' > && s[i] - '' <= ) vis[i] = ;
else if(s[i] == '')
{
if(i - >= && vis[i - ] == ) vis[i] = ;
else
{
if(i + < len && s[i + ] - '' >= && s[i + ] - '' <= ) f = false;
else if(i + < len && s[i + ] == '?') s[i + ] = '+';
}
}
else if(s[i] == '?')
{
if(i == || i + == len) s[i] = '', vis[i] = ;
else if(i - >= && vis[i - ] == )
{
if(s[i - ] == '') s[i] = '+';
else s[i] = '', vis[i] = ;
}
else
{
s[i] = '', vis[i] = ;
}
}
}
if(!f) puts("IMPOSSIBLE");
else printf("%s\n", s);
}
return ;
}

L. Graph Theory Homework

#include <stdio.h>
#include <algorithm>
#include <iostream>
#include <cmath>
using namespace std; int q[];
int main()
{
int T;
scanf("%d", &T);
while(T--)
{
int n;
scanf("%d", &n); for(int i = ; i <= n; i++) scanf("%d", &q[i]);
int ans = sqrt(abs(q[n] - q[]));
printf("%d\n", ans);
}
return ;
}

HDU多校Round 4的更多相关文章

  1. HDU多校Round 8

    Solved:2 rank:141 D. Parentheses Matrix n,m有一个小于6的时候是一种构造方法 答案是n + (m - 2) / 2 (n > m) 都大于6的时候 可以 ...

  2. HDU多校Round 7

    Solved:2 rank:293 J. Sequense 不知道自己写的什么东西 以后整数分块直接用 n / (n / i)表示一个块内相同n / i的最大i #include <bits/s ...

  3. HDU多校Round 6

    Solved:2 rank:452 I. Werewolf 没有铁人 找铁狼 如果一个环中只有一条狼人边那个人就是铁狼 说铁狼是好人的人也是铁狼 #include <bits/stdc++.h& ...

  4. HDU多校Round 5

    Solved:3 rank:71 E. Everything Has Changed #include <bits/stdc++.h> using namespace std; const ...

  5. HDU多校Round 3

    Solved:4 rank:268 C. Dynamic Graph Matching  状压DP一下 #include <stdio.h> #include <algorithm& ...

  6. HDU多校Round 1

    Solved:5 rank:172 A.Maximum Multiple #include <stdio.h> #include <algorithm> #include &l ...

  7. hdu 5667 BestCoder Round #80 矩阵快速幂

    Sequence  Accepts: 59  Submissions: 650  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 65536 ...

  8. hdu 5643 BestCoder Round #75

    King's Game  Accepts: 249  Submissions: 671  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 6 ...

  9. hdu 5641 BestCoder Round #75

    King's Phone  Accepts: 310  Submissions: 2980  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: ...

随机推荐

  1. 动态生成页面(一)——ASP.NET中Literal使用

    在页面中加入内容时,假设是静态内容.无需使用容器,能够直接将标记作为HTML直接加入到页面中:可是,假设是动态内容,则必须借助容器将内容加入到页面中.典型的容器有:Label控件.Literal控件. ...

  2. ImportError: No module named &#39;ConfigParser&#39;

    Resolve Method: I found the problem. I had manually installed a newer version of python (version 3.2 ...

  3. 一张图告诉你是须要 SQL 还是 Hadoop

    译序 非常多朋友问时下如火如荼的 Hadoop 是否适合引进我们自己的项目,什么时候用 SQL.什么时候用 Hadoop,它们之间怎样取舍?Aaron Cordova 用一张图来回答你这个问题,对于不 ...

  4. 1.jdk安装和环境配置

    这个简单,但是记不住,非要网上搜一遍不可: 1.打开我的电脑--属性--高级--环境变量 2.新建系统变量JAVA_HOME 和CLASSPATH 变量名:JAVA_HOME 变量值:C:\Progr ...

  5. gcc的搜索路径,头文件和库

    1 抛开默认的搜索路径,自己指定搜索路径 第一,明确自己编写的代码所需要的头文件和库放在了哪里 第二,使用“-I”指定头文件的搜索路径,使用-rpath指定库的搜索路径 2 无论是本地编译还是交叉编译 ...

  6. npm安装以及命令行

    安装visual studio的时候,安装Node.js会同时安装npm 查看版本 PS C:\Users\clu\Desktop> npm --version5.6.0 PS C:\Users ...

  7. 在canvas上面绘制图片--drawImage实例

    在canvas上面绘制图片--drawImage实例 关键点: 1.图片居中 2.其它 <!DOCTYPE html> <html lang="zh-cn"> ...

  8. 洛谷 P2615 神奇的幻方 —— 模拟

    题目:https://www.luogu.org/problemnew/show/P2615 直接按题意模拟即可; 用 Emacs 做的第一道题! 代码如下: #include<iostream ...

  9. gitweb

    1. 简介 Gitweb提供了git版本库的图形化web浏览功能.可以到网站http://git.kernel.org/体验下效果,如下图所示. Gitweb界面 它既可以通过配置架设于web服务器上 ...

  10. js几种escape()解码与unescape()编码

    js几种escape()解码与unescape()编码 www.111cn.net 编辑:kepeer 来源:转载 一篇js几种escape()解码与unescape()编码函数,同时我们也和它和服务 ...