首页 > 其他分享 >20220819总结

20220819总结

时间:2022-08-19 20:49:29浏览次数:81  
标签:总结 int sum long zd include 20220819 define

这次考试太烂了,又没考过 Diavolo

T1

简单的入门题,先热身。

#include<iostream>
#define int long long
#define N 5001

using namespace std;

int n, ans;
double a[N];
int t[N];

signed main(){
	cin >> n;
	for (int i = 1; i <= n; i++){
		cin >> a[i] >> t[i];
	}
	for (int i = 1; i <= n; i++){
		while (t[i]){
			int k = (double)a[i] * t[i];
			ans ^= k;
			t[i]--;
		}
	}
	cout << ans;
	return 0;
} 
//kcr AK IOI orz

T2

对我来说是一道最难的题了,居然是个分组背包,虽然我也想到了,可是代码实现有问题。

#include<bits/stdc++.h>
#define int long long
#define N 2005

using namespace std;

inline int read(){register int x = 0, f = 1;register char c = getchar();while (c < '0' || c > '9'){if (c == '-') f = -1;c = getchar();}while (c >= '0' && c <= '9'){x = (x << 1) + (x << 3) + (c ^ 48);c = getchar();}return x * f;}
inline void write(int x){if (x < 0) putchar('-'), x = -x;if (x > 9) write(x / 10);putchar(x % 10 + '0');}

int n, m, k, tot;
int sum[N][N][2], dp[N][N][2], a[N][N];
bool c[N][N];

signed main(){
	n = read(), m = read(), k = read();
	for (int i = 1; i <= n; i++){
		for (int j = 1; j <= m; j++){
			char x;
			a[i][j] = read();
			scanf("%c", &x);
			if (x == 'Y'){
				c[i][j] = 1;
			}else{
				c[i][j] = 0;
			}
		}
		getchar();
	}
	for (int i = 1; i <= m; i++){
		int zd = 0;
		for (int j = n; j > 0; j--){
			if (c[j][i]){
				sum[i][zd][1] += a[j][i];
			}else{
            	zd++;
				sum[i][zd][1] = sum[i][zd-1][1] + a[j][i];
				sum[i][zd][0] = sum[i][zd-1][1] + a[j][i];
			}
		}
	}
	for (int i = 1; i <= m; i++){
		for (int j = 0; j <= k; j++){
			for (int l = 0; l <= min(n, j); l++){
				dp[i][j][1] = max(dp[i][j][1], dp[i - 1][j - l][1] + sum[i][l][1]);
                if (l){
                	dp[i][j][0] = max(dp[i][j][0], dp[i - 1][j - l][1] + sum[i][l][0]);
				}
                if (j > l){
                	dp[i][j][0] = max(dp[i][j][0], dp[i - 1][j - l][0] + sum[i][l][1]);
				}
			}
		}	
	}
	write(dp[m][k][0]);
	return 0;
}

T3

有点简单,书上原题,看我暴打标程

#include<iostream>
#include<stack>
#define int long long
#define N 1005

using namespace std;

int n, m, ans;
bool a[N][N];
int h[N];
int l[N], r[N];

stack<int> stk;

signed main(){
	cin >> n >> m;
	for (int i = 1; i <= n; i++){
		for (int j = 1; j <= m; j++){
			char c;
			cin >> c;
			if (c == '*'){
				a[i][j] = 0;
			}else{
				a[i][j] = 1;
			}
		}
	}
	for (int i = 1; i <= n; i++){
		for (int j = 1; j <= m; j++){
			if (!a[i][j]){
				h[j] = 0;
			}else{
				h[j] = h[j] + 1;
			}
		}
		for (int j = 1; j <= m; j++){
			r[j] = m + 1;
		}
		for (int j = 1; j <= m; j++){
			while (!stk.empty() && h[j] < h[stk.top()]){
				r[stk.top()] = j;
				stk.pop();
			}
			stk.push(j);
		}
		while (!stk.empty()){
			stk.pop();
		}
		for (int j = 1; j <= m; j++){
			l[j] = 0;
		}
		for (int j = m; j >= 1; j--){
			while (!stk.empty() && h[j] <= h[stk.top()]){
				l[stk.top()] = j;
				stk.pop();
			}
			stk.push(j);
		}
		while (!stk.empty()){
			stk.pop();
		}
		for (int j = 1; j <= m; j++){
			ans += (j - l[j]) * (r[j] - j) * h[j];
		} 
	}
	cout << ans;
	return 0;
}
//kcr AK IOI orz

T4

爽死了,做过,直接一波 \(AC\)。

#include<iostream>
#include<climits>
#include<queue>
#define int long long
#define N 10001
#define M 50001
#define INF LLONG_MAX

using namespace std;

int n, m, s, t, c;
int f[N];

