2021寒假训练1

2021-01-19个人赛1记录


前言

无心路历程

一、题目分析

A 按位异或
a、b同位对应 1 0 or 0 1,x无影响;0 0 x=0;1 1 x=1;等同于a b 位异或;
故本题只需a^b;(so!为什么提醒第一组数据x=4!!!)
B 读题读懂
题意 (1,1)走到(n,n),n*n的格子为0或1;选定0或1后只能走选定的数字对应格子,有两次修改机会,如何修改让它一定走不出去?
题解 起点、终点各相邻两个格子,使两个格子相同&起终点的相邻对应不同,eg0011,1100.

C 思维+找规律
题意:对一串字符操作(从第二个到倒数第二个字符操作),使其变成回文字符串。R使字符翻转到后面,L翻转到前面。
例如:abcd;R3(n-1)->abcdc L234(2~n-1=n)->dcbabcdc L2->cdcbabcdc;
规律 R->n-1 L->n L2;
D (耐心+脑子)

signed main()
{
	int t;
	cin >> t;
	while(t--) {
	    int y, x;
	    cin >> y >> x;
	    int c1,c2,c3,c4,c5,c6;
	    cin >> c1 >> c2 >> c3 >> c4 >> c5 >> c6;
	    c1 = min (c1, c2 + c6);
	    c2 = min (c2, c1 + c3);
	    c3 = min (c3, c2 + c4);
	    c4 = min (c4, c3 + c5);
	    c5 = min (c5, c4 + c6);
	    c6 = min (c6, c1 + c5);
	    int sum =0;
	    if (y >= 0 && x >= 0) {
	        sum += min(y, x) * c1 + (y - min(y, x)) * c6 + (x - min(y, x)) * c2;
	    }
	    else if (y >= 0 && x < 0) {
	        sum += y * c6 + x * (-c5);
	    }
	    else if (y <= 0 && x > 0) {
	        sum += y * c3 + x * (-c2);
	    }
	    else {
	        sum += max(y, x) * (-c4) + (max(y, x) - y) * c3 + (max(y, x) - x) * c5;
	    }
	    ll ss;
		ss = abs(sum);
		cout << ss << '\n';
	}
	return 0;
}

signed?待研究
E 单调栈+二分
hdu5033
poj3250 2559 3494
F字典序yes
G 线段覆盖+差分

#include <cstdio>
#include <iostream>
#include <algorithm>
#include<map> 
using namespace std;
typedef long long ll;
map<ll,int> zz;
ll ans[200010];
int main(){
    ll n;
	cin>>n;
	for(int i=1;i<=n;i++){
		ll l,r;
		cin>>l>>r;
		zz[l]++;//l+1,r+1处-1,即差分对应区间+1;
		zz[r+1]--;
	}
	map<ll,int>::iterator it;
	it=zz.begin();
	ll a=it->first;
	ll b=it->second;
	it++;
	for(;it!=zz.end();it++){
		ans[b]+=it->first-a;
		a=it->first;
		b+=it->second;
	}
	for(int i=1;i<=n;i++)
		cout<<ans[i]<<" ";
    return 0;
}
eg			map				b
3   	    zz			 1 a[1]+=1=1;
0 3 		0 1			 2 a[2]+=3-1=2;
1 3	  >>>	1 1    >>>	 3 a[3]+=4-3=1; >>> 6 2 1
3 8			3 1		 	 1 a[1]+=9-4=6;
			4 -2
			9 1

H 前缀yes
I 拓扑排序
究竟错哪了! ! !(再看看 再看看 忍住!)
J最短路径
捂脸 果然拖延症难治
K 差分基础yes
L
M 质因数分解
求每个数质因子,最小质因子排序,最小的两个乘积(不能用set,不能去重)

for (ll j = 2; j <= sqrt(a[i]); j++){
	while (a[i] % j == 0){
		a[i] /= j;
		zz.push_back(j);
	}
}//复习

二、知识积累

1.单调栈

单调栈

2.拓扑排序

小结

读不懂题目 枯辽 严重怀疑自己的英语理解
基础知识 差好多
记得把剩下的题补了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值