这个场要恶心死我了。。

1001

积分题,不要四舍五入

//#pragma comment(linker, "/stack:200000000")
//#pragma GCC optimize("Ofast,no-stack-protector")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
//#pragma GCC optimize("unroll-loops")
#include<bits/stdc++.h>
#define fi first
#define se second
#define db double
#define mp make_pair
#define pb push_back
#define pi acos(-1.0)
#define ll long long
#define vi vector<int>
#define mod 1000000007
#define ld long double
#define C 0.5772156649
#define ls l,m,rt<<1
#define rs m+1,r,rt<<1|1
#define pll pair<ll,ll>
#define pil pair<int,ll>
#define pli pair<ll,int>
#define pii pair<int,int>
//#define cd complex<double>
#define ull unsigned long long
#define base 1000000000000000000
#define Max(a,b) ((a)>(b)?(a):(b))
#define Min(a,b) ((a)<(b)?(a):(b))
#define fio ios::sync_with_stdio(false);cin.tie(0)
template<typename T>
inline T const& MAX(T const &a,T const &b){return a>b?a:b;}
template<typename T>
inline T const& MIN(T const &a,T const &b){return a<b?a:b;}
inline void add(ll &a,ll b){a+=b;if(a>=mod)a-=mod;}
inline void sub(ll &a,ll b){a-=b;if(a<)a+=mod;}
inline ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
inline ll qp(ll a,ll b){ll ans=;while(b){if(b&)ans=ans*a%mod;a=a*a%mod,b>>=;}return ans;}
inline ll qp(ll a,ll b,ll c){ll ans=;while(b){if(b&)ans=ans*a%c;a=a*a%c,b>>=;}return ans;} using namespace std; const double eps=1e-;
const ll INF=0x3f3f3f3f3f3f3f3f;
const int N=+,maxn=+,inf=0x3f3f3f3f; int a,b;
int main()
{
int T;scanf("%d",&T);
while(T--)
{
scanf("%d%d",&a,&b);
double ans=pi*a+2.0*b;
ll ret = ans * ;
printf("%.6f\n", 1.0 * ret / );
}
return ;
}
/******************** ********************/

1012

物理题。。。。

#include<bits/stdc++.h>
using namespace std;
const int N = ;
const int mod = ;
double a, b, x, y;
int main() {
int T; scanf("%d", &T);
while(T--) {
scanf("%lf%lf%lf%lf", &a, &b, &x, &y);
a=fabs(a);
b=fabs(b);
x=fabs(x);
y=fabs(y);
double h = x * (b) / a;
double val = b / sqrt(a * a + b * b);//sin double H=y-h;
double t=sqrt(*9.8*H)/9.8; double hi=;
for(int i = ;i <=; i++) {
hi+=*i*9.8*t*t*val*val;
if(hi>h){
printf("%d\n",i);
break;
}
}
} }

1009

村民永远无法确定,狼只能在只有一条狼边的环里确认,然后找出这些狼反推找其他狼。

#include<bits/stdc++.h>
#define LL long long
#define fi first
#define se second
#define mk make_pair
#define PII pair<int, int>
#define PLI pair<LL, int>
#define PLL pair<LL, LL>
#define y1 skldjfskldjg
#define y2 skldfjsklejg using namespace std; const int N = 1e5 + ;
const int M = 1e5 + ;
const int inf = 0x3f3f3f3f;
const LL INF = 0x3f3f3f3f3f3f3f3f;
const int mod = 1e9 +;
const double PI = acos(-);
const double eps = 1e-; int to[N], n, a[N];
bool vis[N], is[N];
char s[]; vector<int> edge[N];
int deg[N];
int main() {
int T; scanf("%d",&T);
while(T--){
memset(vis, , sizeof(vis));
memset(deg, , sizeof(deg));
memset(is, , sizeof(is));
queue<int> que, Q;
scanf("%d",&n);
for(int i = ; i <= n; i++) edge[i].clear();
for(int i = ; i <= n; i++) {
scanf("%d%s", &to[i], s);
if(s[] == 'w') {
a[i] = ;
} else {
a[i] = ;
edge[to[i]].push_back(i);
}
deg[to[i]]++;
} for(int i = ; i <= n; i++) {
if(!deg[i]) {
is[i] = true;
Q.push(i);
}
} while(!Q.empty()) {
int u = Q.front(); Q.pop();
int v = to[u];
if(is[v]) continue;
deg[v]--;
if(!deg[v]) {
Q.push(v);
is[v] = true;
}
} for(int i = ; i <= n; i++) {
if(is[i]) continue;
int id = -, cnt = , now = i;
while(!is[now]) {
is[now] = true;
if(a[now]) cnt++, id = to[now];
now = to[now];
}
if(cnt == ) {
vis[id] = true;
que.push(id);
}
} while(!que.empty()) {
int u = que.front(); que.pop();
for(int i = ; i < edge[u].size(); i++) {
int v = edge[u][i];
if(vis[v]) continue;
vis[v] = true;
que.push(v);
}
} int ans = ;
for(int i = ; i <= n; i++)
if(vis[i]) ans++;
printf("0 %d\n", ans);
}
return ;
}
/*
*/