struct edge{
	int v, w, nxt;
}e[M << 1];

int head[N], cnt;

void add(int u, int v, int w){
	cnt++;
	e[cnt].v = v;
	e[cnt].w = w;
	e[cnt].nxt = head[u];
	head[u] = cnt;
}

int dis[N];

struct node{
	int s, d;
	bool operator < (const node &x) const{
		return x.d < d;
	}
};

priority_queue<node> q;

bool dij(int x){
	while (!q.empty()){
		q.pop();
	}
	for (int i = 1; i <= n; i++){
		dis[i] = INF;
	}
	dis[s] = 0;
	q.push((node){s, 0});
	if (f[s] > x){
		return 0;
	}
	while (!q.empty()){
		int u = q.top().s, d = q.top().d;
		q.pop();
		if (dis[u] != d){
			continue;
		}
		for (int i = head[u]; i; i = e[i].nxt){
			int v = e[i].v;
			if (f[v] <= x && dis[u] + e[i].w < dis[v]){
				dis[v] = dis[u] + e[i].w;
				q.push((node){v, dis[v]});
			}
		}
	}
	return dis[t] <= c;
}

signed main(){
	cin >> n >> m >> c;
	s = 1, t = n;
	int l = 0, r = 0;
	for (int i = 1; i <= n; i++){
		cin >> f[i];
		r = max(r, f[i]);
	}
	for (int i = 1; i <= m; i++){
		int u, v, w;
		cin >> u >> v >> w;
		add(u, v, w);
		add(v, u, w);
	}
	while (l < r){
		int mid = (l + r) >> 1;
		if (dij(mid)){
			r = mid;
		}else{
			l = mid + 1;
		}
	}
	if (dij(l)){
		cout << l;
	}else{
		cout << "AFK";
	}
	return 0;
} 
//kcr AK IOI orz

总结

我 AK 了

这次考试 \(240\) 分,\(rank \ 8\),别问我为啥没有三百。(我才不会告诉你时限为 \(0.1s\))

惊喜

差点某人要请我吃饭。

标签:总结,int,sum,long,zd,include,20220819,define
From: https://www.cnblogs.com/bryceyyds/p/16603180.html

相关文章

  • 8.19总结
    啊~,本周的第一个暴零所罗门王的宝藏\(solution\)第一眼的时候完全没有想到是图论,当然暴零不是这个原因把行和列进行连边,因为行i的旋转次数+列j的旋转次数一定等于\(c_{......
  • 2022暑假集训总结
    2022暑假集训总结收获做了██道题跟着多校联训学的时候,主要收获是学会了一些基本的暴力算法和一些以前不知道的算法概念后来高烧休息了几天回来以后主要的收获是考试......
  • 浙里办微信小程序总结
    浙里办微信小程序单点登录流程1.获取浙里办跳转地址中ticket或者微信小程序中的ticketIdletticket=getQueryString("ticket",window.location.href);letsp......
  • 访问端口总结
    启动方式访问端口HDFSstart-dfs.shNameNode(9000API操作;50070web访问端口)DataNode(50010dn和nn通信的端口;50075(datanode的web访问端口)snn(500......
  • 操作系统面试总结(持续更新ing)
    操作系统面试总结目录操作系统面试总结1.操作系统引论1.1操作系统的特点1.2操作系统的主要功能1.3各种操作系统的区别1.4操作系统的主要组成部分1.5动态链接库和静态......
  • 【考后总结】8.18 暑假模拟27
    概述又名:暑假集训6得分:\(40+20+20+10=90\)rk11赛时打得比较懵,很多部分分想了很久才打出来。题解T1接力游戏题意给序列\(a,b\),每个序列包含两个属性\(w,v\),从......
  • 2022/8/18 总结
    A.P2587[ZJOI2008]泡泡堂好家伙,久违的贪心所以说挂了;Solution古人的智慧;但实际上这道题和田忌赛马有所区别,已知有一种比较优的方法是用己方最鶸的换掉敌方最强......
  • 8.18总结
    泡泡堂\(solution\)苹果树\(solution\)字符合并\(solution\)脑洞治疗仪\(solution\)万万没想到,我50pts的原因是数组没开够线段树维护修改操作,注意先挖后补ACCo......
  • 字符串类模板及总结(随缘更新)
    昨晚与集训队的诸位聚餐,得悉弘毅的选拔比预想中要近,而且英语入学考也会与是否大一能参加四级考有关。结束后,第一次来到武大ACM训练室,被一桌论文、草稿、书籍、KFC、外卖袋......
  • 前端下载的方式总结(url,文件流,压缩包)
    1.比较常见的是通过a标签的href属性直接访问文件url地址。(1)constdownloadUrl=(url:string,file_name?:string)=>{if(url){url=url.replace(/^http/......