noip刷题记录 20170823
独木桥
怎么说呢
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std; const int N = ;
int n, l, pos[N], maxx = , minn = ; int main(){
scanf("%d%d", &l, &n);
for(int i = ; i <= n; i++) scanf("%d", &pos[i]);
sort(pos + , pos + n + );
for(int i = ; i <= n; i++)
if(pos[i] <= ( + l) / ) maxx = max(maxx, l - pos[i] + ), minn = max(pos[i], minn);
else maxx = max(maxx, pos[i]), minn = max(minn, l - pos[i] + );
printf("%d %d", minn, maxx);
return ;
}
传纸条 & 方格取数
多维dp的应用
code传纸条
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std; const int N = ;
int n, m, a[N][N], dp[N][N][N][N]; inline int myMax(int u, int v, int x, int y){
int ret = u;
ret = max(ret, v);
ret = max(ret, x);
ret = max(ret, y);
return ret;
} int main(){
scanf("%d%d", &m, &n);
for(int i = ; i <= m; i++)
for(int j = ; j <= n; j++)
scanf("%d", &a[i][j]);
dp[][][][] = a[][];
for(int i = ; i <= m; i++)
for(int j = ; j <= n; j++)
for(int k = ; k <= m; k++)
for(int l = ; l <= n; l++){
if(i == && j == ) continue;
dp[i][j][k][l] = myMax(dp[i - ][j][k - ][l], dp[i][j - ][k - ][l],
dp[i - ][j][k][l - ], dp[i][j - ][k][l - ])
+ a[i][j] + a[k][l];
if(i == k && j == l)
dp[i][j][k][l] -= a[i][j];
}
printf("%d", dp[m][n][m][n]);
return ;
}
code方格取数
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std; const int N = ;
int n, a[N][N], dp[N][N][N][N]; inline int myMax(int u, int v, int x, int y){
int ret = u;
ret = max(ret, v);
ret = max(ret, x);
ret = max(ret, y);
return ret;
} int main(){
scanf("%d", &n);
int x, y, w;
while(scanf("%d%d%d", &x, &y, &w), x + y + w)
a[x][y] = w;
// dp[1][1][1][1] = a[1][1];
for(int i = ; i <= n; i++)
for(int j = ; j <= n; j++)
for(int k = ; k <= n; k++)
for(int l = ; l <= n; l++){
// if(i == k && j == l && i != n && j != n) continue;
dp[i][j][k][l] = myMax(dp[i - ][j][k - ][l], dp[i][j - ][k - ][l],
dp[i - ][j][k][l - ], dp[i][j - ][k][l - ])
+ a[i][j] + a[k][l];
if(i == k && j == l )
dp[i][j][k][l] -= a[i][j];
}
printf("%d", dp[n][n][n][n]);
return ;
}
矩阵取数游戏
问题识破 + dp + 高精度
#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
using namespace std; inline int read(){
int i = , f = ; char ch = getchar();
for(; (ch < '' || ch > '') && ch != '-'; ch = getchar());
if(ch == '-') f = -, ch = getchar();
for(; ch >= '' && ch <= ''; ch = getchar())
i = (i << ) + (i << ) + (ch - '');
return i * f;
} const int N = ;
int n, m; struct bign{
int len, s[N];
bign():len(){memset(s, , sizeof s);}
inline void clear(){
while(len > && s[len] == ) len--;
}
inline bign operator * (const bign &u) const{
bign ret;
ret.len = len + u.len + ;
for(int i = ; i <= len; i++)
for(int j = ; j <= u.len; j++)
ret.s[i + j - ] += s[i] * u.s[j];
for(int i = ; i <= ret.len; i++)
if(ret.s[i] >= ){
ret.s[i + ] += ret.s[i] / ;
ret.s[i] %= ;
}
ret.clear();
return ret;
}
inline void print(){
clear();
for(int i = len; i >= ; i--)
putchar(s[i] + '');
}
inline bool operator > (const bign &u) const{
if(len != u.len) return len > u.len;
for(int i = len; i >= ; i--)
if(s[i] != u.s[i]) return s[i] > u.s[i];
return false;
}
inline bign operator + (const bign &u) const{
bign ret;
ret.len = ;
int i, g;
for(i = , g = ; g || i <= max(len, u.len); i++){
ret.s[++ret.len] = g;
if(i <= len) ret.s[ret.len] += s[i];
if(i <= u.len) ret.s[ret.len] += u.s[i];
g = ret.s[ret.len] / ;
ret.s[ret.len] %= ;
}
ret.clear();
return ret;
}
}pow2[N][N], f[N][N], big2, ans, ret, a[N], big0; inline bign newBign(int x){
bign ret;
ret.len = ;
while(x){
ret.s[++ret.len] = x % ;
x /= ;
}
if(ret.len == ) ret.len = ;
return ret;
} inline void initPow(){
for(int i = ; i <= m; i++)
for(int j = ; j <= m; j++)
pow2[i][j] = pow2[i][j - ] + pow2[i][j - ];
} inline bign max(bign a, bign b){
return a > b ? a : b;
} int main(){
n = read(), m = read();
ans = big0 = newBign(); big2 = newBign();
for(int t = ; t <= n; t++){
ret = big0;
for(int i = ; i <= m; i++) pow2[i][] = newBign(read());
initPow();
for(int i = ; i <= m; i++)
for(int j = ; j <= m; j++)
f[i][j] = big0;
for(int i = ; i <= m; i++)
for(int j = ; i + j <= m; j++){
if(i > ) f[i][j] = max(f[i - ][j] + pow2[i][i + j], f[i][j]);
if(j > ) f[i][j] = max(f[i][j - ] + pow2[m - j + ][i + j], f[i][j]);
}
for(int i = ; i <= m; i++)
ret = max(ret, f[i][m - i]);
ans = ans + ret;
}
ans.print();
return ;
}
铺地毯
怎么说呢
#include<iostream>
#include<cstdio>
using namespace std; const int N = 1e4 + ;
int n, x1[N], y1[N], l[N], w[N], x, y, ans = -; int main(){
scanf("%d", &n);
for(int i = ; i <= n; i++)
scanf("%d%d%d%d", &x1[i], &y1[i], &l[i], &w[i]);
scanf("%d%d", &x, &y);
for(int i = n; i >= ; i--){
if(x1[i] <= x && x <= x1[i] + l[i] - && y1[i] <= y && y <= y1[i] + w[i] - ){
ans = i;
break;
}
}
printf("%d", ans);
return ;
}
noip刷题记录 20170823的更多相关文章
- noip刷题记录 20170818
天天爱跑步 lca + 树上差分 #include<iostream> #include<cstdio> #include<cstdlib> #include< ...
- PE刷题记录
PE刷题记录 PE60 / 20%dif 这道题比较坑爹. 所有可以相连的素数可以构成一张图,建出这张图,在其中找它的大小为5的团.注意上界的估算,大概在1W以内.1W内有1229个素数,处理出这些素 ...
- leetcode刷题记录--js
leetcode刷题记录 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但 ...
- Leetcode刷题记录(python3)
Leetcode刷题记录(python3) 顺序刷题 1~5 ---1.两数之和 ---2.两数相加 ---3. 无重复字符的最长子串 ---4.寻找两个有序数组的中位数 ---5.最长回文子串 6- ...
- 刷题记录:[HarekazeCTF2019]encode_and_encode
目录 刷题记录:[HarekazeCTF2019]encode_and_encode 一.知识点 JSON转义字符绕过 php伪协议 刷题记录:[HarekazeCTF2019]encode_and_ ...
- 刷题记录:[De1CTF 2019]Giftbox && Comment
目录 刷题记录:[De1CTF 2019]Giftbox && Comment 一.知识点 1.sql注入 && totp 2.RCE 3.源码泄露 4.敏感文件读取 ...
- 刷题记录:[强网杯 2019]Upload
目录 刷题记录:[强网杯 2019]Upload 一.知识点 1.源码泄露 2.php反序列化 刷题记录:[强网杯 2019]Upload 题目复现链接:https://buuoj.cn/challe ...
- 刷题记录:[XNUCA2019Qualifier]EasyPHP
目录 刷题记录:[XNUCA2019Qualifier]EasyPHP 解法一 1.error_log结合log_errors自定义错误日志 2.include_path设置包含路径 3.php_va ...
- 刷题记录:[DDCTF 2019]homebrew event loop
目录 刷题记录:[DDCTF 2019]homebrew event loop 知识点 1.逻辑漏洞 2.flask session解密 总结 刷题记录:[DDCTF 2019]homebrew ev ...
随机推荐
- JSP中的EL表达式详细介绍
一.JSP EL语言定义 EL 提供了在 JSP 脚本编制元素范围外使用运行时表达式的功能.脚本编制元素是指页面中能够用于在 JSP 文件中嵌入 Java 代码的元素.它们通常用于对象操作以及执行那些 ...
- 怎么做好看的html5游戏界面
怎么做好看的html5游戏界面 一.总结 一句话总结:html5应该是完全可以做特别好看的游戏界面的.最下面那个背景图完全是一张图片动的雪和小动物可以是gif,或者是canvas,右边的那各个选择框就 ...
- socket长连接的维持
长连接的维持,是要客户端程序,定时向服务端程序,发送一个维持连接包的.如果,长时间未发送维持连接包,服务端程序将断开连接. 客户端:通过持有Client对象,可以随时(使用sendObject方法)发 ...
- 【Struts2三】拦截器
拦截器:就是在訪问action之前.对其进行拦截!能够在拦截器中做一些逻辑的处理! 比方权限验证.没有权限就不给予訪问! 拦截器等效于servlet中的过滤器! 使用拦截器步骤: 1.定义自己的拦截器 ...
- OC的DES加密,使与java的Cipher类用DES/CBC/PKCS5Padding方式的加密结果同样
问题说明: 近期用到DES加密,而且要与java的Cipher类加密的结果保持一致.没研究过java的Cliper,但工作中Cipher依据DES/CBC/PKCS5Padding加密方式生成了一个字 ...
- windows apache 跳转 tomcat 代理
需求是这样的 服务器有tomcat和apache两个服务器 t端口号是8080,a端口是80 比如javaweb的域名是 www.XXX.com:8080 phpweb的域名是 a.XXX.com ...
- Snail—UI学习之自己定义标签栏UITabBarController
这里的背景跟上面的差点儿相同 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkF ...
- Visual Studio中你所不知道的智能感知
在Visual Studio中的智能感知,相信大家都用过.summary,param,returns这几个相信很多人都用过的吧.那么field,value等等这些呢. 首先在Visual Studio ...
- bootstrap课程1 bootstrap为什么这么火
bootstrap课程1 bootstrap为什么这么火 一.总结 一句话总结:响应式,样式多,功能多. 1.bootstrap通过什么药实现响应式? 响应式web布局是让用户通过不同尺寸的浏览器都可 ...
- python类继承时构造函数的运行问题
假设子类定义了自己的__init__构造方法函数.当子类的实例对象被创建时,子类仅仅会运行自己的__init__方法函数.假设子类没有定义自己的构造方法函数.会沿着搜索树找到父类的构造方法函数去运行父 ...