补题****************************************************************************************

1002

我们首先要找出这两个性质。。。

gcd(2 ^ a - 1, 2 ^ b - 1) = gcd(2 ^ (gcd(a, b)) - 1)

gcd(fib[ i ], fib[ j ]) = f [gcd(i , j)]

http://bestcoder.hdu.edu.cn/blog/

题解说的很清楚啦

#include<bits/stdc++.h>
#define LL long long
#define fi first
#define se second
#define mk make_pair
#define pii pair<int, int>
#define y1 skldjfskldjg
#define y2 skldfjsklejg using namespace std; const int N = 1e6 + ;
const int M = 1e5 + ;
const int inf = 0x3f3f3f3f;
const LL INF = 0x3f3f3f3f3f3f3f3f;
const int mod = 1e9 +; int inv[N << ], f[N << ], finv[N << ], fib[N], bin[N], stk[N], a[N], n, k, tot; int fastPow(int a, int b) {
int ans = ;
while(b) {
if(b & ) ans = 1ll * ans * a % mod;
a = 1ll * a * a % mod; b >>= ;
}
return ans;
} void add(int &a, int b) {
a += b; if(a >= mod) a -= mod;
}
void sub(int &a, int b) {
a -= b; if(a < ) a += mod;
} void init() {
finv[] = f[] = inv[] = f[] = finv[] = fib[] = ;
for(int i = ; i < N * ; i++) {
inv[i] = 1ll * (mod - (mod / i)) * inv[mod % i] % mod;
}
for(int i = ; i < N * ; i++) {
f[i] = 1ll * f[i - ] * i % mod;
finv[i] = 1ll * finv[i - ] * inv[i] % mod;
}
for(int i = ; i < N; i++) fib[i] = (fib[i - ] + fib[i - ]) % (mod - );
} int comb(int n, int m) {
return 1ll * f[n] * finv[m] % mod * finv[n - m] % mod;
} int main() {
init();
int T; scanf("%d", &T);
while(T--) {
memset(a, , sizeof(a)); tot = ;
scanf("%d%d", &n, &k); int ans = ;
for(int i = n; i >= ; i--) {
if(n % i) continue;
a[i] = comb(n / i + k - , k - );
for(int j = i + i; j <= n; j += i)
sub(a[i], a[j]);
add(ans, 1ll * a[i] * (((fastPow(, fib[i]) - + mod) % mod)) % mod);
}
ans = 1ll * ans * fastPow(comb(n + k - , k - ), mod - ) % mod;
printf("%d\n", ans);
}
return ;
}

1004

区间dp,先把线段的两个端点用极坐标离散化一下,总共只有2*n个发射方向。

dp[ i ][ j ]表示把完全位于i, j之间的线段都射穿需要的代价,对于一个区间来说

然后枚举最大需要的能量发射的方向之后变成两个独立区间然后转移。

#include<bits/stdc++.h>
#define LL long long
#define fi first
#define se second
#define mk make_pair
#define pii pair<int, int>
#define y1 skldjfskldjg
#define y2 skldfjsklejg using namespace std; const int N = + ;
const int M = 1e5 + ;
const int inf = 0x3f3f3f3f;
const LL INF = 0x3f3f3f3f3f3f3f3f;
const int mod = 1e9 +; int n, tot;
LL f[N][N];
struct Point {
LL x, y;
Point(LL x = , LL y = ) : x(x), y(y) { }
} hs[N];
LL cross(const Point &a, const Point &b) {
return a.x * b.y - a.y * b.x;
}
bool operator < (const Point &A, const Point &B) {return cross(A, B) < ;}
bool operator == (const Point &A, const Point &B) {return cross(A, B) == ;}
struct Line {
Point L, R;
int w, l, r;
} a[N];
LL dp(int i, int j) {
if(i >= j) return ;
if(f[i][j] != -) return f[i][j];
int mx = -;
for(int k = ; k <= n; k++)
if(a[k].l >= i && a[k].r <= j && a[k].w > mx)
mx = a[k].w;
if(mx == -) return f[i][j] = ;
f[i][j] = INF;
for(int k = i; k <= j; k++) f[i][j] = min(f[i][j], dp(i, k - ) + dp(k + , j) + mx);
return f[i][j];
} int main() {
int T; scanf("%d", &T);
while(T--) {
memset(f, -, sizeof(f)); tot = ;
scanf("%d", &n);
for(int i = ; i <= n; i++) {
LL h, l, r, w;
scanf("%lld%lld%lld%lld", &h, &l, &r, &w);
a[i].L = Point(l, h); a[i].R = Point(r, h); a[i].w = w;
hs[++tot] = a[i].L; hs[++tot] = a[i].R;
}
sort(hs + , hs + + tot);
tot = unique(hs + , hs + + tot) - hs - ;
for(int i = ; i <= n; i++) {
a[i].l = lower_bound(hs + , hs + + tot, a[i].L) - hs;
a[i].r = lower_bound(hs + , hs + + tot, a[i].R) - hs;
}
printf("%lld\n", dp(, tot));
}
return ;
} /*
*/

hdu多校6的更多相关文章

  1. 2018 HDU多校第四场赛后补题

    2018 HDU多校第四场赛后补题 自己学校出的毒瘤场..吃枣药丸 hdu中的题号是6332 - 6343. K. Expression in Memories 题意: 判断一个简化版的算术表达式是否 ...

  2. 2018 HDU多校第三场赛后补题

    2018 HDU多校第三场赛后补题 从易到难来写吧,其中题意有些直接摘了Claris的,数据范围是就不标了. 如果需要可以去hdu题库里找.题号是6319 - 6331. L. Visual Cube ...

  3. 2015 HDU 多校联赛 5363 Key Set

    2015 HDU 多校联赛 5363 Key Set 题目: http://acm.hdu.edu.cn/showproblem.php? pid=5363 依据前面给出的样例,得出求解公式 fn = ...

  4. 2015 HDU 多校联赛 5317 RGCDQ 筛法求解

    2015 HDU 多校联赛 5317 RGCDQ 筛法求解 题目  http://acm.hdu.edu.cn/showproblem.php? pid=5317 本题的数据量非常大,測试样例多.数据 ...

  5. [HDU多校]Ridiculous Netizens

    [HDU多校]Ridiculous Netizens 点分治 分成两个部分:对某一点P,连通块经过P或不经过P. 经过P采用树形依赖背包 不经过P的部分递归计算 树型依赖背包 v点必须由其父亲u点转移 ...

  6. 【杂题总汇】HDU多校赛第十场 Videos

    [HDU2018多校赛第十场]Videos 最后一场比赛也结束了…… +HDU传送门+ ◇ 题目 <简要翻译> 有n个人以及m部电影,每个人都有一个快乐值.每场电影都有它的开始.结束时间和 ...

  7. hdu多校1002 Balanced Sequence

    Balanced Sequence Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total Submission(s) ...

  8. HDU多校(Distinct Values)

    Problem Description Chiaki has an array of n positive integers. You are told some facts about the ar ...

  9. hdu 多校第一场

    1001 思路:打表可以发现只有3|n 和 4|n 的情况有解,判一下就好啦. #include<bits/stdc++.h> #define LL long long #define f ...

随机推荐

  1. CopyOnWrite容器?

    CopyOnWrite容器即写时复制的容器.通俗的理解是当我们往一个容器添加元素的时候,不直接往当前容器添加,而是先将当前容器进行Copy,复制出一个新的容器,然后新的容器里添加元素,添加完元素之后, ...

  2. centos ldap client 设定

    centos 6.4 ldap server 位于ubuntu 12.04 Server上 1.安装 yum -y install openldap-clients nss-pam-ldapd 一个完 ...

  3. stout代码分析之三:Option类

    为了安全表示NULL, stout实现了Option类.Option对象有两种状态: enum State { SOME, NONE, }; 其中SOME表示非空,NONE表示为空.可通过isSome ...

  4. [洛谷P1404] 平均数

    洛谷题目链接:平均数 题目描述 给一个长度为n的数列,我们需要找出该数列的一个子串,使得子串平均数最大化,并且子串长度>=m. 输入输出格式 输入格式: N+1行, 第一行两个整数n和m 接下来 ...

  5. 【NOIP】2013 花匠

    [算法]贪心 [题解] DP可以f[i][0],f[i][1]表示选了i分别满足条件AB的答案,其优化也是利用了下面的性质,不多赘述. 想象数列的波动,最大值一定是取每个波峰和每个波谷,那么只要O(n ...

  6. 【51NOD】数字1的数量

    [算法]数位DP [题解]数位dp总结 之 从入门到模板 #include<cstdio> #include<algorithm> #include<cstring> ...

  7. PACM Team(牛客第三场多校赛+dp+卡内存+打印路径)

    题目链接(貌似未报名的不能进去):https://www.nowcoder.com/acm/contest/141/A 题目: 题意:背包题意,并打印路径. 思路:正常背包思路,不过五维的dp很容易爆 ...

  8. DirectX介绍(转)

    原文转自 https://baike.baidu.com/item/Direct3D/910353

  9. Python学习笔记 - day14 - Celery异步任务

    Celery概述 关于celery的定义,首先来看官方网站: Celery(芹菜) 是一个简单.灵活且可靠的,处理大量消息的分布式系统,并且提供维护这样一个系统的必需工具. 简单来看,是一个基于pyt ...

  10. TCP之非阻塞connect和accept

    套接字的默认状态是阻塞的,这就意味着当发出一个不能立即完成的套接字调用时,其进程将被投入睡眠,等待响应操作完成,可能阻塞的套接字调用可分为以下四类: (1) 输入操作,包括read,readv,rec ...